1. 개념 한줄 요약
페이지 교체 알고리즘은 메모리가 가득 찬 상황에서 새로운 데이터를 불러오기 위해 기존 메모리 페이지 중 어떤 것을 제거할지 결정하는 운영체제의 메모리 관리 방식이다.
2. 쉽게 풀어쓴 설명
컴퓨터에서 실행되는 프로그램은 모두 메모리를 사용한다. 하지만 실제 메모리(RAM)의 크기는 한정되어 있기 때문에 모든 데이터를 동시에 메모리에 올려둘 수는 없다.
이를 해결하기 위해 운영체제는 ‘가상 메모리(Virtual Memory)’라는 방식을 사용한다. 가상 메모리는 필요한 데이터만 메모리에 올리고 나머지는 디스크에 보관하는 방식이다.
문제는 메모리가 이미 가득 찬 상태에서 새로운 데이터가 필요할 때 발생한다. 이때 기존 메모리에 있는 데이터 중 하나를 제거하고 새로운 데이터를 불러와야 한다.
어떤 데이터를 제거할지 결정하는 규칙이 바로 ‘페이지 교체 알고리즘(Page Replacement Algorithm)’이다. 이 알고리즘은 시스템 성능과 메모리 효율에 큰 영향을 준다.
3. 구조·원리 설명
✔ 페이지와 가상 메모리 구조
운영체제는 메모리를 일정한 크기의 단위로 나누어 관리한다.
✔ 페이지(Page)
가상 메모리 단위
✔ 프레임(Frame)
물리 메모리 단위
프로그램이 실행될 때 필요한 페이지가 메모리에 없으면 ‘페이지 폴트(Page Fault)’가 발생한다.
✔ 페이지 교체 과정
페이지 교체 과정은 다음 단계로 이루어진다.
① 프로그램이 데이터 요청
② 해당 페이지가 메모리에 없는 경우 페이지 폴트 발생
③ 메모리가 가득 찬 경우 교체 대상 페이지 선택
④ 선택된 페이지를 디스크로 이동
⑤ 새로운 페이지를 메모리에 로드
이 과정을 통해 메모리 공간을 확보한다.
✔ 대표적인 페이지 교체 알고리즘
운영체제는 여러 가지 알고리즘을 사용해 교체 페이지를 선택한다.
① FIFO (First In First Out)
가장 먼저 메모리에 들어온 페이지를 제거한다.
특징
✔ 구현 단순
✔ 오래된 페이지라도 계속 사용 중일 수 있음
② LRU (Least Recently Used)
가장 오랫동안 사용되지 않은 페이지를 제거한다.
특징
✔ 실제 사용 패턴 반영
✔ 구현 비용이 높음
③ Optimal 알고리즘
앞으로 가장 오랫동안 사용되지 않을 페이지를 제거한다.
특징
✔ 이론적으로 가장 효율적
✔ 실제 구현은 불가능
④ Clock 알고리즘
LRU를 단순화한 방식이다.
특징
✔ 참조 비트를 이용해 페이지 사용 여부 확인
✔ 실제 운영체제에서 많이 사용됨
✔ 페이지 폴트 영향
페이지 교체가 너무 자주 발생하면 시스템 성능이 크게 떨어진다.
이를 ‘스래싱(Thrashing)’이라고 부른다.
✔ CPU 사용률 감소
✔ 디스크 접근 증가
✔ 전체 시스템 속도 저하
그래서 운영체제는 페이지 교체를 최소화하도록 설계된다.
4. 예시로 이해하는 메모리 관리
✔ 웹 브라우저 실행
여러 탭을 동시에 열면 일부 탭 데이터는 메모리에 있고, 사용하지 않는 탭 데이터는 디스크에 저장된다.
✔ 대용량 프로그램 실행
영상 편집 프로그램이나 게임은 필요한 데이터만 메모리에 올리고 나머지는 디스크에서 불러온다.
✔ 프로그램 전환
여러 프로그램을 번갈아 사용할 때 메모리 페이지 교체가 발생한다.
5. 주의점과 오해하기 쉬운 부분
❗ 메모리가 많을수록 교체 빈도 감소
RAM 용량이 크면 페이지 교체가 덜 발생한다.
❗ 알고리즘마다 성능 차이
사용 패턴에 따라 어떤 알고리즘이 더 효율적인지 달라질 수 있다.
❗ 디스크 속도 영향
페이지 교체는 디스크 접근을 포함하기 때문에 SSD 환경에서 더 빠르게 처리된다.
❗ 과도한 멀티태스킹 문제
너무 많은 프로그램을 실행하면 페이지 교체가 급격히 증가할 수 있다.
6. 요약 정리
✔ 페이지 교체 알고리즘은 메모리 관리 방식이다.
✔ 가상 메모리 환경에서 사용된다.
✔ 메모리 부족 시 교체 페이지를 결정한다.
✔ FIFO, LRU, Clock 같은 알고리즘이 존재한다.
✔ 페이지 폴트가 많으면 성능이 저하된다.
✔ 운영체제 성능에 중요한 요소다.
페이지 교체 알고리즘 개념과 동작 방식을 이해하면, 운영체제가 제한된 메모리를 어떻게 효율적으로 관리하는지 알 수 있다. 이는 가상 메모리 구조와 시스템 성능을 이해하는 데 중요한 운영체제 핵심 개념이다.