728x90
물리적 메모리의 용량보다 더 큰 메모리 공간을 제공하는 메모리 관리 기법
가상 메모리의 주요 목적
- 메모리 확장: 실제 메모리보다 큰 메모리 공간을 제공하여, 큰 프로그램이 실행 가능하게 합니다.
- 프로세스 간 메모리 보호: 각 프로세스가 자신만의 독립된 메모리 공간을 가짐으로써 다른 프로세스에 영향을 주지 않도록 보호합니다.
- 다중 프로세스 지원: 여러 프로세스가 동시에 실행될 수 있도록 하여 CPU와 메모리 자원의 효율성을 높입니다.
가상 메모리의 구현 방식
가상 메모리는 페이징(Paging) 또는 세그멘테이션(Segmentation) 기법으로 구현됩니다.
- 페이징(Paging)
- 개념: 가상 메모리를 일정 크기의 페이지 단위로 나누어 관리합니다. 프로세스는 고정된 크기의 페이지로 나뉘고, 물리 메모리는 같은 크기의 페이지 프레임으로 나뉘어 페이지 단위로 매핑됩니다.
- 장점: 외부 단편화(External Fragmentation)가 발생하지 않으며, 메모리 관리가 간단합니다.
- 단점: 각 페이지마다 페이지 테이블을 유지해야 하므로, 메모리 오버헤드가 발생할 수 있습니다.
- 세그멘테이션(Segmentation)
- 개념: 프로세스를 코드, 데이터, 스택 등 논리적인 세그먼트 단위로 나누어 관리합니다. 각 세그먼트는 가변적인 크기를 가지며, 프로그램의 논리적 구조와 일치합니다.
- 장점: 프로세스의 논리적 단위를 반영하여 메모리 관리를 효율적으로 할 수 있습니다.
- 단점: 가변 크기 세그먼트로 인해 외부 단편화가 발생할 수 있습니다.
페이지 부재(Page Fault)와 스왑(Swap)
가상 메모리에서 **페이지 부재(Page Fault)**는 프로세스가 필요로 하는 페이지가 현재 물리 메모리에 없는 상황입니다. 페이지 부재가 발생하면 운영체제는 다음과 같은 절차로 페이지를 물리 메모리에 로드합니다.
- 페이지 부재 발생: 프로세스가 필요한 페이지가 메모리에 없는 상황을 탐지합니다.
- 스왑 영역 접근: 디스크에 위치한 해당 페이지를 스왑 영역에서 찾아 물리 메모리로 로드합니다.
- 페이지 교체: 물리 메모리가 가득 찬 경우, 페이지 교체 알고리즘을 통해 기존 페이지 중 하나를 교체합니다.
- 페이지 테이블 갱신: 새로 로드한 페이지에 대한 정보로 페이지 테이블을 갱신합니다.
페이지 교체 알고리즘
가상 메모리는 페이지 부재 시 효율적으로 페이지를 교체하기 위해 페이지 교체 알고리즘을 사용합니다. 주요 알고리즘에는 FIFO(First-In, First-Out), LRU(Least Recently Used), OPT(Optimal Page Replacement) 등이 있으며, 메모리 접근 패턴에 따라 적합한 방식을 선택합니다.
가상 메모리의 장단점
- 장점:
- 메모리 공간 확장: 물리 메모리보다 큰 프로그램을 실행할 수 있습니다.
- 효율적인 메모리 사용: 프로세스에 필요한 부분만 메모리에 로드하여 메모리 사용 효율을 높입니다.
- 프로세스 격리: 각 프로세스가 독립된 메모리 공간을 가짐으로써 메모리 보호를 강화합니다.
- 단점:
- 속도 저하: 디스크와 메모리 간 스왑이 빈번하게 발생하면 시스템 성능이 저하됩니다. 이를 스래싱(Thrashing) 현상이라고 하며, 디스크 입출력 오버헤드가 발생합니다.
- 메모리 오버헤드: 페이지 테이블과 같은 데이터 구조를 유지하기 위한 메모리 오버헤드가 필요합니다.
결론
가상 메모리는 컴퓨터 시스템의 메모리 자원을 확장하고 효율적으로 관리하기 위한 필수적인 기술입니다. 이를 통해 물리적 메모리의 제한을 극복하며, 동시에 여러 프로그램을 실행할 수 있어 멀티태스킹이 가능해집니다. 가상 메모리는 현대 운영체제의 기본 메모리 관리 기법으로 사용되며, 시스템의 성능과 자원 활용도를 최적화하는 중요한 역할을 합니다.
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 메모리 관리 전략(Memory Management Unit) (0) | 2024.10.31 |
---|---|
[운영체제] IPC(Inter Process Communication) (0) | 2024.10.31 |
[운영체제] 메모리 단편화(Memory Fragmentation) (0) | 2024.10.31 |
[운영체제] 페이지 교체 알고리즘 (0) | 2024.10.31 |
[운영체제] CPU 스케줄링 (0) | 2024.10.31 |