가상 메모리
- 물리적인 메모리의 크기 한계를 극복하기위한 기술입니다.
- 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할수 있습니다.(수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법)
가상메모리가 구동하는 아이디어
- cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다.
- 가상메모리는 실제 메모리를 참조한다.
1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다.
MMU(Memory Management Unit):
CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치.
페이징 시스템(Paging System)
페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다.
Page : 고정된 크기의 block
Paging : 가상메모리와 물리메모리를 연결하는 과정입니다.
Paging Table : 연결하는 과정에서 매핑을 위한 테이블입니다.
- 다중 페이징 기법
- 만약 4GB의 프로세스를 모두 페이지로 만든다면 매핑될 양이 엄청 많아져서 효율적이지가 않는다.
- 그래서 페이징 정보를 단계별로 나누어서 생성을 하면 필요없는 페이지는 안만들수 있다.(공간절약)
- 페이징 시스템과 공유 메모리
- 두개 혹은 N개의 프로세스가 동일한 물리메모리를 참조하여 공간절약과 메모리 할당 시간을 절약할수 있다.MMU성능 향상을 위해서 캐싱 기능이 있는 하드웨어 칩을 TLB라고 한다.Demand Pagingdemand paing 은 프로세스가 실제로 필요할때 page를 올린다.
- Paging Sytem은 프로세스가 실행을 시작하자마자 page를 다올린다.
-
- MMU와 TLB
- 즉 Demand paging은 프로세스의 모든 데이터를 메모리로 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재한다. (이때 valid/Invalid bit가 사용된다.)요구 되는 페이지만을 올리니깐 필요할때 페이지를 찾는데 없을수가 있습니다.
- 운영체제가 페이지 테이블을 이용하여 페이징하는 순서
- Page Fault
- CPU는 물리 메모리을 확인하여 페이지가 없으면 trap을 발생하여 운영체제에 알린다.
- 운영체제는 CPU의 동작을 잠시 멈춘다.
- 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인하고, 없으면 프로세스를 중단한다.
- 4. 페이지 폴트이면, 현재 물리 메모리에 비어있는 프레임(Free Frame)이 있는지 찾는다.
- 비어있는 프레임에 해당 페이지를 로드하고, 페이지 테이블을 최신화 한다.
- 중단되었던 CPU를 다시 시작한다.
- 4번에서 비어있는 프레임을 찾는다고 되어있지만 없으면 어떻게 할까??
- 희생 프레임을 골라서 이를 가상 메모리에 저장 후 필요한 페이지를 물리 메모리에 로드페이지 교체 알고리즘
- 한다(이 과정에서 페이지 교체 알고리즘이 사용된다.)
- 1. FIFO(First In First Out):* 가장 먼저 물리 메모리에 적재된 페이지를 선택하는 방식.
- 2. LRU(Least Recent Used):* 가장 오랫동안 사용되지 않았던 page를 선택하는 방식.
- 3. LRU Approximation:* LRU와 같지만, 페이지에 Second-Chance를 준다.[OS/운영체제] 페이지 교체 (Page Replacement) - (2)
- 페이지 교체 알고리즘 추가적인 설명
'CS자료 > 운영체제' 카테고리의 다른 글
[OS] 동기와 비동기의 차이 (0) | 2022.03.03 |
---|---|
[OS] 단편화 (0) | 2022.03.03 |
[OS] Thread-safe (0) | 2022.03.03 |
[OS] Swapping (0) | 2022.03.03 |
[OS] Deadlock(교착상태) (0) | 2022.03.03 |