✔️ 가상 메모리
가상 메모리란?
- 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법
- 다중 프로그램을 실현하기 위해서는 많은 프로세스들을 동시에 메모리에 올려두어야 하므로
메모리 용량이 큰 프로그램은 실행시킬 수 없게 됨
그러므로 프로그램의 일부분만 메모리에 올려 물리 메모리 크기에 제약받지 않도록 하며
더 많은 프로그램을 동시에 실행하고자 함 - 가상 메모리는 실제의 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리하여
작은 메모리를 가지고 큰 가상 주소 공간을 프로그래머에게 제공할 수 있음 - 이때 시스템 라이브러리가 여러 프로세스들 사이에 공유될 수 있어
각 프로세스들은 각자 자신의 주소 공간처럼 인식하지만 실제 물리 메모리는 공유되고 있음
그러므로 라이브러리에 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되게 되며 통신할 수도 있음
요구 페이징이란?
- 프로그램 실행 시작 시에 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략
- 가상 메모리 시스템에서 많이 사용되며, 가상 메모리는 대개 페이지로 관리됨
- 요구 페이징을 사용하는 가상 메모리는 실행과정에서 필요해질 때 페이지들이 적재되게 됨
- 프로세스 내의 개별 페이지들은 페이저에 의해 관리되며
프로세스 실행에 실제 필요한 페이지들만 메모리로 읽어옮으로써, 사용되지 않을 페이지를 가져오는 시간/메모리 낭비를 줄임 - 이때 유효, 무효 비트를 두어 각 페이지가 메모리에 존재하는지 표시하며
CPU가 참조하려는 페이지가 현재 메모리에 올라와 있지 않아 무효로 세팅되어 있는 경우를 페이지 부재가 일어났다고 함
페이지 교체 알고리즘
- 프로그램 실행 시에 모든 항목이 물리 메모리에 올라오지 않기 때문에,
프로세스 동작에 필요한 페이지를 요청하는 과정에서 페이지 부재가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져옴 - 하지만, 만약 물리 메모리가 모두 사용중인 상황이라면, 페이지 교체가 이루어져야 함
- 페이지를 가져오기 위해서는 안 쓰는 페이지는 out하고 해당 공간에 필요한 페이지를 in 시켜야 함
- 또는, 운영체제가 프로세스를 강제로 종료하는 방법도 존재
- 또한 다중 프로그래밍의 경우, 메인 메모리에 다양한 프로세스가 올라올 수 있는데
이때 페이지 교체 알고리즘을 활용해 교체할 페이지(victim page)를 선정할 때의 선정 기준이
Global, Local에 따라서도 나뉠 수 있음
- FIFO 페이지 교체 알고리즘
- First-In First-Out의 흐름을 가지므로 먼저 물리 메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 됨
- 이해하기도 쉽고, 프로그램하기도 쉽지만
오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있으며
처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높이는 부작용을 초래할 수 있음 (Belady의 모순)
- OPT 페이지 교체 알고리즘
- 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체하는 것
- 주로 비교 연구 목적을 위해 사용하며 구현의 어려움이 존재함
- LRU 페이지 교체 알고리즘
- Least Recently Used의 흐름을 가지므로 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체하게 됨
- 대체적으로 FIFO 알고리즘보다 우수하고, 최적 페이지 교체보다는 그렇지 않음
- LFU 페이지 교체 알고리즘
- Least Frequently Used의 흐름을 가지므로 참조 횟수가 가장 적은 페이지를 교체하게 됨
- 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가,
다른 기능을 사용하게 되면 더 이상 사용하지 않아 초기 가정에 어긋날 수 있음 - 최적 페이지 교체를 제대로 근사하지 못하기 때문에 잘 쓰이지 않음
- MFU 페이지 교체 알고리즘
- Most Frequently Used의 흐름을 가지므로
참조 회수가 가장 작은 페이지는 최근에 메모리에 올라왔으므로 앞으로 계속 사용될 것이라는 전제를 가지게 됨 - 최적 페이지 교체를 제대로 근사하지 못하기 때문에 잘 쓰이지 않음
- Most Frequently Used의 흐름을 가지므로
- 클럭 알고리즘
- 하드웨어적인 지원을 받아 LRU와 LFU 알고리즘에서 발생한 시간적인 오브헤드를 줄인 방식
- LRU를 근사시킨 알고리즘이므로 오랫동안 사용하지 않은 페이지 중 하나를 교체하게 됨
- 참조 비트와 변형 비트를 사용함
'Tech Interview > Operating System' 카테고리의 다른 글
[Operating System] 파일 시스템 (0) | 2023.12.26 |
---|---|
[Operating System] 캐시 (0) | 2023.12.25 |
[Operating System] 메모리 관리 (0) | 2023.12.18 |
[Operating System] 동기와 비동기 (0) | 2023.12.16 |
[Operating System] 프로세스 동기화 (0) | 2023.12.15 |