설명 순서는 다음과 같습니다.

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

+ Recent posts