가상 메모리와 가상 주소 공간

MySprtlty·2021년 8월 26일
4

OS

목록 보기
1/5

내용이 특정 Implementation에 종속된 개념일 수 있으니 참고 정도만 하길 권장

🏷️가상 메모리와 가상 주소 공간

  • 엄밀히 따지면, 가상 메모리(Virtual Memory)가상(논리) 주소 공간(Virtual Address Space)는 다른 개념이다.
  • 그런데 그냥 혼용해서 사용하긴 한다.
  • 가상 주소 공간각 프로세스 당 주어지는 논리적인 공간이다.
  • 가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.
  • Word Size가 32bit인 컴퓨터의 경우, 일반적으로 레지스터의 크기도 32비트다.
  • 이는 2322^{32} 개의 주소를 나타낼 수 있음을 의미하고, 1Byte당 주소가 매핑되므로 최대 4GB의 가상 주소 공간을 갖을 수 있다.
  • 같은 원리로 64bit의 컴퓨터의 경우 2642^{64} 바이트(16 엑사 바이트)크기의 가상 주소 공간을 갖을 수 있게 된다.
  • 프로세스의 주소 공간은 page 단위로 관리된다.
  • 가상 주소 공간의 주소를 논리 주소라고 하는데, 모든 논리 주소가 반드시 물리적인 메모리의 물리 주소로 할당 받는 것은 아니다.
  • 가상 주소 공간의 페이지가 물리 주소 공간에 할당되지 않은 케이스는 다음과 같다.

📌 case 1) 필요한 순간에 물리 주소를 할당 받는 경우

  • 이 것이 가능한 이유는 대부분의 프로그램들은 Process Life Cycle(프로세스가 생성되고 종료될 때 까지의 과정) 중에 동시에 전체의 Data나 Instruction이 필요한 것이 아니기 때문이다.
  • 따라서 필요한 순간에 물리 주소를 할당 받는 것이 가능하다.

📌 case 2) 의도적으로 접근 금지 페이지로 남겨둔 경우

  • 커널이 의도적으로 NULL Pointer에 대한 접근을 검출하기 위해서 접근 금지 페이지로 남겨 둔 경우다.

📌 case 3) 사용되지 않은(Unused) 논리 주소인 경우

  • 말 그대로 사용하지 않고 남은 가상 주소 공간을 의미한다.
  • 가상 논리 주소가 반드시 물리 주소로 할당 받는 것이 아니기에, 가상 주소 공간은 실제로 컴퓨터가 장착하고 있는 물리 메모리보다 큰 크기를 가질 수 있다.
  • 그리고 부분적으로 프로세스의 페이지를 로드하는 개념은 가상 메모리(Virtual Memory) 기법으로 연결된다.
  • 가상 메모리 기법이란 프로세스의 일부만 메모리에 적재되더라도 수행을 허용하는 것을 말한다.
  • 가상 메모리는 물리 메모리(Ram)과 하드 디스크의 Swap영역(Swap Area)을 합친 것을 의미한다.
  • 현재 필요하지 않은 프로세스의 페이지는 하드 디스크의 Swap영역에 머물러 있다가 해당 페이지가 필요할 때 Swap in 된다.
  • 이 기법 덕분에 물리 메모리보다 큰 프로세스를 실행하는 것이 가능하다.
  • 또한 프로세스들이 적은 물리 메모리를 차지하기 때문에 더 많은 프로세스를 동시에 메모리에 로드하는 것이 가능하다.

profile
2Co 4:7

2개의 댓글

comment-user-thumbnail
2023년 8월 7일

좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!

1개의 답글