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