1. 물리 메모리, 가상 메모리
ㅇ 물리 메모리 : 메모리가 취급되는 주소 (실제의 주기억장치)
- 주기억장치 내 개별 기억 셀들을 식별하기 위한 `물리 주소`가 있게 됨
ㅇ 가상 메모리 : CPU가 생성하는 주소
- 컴퓨터가 비록 상대적으로 작은 물리 메모리를 가지고 있어도,
. 프로세스로 하여금 큰 물리 메모리를 사용하는 듯한 환상을 갖게 함
- 운영체제 커널이 관리하는 주요 역할 중 하나
- 실제 물리 주소가 아닌, 각 프로세스가 접근 가능한,
. 가상 주소 공간 내 `가상 주소 (논리 주소)`가 있게 됨
2. 가상 메모리 방식의 장점
ㅇ 메모리 및 CPU 가동율이 향상됨
- 각 프로세스가 적은 물리 메모리를 사용함으로써,
- 동시에 많은 프로세스가 물리 메모리에 존재 가능
ㅇ 파일,라이브러리 공유를 손쉽게 해 줌
ㅇ 공유 메모리 구현을 가능케 함
- 논리 메모리와 물리 메모리를 서로 분리해 주는 것 외에,
- 2 이상의 프로세스들에 의해, 페이지 공유를 가능케 함
3. 가상 메모리의 개요, 역할, 구성 (가상 기억 장치)
ㅇ 가상 기억 장치의 개요
- 프로세스 메모리 전체가, 물리 메모리에 적재되지 않더라도, 실행 가능케 함
- 이를위해, 메모리의 실제 위치와는 구별되는, 가상적인 주소 공간의 개념을 필요로 함
ㅇ 가상 기억장치의 역할
- (동시성) 다수 프로세스들이 동시 실행 가능토록, 각각에 주소 공간 제공
- (보호) 각 프로세스별 고유 메모리 자원을 보호해 줌
- (공유) 필요시, 프로세스 간에 주소공간을 공유할 수 있게 함
- (투명성) 주소공간을 프로그램에게 투명하게 제공 관리해 줌
ㅇ 가상 기억 장치의 구성 요소
- 주기억장치
- 메모리관리장치(MMU)
. 대부분의 가상 메모리 시스템은, 가상주소로부터 물리주소에 접근하기 위해,
. 프로세서에서 제공하는 MMU와 상호 협력 함
.. (매핑) 물리 메모리 페이지 프레임 ↔ 논리 메모리 페이지 프레임
.. CPU -(논리주소)-> MMU -(물리주소)-> 물리 메모리
- 보조기억장치
4. 가상 메모리 관리 방식의 구분
ㅇ 페이징 (Paging) 방식
- 프로그램 실행 중 필요할 때 만 고정 크기의 페이지를 적재하는 기법
. 페이지라는 `고정 크기` 단위로 나누어 구분 관리
- 메모리를 일련의 동일 크기의 페이지 프레임(Page Frame)들로 구분시켜,
. 이들 각각을 각 프로그램이 사용하는 메모리와 대응시킴
- 운영체제와 컴퓨터 하드웨어 간의 협력을 통해 구현됨
. 운영체제 커널은,
. 각 프로세스에 대한 페이지 테이블(페이지 위치)을 유지관리 함
. 사용되지 않는 페이지의 복사본은 스왑 영역에 보관되고,
. 필요할 때 만 물리 메모리에 로드 됨
- 만일, 현재 물리적 메모리에 없는 페이지를 참조하면
. 페이지 폴트(Page Fault)가 발생되고,
. 해당 페이지를 찾아서 메모리에 적재하는 동안 프로세스 실행이 잠시 중지됨
- 장점 : 공통의 페이지를 여러 프로세스들이 공유할 수 있는 등
- 단점 : 내부 파편화 현상
ㅇ 세그먼테이션 (Segmentation) 방식
- 프로그램 실행 중 필요할 때 만 가변 크기의 세그먼트를 적재하는 기법
. 세그먼트라는 `가변 크기` 단위로 구분 관리
- 프로그래머가 생각하는 단편화된 메모리를,
. 즉, 프로그래머가 생각하는 논리 구조 공간(프로그램,데이터 등 다양한 형태) 처럼,
. 각각을 가변 세그먼트별로 대응시킴
- 가변 크기의 세그먼트별로 다뤄짐
. 접근 주소 : (세그먼트 이름/주소/번호 : 오프셋)
. 세그먼트 정보 : (코드,전역변수,힙,스택 등) ☞ 런타임 메모리 참조
- 단점 : 외부 파편화 현상으로, 메모리 낭비가 심한편
ㅇ 페이지화된 세그먼테이션 방식
- 위 두 방식의 장점을 절충
※ 한편, 이러한 메모리 관리 방식은 모두, 논리 주소와 실제 물리 주소 간의 매핑 테이블 필요
5. [참고사항]
ㅇ 인위적 연속성
- 가상 주소 공간에서는 연속적이지만, 실 주소 공간에서도 연속적일 필요 없음을 말함
ㅇ 요구 페이지 호출, 요구 페이징 (Demand Paging)
- 가상 메모리 상에 페이지가 실제 참조되어야 그 페이지를 메모리에 적재하는 방법
ㅇ 동적 적재 (Dynamic Loading)
- 프로그램 내 루틴이 필요한 경우에 만 적재됨
. 각 루틴은 실제 호출되기 전까지는 메모리에 적재되지 않고,
. 재배치 가능한 상태로 기억장치에서 대기하다가 필요시 적재됨
- 동적 적재 방식은 운영체제로부터 특별한 지원이 필요없음
※ ☞ 스왑 영역 참조
- 가상 메모리 관리를 위해 사용되는 디스크 영역