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