gimmickbutreal

[CS] 가상 메모리 본문

CS

[CS] 가상 메모리

isshosng 2024. 12. 17. 21:01

사용자가 프로그램을 실행하면 운영체제는 디스크에 저장된 데이터를 메모리로 로드한다. 하지만 메모리 공간은 한정되어 있고, 사용자는 동시에 많은 프로그램을 실행하고 싶어합니다. 이런 메모리 공간의 한계를 극복하기 위해 가상 메모리가 등장했습니다.

 

가상 메모리(virtual memory)는 프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식입니다. 

 

 

By Ehamberg - 자작, CC BY-SA 3.0

 

 

위 그림과 같이 물리 메모리에 프로세스 일부를 로드하고, 프로세스의 나머지 영역은 디스크에 두면 더 많은 프로세스를 메모리에 로드할 수 있습니다.

 

그렇기 때문에 다음과 같은 장점이 있습니다

 

가상 메모리의 장점

 

  1.  프로그램이 메모리 크기에 대한 제약을 덜 받을 수 있다.
    -> 가상 메모리는 프로그램 전체를 물리 메모리에 올릴 필요가 없으므로, 실제 RAM 크기보다 큰 프로그램도 실행할 수 있습니다. 예를 들어, 물리 메모리가 4GB 뿐이어도 8GB 크기의 프로그램을 실행할 수 있는 환경을 제공합니다. 이로 인해, 개발자는 메모리 크기 제한을 신경 쓰지 않고 더 큰 프로그램을 설계할 수 있으며, 사용자도 더 복잡한 애플리케이션을 실행할 수 있습니다.

  2. 동시에 많은 프로그램을 실행하므로 CPU 이용률과 처리율을 높일 수 있다.
    -> 가상 메모리는 여러 프로그램의 일부만 물리 메모리에 로드하고, 나머지는 디스크에 유지하기 때문에 더 많은 프로세스를 메모리에 올릴 수 있습니다. 결과적으로, 멀티태스킹 환경에서 더 많은 프로그램들이 동시에 실행될 수 있으며, 프로세스들이 CPU를 사용할 기회를 더 자주 얻습니다. 이로 인해, CPU가 작업할 데이터와 코드를 더 많이 확보하므로, 유휴 상태를 주링고 시스템 전반의 처리율이 증가합니다.

  3. 필요한 영역만 메모리에 로드해 스와핑 횟수를 줄여서 프로그램 실행 속도를 높일 수 있다.
    -> 가상 메모리는 프로그램의 실행 중에 필요한 페이지만 물리 메모리로 로드합니다. 이는 디스크 I/O를 최소화하고, 불필요하게 전체 프로그램을 물리 메모리에 로드하지 않으므로 메모리 사용 효율성을 극대화합니다. 또한, 디스크와 물리 메모리 간의 스와핑 횟수를 줄이기 때문에 실행 속도가 빨라집니다. 이로 인해, 자주 사용되는 물리 메모리에 유지하고, 필요 없는 데이터를 디스크로 이동시킴으로써 프로그램이 더 원활히 실행됩니다.

 

가상 메모리의 단점

위와 같은 장점에도 불구하고, 가상 메모리는 몇 가지 단점도 있습니다.

  1. 디스크 의존성 증가
    -> 페이지를 디스크에서 읽어오는 작업이 잦아지면, 시스템 성능이 디스크 속도에 의해 제한될 수 있습니다.

  2. 페이지 폴트(Page Fault)
    -> 필요한 페이지가 물리 메모리에 없을 경우, 디스크에서 데이터를 읽어와야 하는데, 이 과정이 과도하면 스래싱(Thrashing) 현상이 발생할 수 있습니다.

  3. 추가적인 메모리 관리 비용
    -> 운영 체제가 페이지 테이블과 같은 데이터 구조를 유지하며 추가적인 오버헤드가 발생합니다.

'CS' 카테고리의 다른 글

브라우저의 기본 구조  (0) 2024.11.03
[Java] JVM이란 무엇일까?  (0) 2023.11.16
[Network] OSI 7 Layer (OSI 7계층) - 요약  (0) 2023.09.21
스택과 큐 Stack & Queue  (0) 2023.07.12
연결리스트 LinkedList  (0) 2023.07.12