🏷️가상 메모리와 가상 주소 공간
- 가상 메모리(Virtual Memory)와 가상(논리) 주소 공간(Virtual Address Space)는 다른 개념이다.
- 그런데 그냥 혼용해서 사용되긴 한다.
- 가상 주소 공간은 각 프로세스 당 주어지는 논리적인 공간이다.
- 가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.
- Word Size가 32비트인 컴퓨터의 경우, 일반적으로 레지스터의 크기도 32비트다.
- 이는 2^32 개의 주소를 나타낼 수 있음을 의미하고, 1Byte당 주소가 주어지므로 최대 4GB의 가상 주소 공간을 갖을 수 있다.
- 같은 원리로 64비트의 컴퓨터의 경우 2^64 바이트(16 엑사 바이트)크기의 가상 주소 공간을 갖을 수 있게 된다.
- 프로세스의 주소 공간은 페이지(page) 단위로 관리된다.
- 가상 주소 공간의 주소를 논리 주소라고 하는데, 모든 논리 주소가 반드시 물리적인 메모리의 물리 주소로 할당 받는 것은 아니다.
- 가상 주소 공간의 페이지가 물리 주소 공간에 할당되지 않은 케이스는 다음과 같다.
📌1) 필요한 순간에 물리 주소를 할당 받는 경우
- 1번 케이스가 가능한 이유는 대부분의 프로그램들은 Process Life Cycle(프로세스가 생성되고 종료될 때 까지의 과정) 중에 동시에 전체의 Data나 Instruction이 필요한 것이 아니기 때문이다.
- 따라서 필요한 순간에 물리 주소를 할당 받는 것이 가능하다.
- 🖇️cf. Demand Paging
📌2) 의도적으로 접근 금지 페이지로 남겨둔 경우
- 2번은 커널이 의도적으로 NULL Pointer에 대한 접근을 검출하기 위해서 접근 금지 페이지로 남겨 둔 것이다.
📌3) 사용되지 않은(unused) 논리 주소인 경우
- 3번은 말 그대로 쓰지 않고 남은 가상 주소 공간을 의미한다.
- 가상 논리 주소가 반드시 물리 주소로 할당 받는 것이 아니기에 가상 주소 공간은 실제로 컴퓨터가 장착하고 있는 물리 메모리보다 큰 크기를 가질 수 있다.
- 그리고 부분적으로 프로세스의 페이지를 로드하는 개념은 가상 메모리(Virtual Memory) 기법으로 연결된다.
- 가상 메모리 기법이란 프로세스의 일부만 메모리에 적재되더라도 수행을 허용하는 것을 말한다.
- 가상 메모리는 물리 메모리(Ram)과 하드 디스크의 Swap영역(Swap Area)을 합친 것을 의미한다.
- 현재 필요하지 않은 프로세스의 페이지는 하드 디스크의 Swap영역에 머물러 있다가 해당 페이지가 필요할 때 Swap in 된다.
- 이 기법 때문에 물리 메모리보다 큰 프로세스를 실행하는 것이 가능하다.
- 또한 프로세스들이 적은 물리 메모리를 차지하기 때문에 더 많은 프로세스를 메모리에 로드하는 것이 가능하다.
좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!