설명 순서는 다음과 같습니다.
1. 가상 메모리
2. 페이지 교체 알고리즘
1. 가상 메모리
- 메인 메모리의 크기는 한정되어 있어서, 메모리 크기보다 더 큰 프로세스는 현실적으로 실행시킬 수 없음. 또한, 실행하는 여러개의 프로세스의 크기가 메모리보다 크다면 많은 프로세스를 함께 실행시킬 수 없음
- 이러한 문제를 해결하기 위해 물리적으로 메모리의 크기를 키우지 않고, 메모리를 사용하는 사용자에게 마치 매우 큰 메모리처럼 보이게하는 것이 '가상 메모리' 기법임
- 해결방법의 핵심은 프로세스 전체를 메모리에 로드하지 않고, 당장 실행에 필요한 프로세스의 페이지만을 메모리에 올리는 것임
- 여기서 프로세스의 페이지는 프로세스를 책으로 생각했을 때, 그 안에 있는 페이지라고 생각할 수 있음. 그래서 책에서 내가 지금 읽을 페이지만 따로 떼서 읽는 것
2. 페이지 교체 알고리즘
- 메인 메모리에 필요한 페이지가 없을 때(page fault발생 시), 디스크에서 페이지를 찾아 메모리의 빈 프레임에 로드해야 함
- 이 때 만약 메모리에 빈 프레임이 없을 경우, 한 프레임을 디스크로 내리고 비워야 함. 이 때 교체될 프레임을 고르는 알고리즘이 페이지 교체 알고리즘임
- 페이지 교체 알고리즘의 목적은 'page fault 발생 비율을 줄이는 것'임
- 주요 알고리즘
① FIFO(First In First Out)
* 가장 먼저 메모리에 올라온 페이지를 내보내는 방법
* 성능이 좋지 않음. 프로세스에 프레임을 많이 할당해도 page fault가 역설적으로 늘어나는 현상 발생할 수 있음
② OPT(Optimal)
* 이상적인 방법. 앞으로 가장 오랫동안 사용하지 않을 페이지를 내보내는 방법
* 성능이 가장 좋음
* 하지만, 프로세스가 사용할 페이지를 미리 모두 알아야함. 사실상 구현 불가능
③ LRU(Least Recently Used)
* 가장 오랫동안 사용하지 않은 페이지를 내보내는 방법
* 성능이 좋은 편
④ LFU(Least Frequently Used)
* 가장 적게 참조된 페이지를 내보내는 방법
* 시간 지역성을 이용하지 못하므로 성능이 좋지 않다고 생각함. (1번 페이지를 방금 1번 사용했는데, 1번은 또 사용될 가능성이 높기 때문)
⑤ MFU(Most Frequently Used)
* 가장 많이 참조된 페이지를 내보내는 방법
페이지 교체 알고리즘에 대해 알아볼 수 있었습니다.
'운영체제' 카테고리의 다른 글
Java에서 동기화 문제 해결 (0) | 2023.08.12 |
---|---|
동기화 (0) | 2023.08.11 |
Deadlock (0) | 2023.08.08 |
Context Switching (0) | 2023.08.06 |
프로세스와 스레드 (0) | 2023.08.05 |