Why 가상메모리?
- 가상메모리를 쓰는 이유는 보통 다음과 같은 예시로 들 수 있다.
책을 프로세스의 메모리라 하고, 책상 위에 둘 수 있는 최대 한계치를 실제 메모리라고 가정해보자.
공부할게 너무 많아져서 책이 책상에 둘 수 없는 상태가 오게 될 수 있다. 하지만, 책장이라는 가상 메모리를 사용하면 필요할 때 적재적소에 책상위에 책을 둘 수 있다!!!
* 하지만, " 책을 딱 맞게 사면 되지 않냐? " 라는 질문이 있을 수 있다.
우리가, 알고리즘을 공부할 때, 책 한권으로 끝낸 적이 있는가?
보통 공부할 때, 온라인 검색을 통해서 책을 찾아보고, 소스코드만 구현된 책도 따로 찾아보고, 적용된 사례에 대한 책도 찾아본다.
* 그래서 공부할 때 항상 모든 책을 같이 보는가 ? -> 절대 아니다
실습이 필요할 때는 실습책을 보고, 이론이 필요할 때는 이론 책을 펼쳐본다.
이처럼, 상황에 맞는 책을 보기 때문에, 우리는 다양한 책 = 메모리를 사두고 꺼내서 써야된다!
- 가상메모리는, OS가 각각의 프로세스 대해 메모리를 관리하는 작업을 보다 편하고, 오류를 방지하기 위해 사용하는 기술이다.
- 제공되는 기능
1. 주기억장치의 효율적 관리 : Cache를 이용하여 자주 사용하는 데이터만 RAM 영역을 유지하고, 나머지는 하드디스크에 보관한다.
2. 메모리 관리의 단순화 : 프로세스마다 통일된 주소 공간을 배정
3. 메모리 용량 및 안정성 보장 : 램에 대하여 무한한 가상메모리 공간을 배정하여 프로세스들끼리 메모리 침범이 덜 일어나게 한다.
Mapping
- 책장 속에서 수많은 책을 꺼내기 위해 간편하게 하는 기술이 바로 Mapping 작업이고, 이는 가상메모리에서 중요한 작업이다!!!
- 실제 주소와 가상의 주소를 연결하는데 보다 더 효율적인 방법을 택하기 위해 기법들이 여러개 있다.
- 가상 메모리와 물리 메모리 사이에 Mapping 기법 중에서는 Paging과 Segmentation 기법이 존재한다.
- 지금은 Paging 기법이 주로 쓰이므로 탐구하고자 한다.
Demand Paging
- 프로그램 실행 시작시 필요한 것들만 적재하는 전략을 요구페이징 이라 한다.
- 한번도 접근되지 않은 페이지는 물리 메모리에 적재 되지 않게 하려고 하는 기법
- 사용되지 않을 페이지를 가져오는 것에 대한 시간낭비와 메모리 낭비를 줄이기 위해서 사용한다,
페이지 교체 알고리즘
- 페이지를 조회할 때, Fault 발생률을 줄이는 것이 성능향상의 지름길이다.
- 결국에는 Page Fault 를 줄이는 것이 핵심이다!!
- FIFO(First in First Out) 페이지 교체 : 가장 먼저 물리메모리에 들어온 페이지가 먼저 나간다.
* 문제점 ? : Belady의 모순 = 페이지를 저장할 수 있는 페이지 프레임을 늘려도 페이지 Fault가 더 많이 발생하는 모순
- 최적 페이지 교체 : 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체
* 문제점 ? 알고리즘 구현이 어렵다! ( 사용량 예상해서 교체해야 되기 때문에 )
- LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다.
- LFU(Least Frequently Used) : 참조 횟수가 가장 적은 페이지를 교체하는 방법
참고
나무위키 - 가상메모리
운영체제 가상메모리란?
'Developer > OS' 카테고리의 다른 글
[OS] - CPU 스케줄링 (0) | 2019.04.17 |
---|---|
7. Virtual Memory - 가상메모리 (1) | 2018.12.20 |
6. Memory Fragmentation - 메모리 단편화 (0) | 2018.12.18 |
5. Monitor & Deadlock - 모니터, 데드락 (0) | 2018.12.17 |
4. Critical Area - 임계구역이란? (0) | 2018.12.13 |