가상 메모리
물리적인 메모리의 크기 한계를 극복하기위한 기술입니다.
가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할수 있습니다.(수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법)
가상메모리가 구동하는 아이디어
- cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다.
- 가상메모리는 실제 메모리를 참조한다.
1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다.
MMU(Memory Management Unit):
CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치.
페이징 시스템(Paging System)
페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다.
Page : 고정된 크기의 block
Paging : 가상메모리와 물리메모리를 연결하는 과정입니다.
Paging Table : 연결하는 과정에서 매핑을 위한 테이블입니다.
다중 페이징 기법
- 만약 4GB의 프로세스를 모두 페이지로 만든다면 매핑될 양이 엄청 많아져서 효율적이지가 않는다.
- 그래서 페이징 정보를 단계별로 나누어서 생성을 하면 필요없는 페이지는 안만들수 있다.(공간절약)
페이징 시스템과 공유 메모리
두개 혹은 N개의 프로세스가 동일한 물리메모리를 참조하여 공간절약과 메모리 할당 시간을 절약할수 있다.
MMU와 TLB
MMU성능 향상을 위해서 캐싱 기능이 있는 하드웨어 칩을 TLB라고 한다.
Demand Paging
Paging Sytem은 프로세스가 실행을 시작하자마자 page를 다올린다.
demand paing 은 프로세스가 실제로 필요할때 page를 올린다.
즉 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를 준다.
'기술면접 > 운영체제' 카테고리의 다른 글
[운영체제] 동기와 비동기, 블로킹과 논블로킹 (0) | 2022.03.02 |
---|---|
[운영체제] 외부단편화, 내부단편화 (0) | 2022.03.02 |
[운영체제] Context switching (0) | 2022.03.02 |
[운영체제] CPU 스케줄링 (0) | 2022.03.02 |
[운영체제] 데드락 교착상태 개념과 조건 (0) | 2022.03.02 |
댓글