728x90
가상 메모리 정의
- 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법
- 메모리가 실제메모리보다 많아보이게 하는 기술
가상 메모리 배경
실행되는 코드의 전부를 물리 메모리에 존재시켜야 해서 메모리용량 보다 큰 프로그램을 실행시킬 수 없었음, 그리고 여러 프로그램을 동시에 메모리에 올리기에는 용량 문제, 페이지 교체등 성능 이슈가 발생하게 되며 사용하는 코드가 차지하는 메모리들을 확인 할 수 있다는 점에서 불필요하게 전체 프로그램이 메모리에 올라와 있어야 된다는게 아니라는 것을 알 수 있음
가상 메모리의 역할
- 가상 주소 공간 제공
- 프로세스간의 페이지 공유
가상 주소 공간 제공
- 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간으로 프로세스가 요구하는 메모리 공간을 가상메모리에서 제공함으로 써 직접적으로 필요하지 않은 메모리 공간을 실제 물리 메모리에 올리지 않아 물리 메모리를 절약할 수 있음
- 예를 들어, 한 프로그램이 실행되며 논리 메모리로 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 |