가상 메모리와 가상 주소 공간
- 서로 다른 개념이지만 혼용되서 사용된다.
- 가상 주소 공간은 각 프로세스 당 주어지는 논리적인 공간이다.
- 가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.
- Word Size가 32비트인 컴퓨터의 경우, 일반적으로 레지스터의 크기도 32비트다, 이는 2^32 개의 주소를 나타낼 수 있음을 의미하고, 1 바이트당 주소가 주어지므로 최대 4GB의 가상 주소 공간을 갖을 수 있다. 같은 원리로 64비트 컴퓨터의 경우 2^64 바이트(16 엑사 바이트) 크기의 가상 주소 공간을 갖을 수 있게 된다.
- 프로세스의 주소 공간은 페이지(Page) 단위로 관리된다.
- 가상 주소 공간의 주소를 논리 주소라고 하는데, 모든 논리 주소가 반드시 물리적인 메모리의 물리 주소로 할당 받는 것은 아니다.
가상 주소 공간의 페이지가 물리 주소 공간에 할당되지 않은 케이스는 다음과 같다
1) 필요한 순간에 물리 주소를 할당 받는 경우
1번 케이스가 가능한 이유는 대부분의 프로그램들은 Process Life Cycle(프로세스가 생성되고 종료될 때 까지의 과정) 중에 동시에 전체의 Data나 Instruction이 필요한 것이 아니기 때문에 필요한 순간에 물리 주소를 할당 받는 것이 가능하다.
2) 의도적으로 접근 금지 페이지로 남겨둔 경우
커널이 의도적으로 NULL pointer에 대한 접근을 검출하기 위해서 접근 금지 페이지로 남겨 둔 것이다.
3) 사용되지 않은 (unused) 논리 주소인 경우
말 그대로 쓰지 않고 남은 가상 주소 공간을 의미한다. 가상 논리 주소가 반드시 물리 주소로 할당 받는 것이 아니기에 가상 주소 공간은 실제로 컴퓨터가 장착하고 있는 물리 메모리보다 큰 크기를 가질 수 있다.
부분적으로 프로세스의 페이지를 로드하는 개념은 가상 메모리 (Virtual Memory) 기법으로 연결된다. 가상 메모리 기법이란 프로세스의 일부만 메모리에 적재되더라도 수행을 허용하는 것을 말한다. 가상 메모리는 물리 메모리 (Ram)과 하드 디스크의 Swap영역 (Swap Area)을 합친 것을 의미한다.
현재 필요하지 않은 프로세스의 페이지는 하드 디스크의 Swap 영역에 머물러 있다가 해당 페이지가 필요할 때 Swap in 된다, 이 기법 때문에 물리 메모리보다 큰 프로세스를 실행하는 것이 가능하고 프로세스들이 적은 물리 메모리를 차지하기 때문에 더 많은 프로세스를 메모리에 로드하는 것이 가능하다.
'CS > OS & 하드웨어' 카테고리의 다른 글
중앙처리장치(CPU) - 1 (CPU 구조) (0) | 2024.04.18 |
---|---|
레지스터 (Register) (0) | 2024.04.16 |
프로그램 (Program) 이란? (0) | 2024.01.03 |
세션의 생성과 관리 (0) | 2023.12.12 |
세그멘테이션 (Segmentation) 오류 (0) | 2023.10.23 |