컴퓨터 & 코딩/CS

[혼공학습단 10기][혼공컴운] 가상 메모리 - 페이지 교체와 프레임 할당

구로그 2023. 7. 21. 14:59
728x90

✓ 요구 페이징 demand paging

프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

 

 

✏️ 순서
1. CPU가 특정 페이지에 접근하는 명령어 실행
2. 유효 비트가 0일 경우(해당 페이지가 현재 메모리에 없음) 페이지 폴트가 발생
(유효 비트가 1일 경우(해당 페이지가 현재 메모리에 있음) 페이지가 적재된 프레임에 접근)
3. 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정

 

💡 순수 요구 페이징 pure demand paging
아무런 페이지도 적재하지 않은 채 무작정 실행하여 첫 명령어 실행 순간에 페이지 폴트가 계속 발생하게 되고 어느정도 적재된 이후에는 페이지 폴트 발생 빈도가 떨어지는 것

 


 

 

✓ 페이지 교체 알고리즘 Page Replacement Algorithm 

당장 실행에 필요한 페이지를 적재하기 위해 메모리에 적재된 페이지를 보조 기억장치로 내보내야 할 때 어떤 페이지를 내보낼 지 결정하는 알고리즘. 

 

💡 페이지 참조열 page reference string: CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지열 

 

1) FIFO 페이지 교체 알고리즘 FIFO page replacement algorithm 

- 가장 먼저 올라온 페이지(가장 오래된 페이지)부터 내쫓는 방식. 

❗️ 프로그램 실행 내내 사용될 내용을 포함되는 페이지는 메모리에 먼저 적재되었다고 해서 내쫓아서는 안 된다. 

→ 2차 기회 페이지 교체 알고리즘: 만약 참조 비트가 1일 경우 당장 내쫓지 않고 참조 비트를 0으로 만든 뒤 현재 시간을 적재 시간으로 설정한다. 

 

2) 최적 페이지 교체 알고리즘 optimal page replacement algorithm 

- CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘

- 오랫동안 사용되지 '않을' 페이지를 교체 

- 가장 낮은 페이지 폴트율을 보장하는 알고리즘 

 

3) LRU 페이지 교체 알고리즘 Least Recently Used page replacement algorithm 

- 오랫동안 사용되지 '않은' 페이지를 교체 

 

 


 

✓ 스래싱과 프레임 할당

✏️ 스래싱 thrashing: 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제

(멀티 프로그래밍의 정도 degree of multiprogramming: 메모리에서 동시 실행되는 프로세스의 수)

 

동시에 실행되는 프로세스의 수가 필요 이상으로 늘어나면 각 프로세스들이 사용할 수 있는 프레임 수가 적어져 페이지 폴트가 지나치게 빈번히 발생한다. → CPU 성능이 아무리 뛰어나도 물리 메모리가 너무 작다면 전체 컴퓨터의 성능이 안 좋아지는 이유 

 

원인은 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문이다. 

운영체제는 각 프로세스들이 무리 없이 실행하기 위한 최소한의 프레임수를 파악하고 적절한 수만큼 프레임을 할당해야 한다.

 

 

✏️ 프레임 할당 방식

- 정적 할당 방식: 프로세스의 크기와 메모리 크기만 고려한 할당 방식

1) 균등 할당 equal allocation: 모든 프로세스에 균등하게 프레임을 제공

2) 비례 할당 proportional allocation: 프로세스의 크기에 따라 프레임을 배분

 

 

- 동적 할당 방식: 프로세스의 실행을 보고 할당할 프레임 수 결정

1) 작업 집합 모델 working set model 기반 프레임 할당: 프로세스가 일정 기간 동안 참조한 페이지 집합(working set)을 기억하여 빈번한 페이지 교체를 방지 

2) 페이지 폴트 빈도 PFF (Page Fault Frequency) 기반 프레임 할당: 페이지 폴트율에 상한선과 하한선을 정하고 그 내부 범위 안에서만 프레임을 할당하는 방식 

반응형