OS

[OS] 가상메모리

집한구석 2021. 12. 26. 23:03
728x90

가상 메모리 정의

  • 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법
  • 메모리가 실제메모리보다 많아보이게 하는 기술

가상 메모리 배경

실행되는 코드의 전부를 물리 메모리에 존재시켜야 해서 메모리용량 보다 큰 프로그램을 실행시킬 수 없었음, 그리고 여러 프로그램을 동시에 메모리에 올리기에는 용량 문제, 페이지 교체등 성능 이슈가 발생하게 되며 사용하는 코드가 차지하는 메모리들을 확인 할 수 있다는 점에서 불필요하게 전체 프로그램이 메모리에 올라와 있어야 된다는게 아니라는 것을 알 수 있음


가상 메모리의 역할

  1. 가상 주소 공간 제공
  2. 프로세스간의 페이지 공유

가상 주소 공간 제공

  • 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간으로 프로세스가 요구하는 메모리 공간을 가상메모리에서 제공함으로 써 직접적으로 필요하지 않은 메모리 공간을 실제 물리 메모리에 올리지 않아 물리 메모리를 절약할 수 있음
  • 예를 들어, 한 프로그램이 실행되며 논리 메모리로 100KB가 요구 되었다는 전제하 실행까지 필요한 메모리공간 (Heap / Stack / Code / Data)의 합이 40KB 라면, 실제 물리 메모리에는 40KB만 올라가 있고, 나머지 60KB는 필요시 물리메모리에서 요구함
Stack  free (60KB) Heap Data Code

프로세스간의 페이지 공유

  • 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 함
  • 프로세스들이 메모리를 공유하는 것을 가능하게 함, 프로세스들은 공유 메모리를 통해 통신할 수 있음
  • fork를 통한 프로세스 생성 과정에서 페이지들이 공유되는 것을 가능하게 함

요구 페이징 (Demand Paging)

  • 프로그램 실행 시작시 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략
  • 가상 메모리는 페이지로 관리 되기 때문에 가상 메모리에서 많이 사용됨
  • 요구 페이징을 사용하는 가상 메모리에서는 실행 과정에서 필요해질 때 페이지들이 적재가 됨, 적재된 개별 페이지 들은 페이저에 의해 관리 (페이저 : 사용되지 않을 페이지를 가져오는 시간낭비와 메모리 낭비를 줄여줌)

'OS' 카테고리의 다른 글

[OS] 페이지 교체  (0) 2021.12.26
[OS] 캐시지역성  (0) 2021.12.26
[OS] CPU 스케쥴링  (0) 2021.11.13
[OS] 스케쥴러  (0) 2021.11.10
[OS] 메모리 관리 전략  (0) 2021.11.08