- 물리 메모리보다 큰 프로세스를 실행할 수 있지만 그럼에도 물리 메모리의 크기는 한정되어 있다
- 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고 프로세스들에게 적절한 수의 프레임을 할당
- 요구 페이징
- 요구되는 페이지만 적재하는 기법
- 요구 페이징 시스템이 안정적으로 작동하려면
- 페이지 교체
- 요구 페이징 기법으로 페이지를 적재하다보면 메모리가 가득 차게 된다
- 이 때 당장 실행에 필요한 페이지를 적재하려면 적재되어 있던 페이지를 보조기억장치로 보내야함
- 이를 결정하는 방법 - 페이지 교체 알고리즘
- 페이지 폴트가 적은 알고리즘
- 페이지 폴트가 발생하면 보조기억장치에 접근해야 해서 성능 저하
- 페이지 참조열
- CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지 열
- FIFO 페이지 교체 알고리즘
- 가장 단순한 방식
- 가장 먼저 올라온 페이지부터 내쫓는 방식
- 프로그램 실행 내내 사용될 페이지도 내쫓을 수 있다
- 2차 기회 페이지 교체 알고리즘 - FIFO페이지 교체 알고리즘의 보완책
- 참조 비트 1 - CPU가 한 번 참조한 적 있는 페이지 - 한 번 더 기회 주기
- 참조 비트 0 - CPU가 참조한 적 없는 페이지 - 내쫓기
- 최적 페이지 교체 알고리즘
- CPU에 의해 참조되는 횟수를 고려
- 메모리에 오래 남아야 할 페이지는 자주 사용될 페이지
- 메모리에 없어도 될 페이지는 오랫동안 사용되지 않을 페이지
- 가장 낮은 페이지 폴트율을 보장하는 페이지 교체 알고리즘
- 하지만 실제 구현이 어렵다. ( 앞으로 오랫동안 사용되지 않을 페이지를 어떻게 예측?)
- LRU(Least-Recently-Used) 페이지 교체 알고리즘
- 최적 페이지 교체 알고리즘 : 가장 오래 사용되지 않을 페이지 교체
- LRU 페이지 교체 알고리즘 : 가장 오래 사용되지 않은 페이지 교체
- 스레싱과 프레임 할당
- 페이지 폴트가 자주 발생하는 이유
- 나쁜 페이지 교체 알고리즘을 사용해서
- 프로세스가 사용할 수 있는 프레임 자체가 적어서
- 페이지 폴트가 자주 발생하는 이유
- 스레싱
- 프로세스가 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능(CPU 이용률)이 저해되는 문제
- 동시 실행되는 프로세스의 수를 늘린다고 CPU 이용률이 높아지는 것이 아니다
- 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문
- 각 프로세스가 필요로 하는 최소한의 프레임 수를 파악하고 프로세스들에게 적절한 프레임을 할당해주어야 한다
- 균등 할당 (정적 할당 방식)
- 가장 단순한 할당 방식
- 모든 프로세스들에게 균등하게 프레임을 할당하는 방식
- 비례 할당 (정적 할당 방식)
- 프로세스의 크기를 고려하자
- 프로세스의 크기에 비례하여 프레임 할당
- 작업 집합 모델 (동적 할당 방식)
- CPU가 특정 시간 동안 주로 참조한 페이지 개수 만큼만 프레임을 할당
- 프로세스가 실행하는 과정에서 배분할 프레임 결정
- 작업 집합 - 실행중인 프로세스가 일정 시간동안 참조한 페이지의 집합
- 작업 집합을 구하려면
- 프로세스가 참조한 페이지
- 시간 간격이 필요
- 페이지 폴트 빈도 (동적 할당 방식)
- 프로세스가 실행하는 과정에서 배분할 프레임 결정
- 두 개의 가정에서 생겨난 아이이디어
- 페이지 폴트율이 너무 높으면 그 프로세스는 너무 적은 프레임을 갖고 있다
- 페이지 폴트율이 너무 낮으면 그 프로세스가 너무 많은 프레임을 갖고 있다
- 페이지 폴트율에 상한선과 하한선을 정하고, 그 내부 범위 안에서만 프레임을 할당하는 방식
-
- 페이지 교체
- 요구되는 페이지만 적재하는 기법
'CS지식 쌓기' 카테고리의 다른 글
파일과 디렉터리 (1) | 2024.01.04 |
---|---|
페이징의 이점과 계층적 페이징 (1) | 2024.01.04 |
페이징을 통한 가상 메모리 관리 (0) | 2024.01.02 |
연속 메모리 할당 (0) | 2024.01.02 |
교착 상태 해결 방법 (0) | 2024.01.02 |