OS – 가상 메모리 관리

요구 페이징
사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것

페이지 테이블 엔트리의 구성

유효비트가 0일 때: 페이지가 메모리에 있으므로 주소 필드에 물리 메모리의 프레임 번호가 저장
유효비트가 1일 때: 페이지가 스왑 영역에 있으므로 주소 필드에 스왑 영역 내 페이지의 주소가 저장

페이지 부재
프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황
-> 페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리 메모리로 옮겨야 함

빨간색 부분: 유효비트0 -> 물리 메모리에 있음 (3번 영역에 A가 있음)
파란색 부분: 유효비트1 -> 스왑 영역에 있음 (1번 영역에 E가 있음)

페이지 부재 처리 과정

1. 프로세스가 페이지 3을 요청하면 페이지 테이블의 유효비트가 1이기 때문에 페이지 부재가 발생
2. 메모리 관리자는 스왑 영역의 0번에 있는 페이지를 메모리의 비어 있는 프레임인 5로 가져옴 (스왑인)
3. 프레임5로 접근하여 해당 데이터를 프로세스에 넘김
4. 페이지 테이블 업데이트

페이지 교체
빈 프레임이 없을 때는 메모리에 있는 프레임 중 하나를 스왑 영역으로 내보낸 후에야 해당 페이지를 가져올 수 있음 -> 페이지 교체 알고리즘 이용

세그멘테이션 오류
사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생하며 해당 프로세스를 강제 종료하여 해결

지역성
기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 성질

  1. 공간의 지역성: 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높음
  2. 시간의 지역성: 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사용될 확률이 높음
  3. 순차적 지역성: 여러 작업이 순서대로 진행되는 경향이 있다는 것을 의미


페이지 교체 알고리즘

스왑 영역에 보낼 페이지를 결정하는 알고리즘

페이지 교체 알고리즘의 성능 평가 기준
미스율(miss ratio): 페이지 부재 횟수
히트율(hit ratio): 페이지 성공 횟수

ex) page fault = 9, miss ratio = 9/12 = 75%, his ratio = 25%

밸래디의 변이
할당되는 프레임의 수가 증가함에 따라 페이지 부재율이 증가하는 이상 현상이 일어남
-> 프레임을 많이 할당했음에도 페이지 부재가 오히려 더 일어남


FIFO 페이지 교체 알고리즘

먼저 입사한 순서대로 내보낸다고 생각

1. A가 없음(F) -> 자리가 남음 -> A 스왑인
2. B가 없음(F) -> 자리가 남음 -> B 스왑인
3. C가 없음(F) -> 자리가 남음 -> C 스왑인
4. D가 없음(F) -> 자리가 없음 -> A 스왑아웃, 땡김, D 스왑인 (페이지 교체)
5. B가 있음(S)
6. A가 없음(F) -> 자리가 없음 -> B 스왑 아웃, 땡김, A 스왑인 (페이지 교체)

  • Page Fault(F) 7번
  • Page Success(S) 3번

최적 페이지 교체 알고리즘

메모리가 앞으로 사용할 페이지를 미리 살펴보고 페이지 교체 선정 시점부터 사용 시점까지 가장 멀리 있는 페이지를 대상 페이지로 선정

Page Fault(F) 5번
Page Success(S) 5번

최적 근접 알고리즘의 접근 방식

1. LRU 페이지 교체 알고리즘
페이지에 접근한 시간을 기준으로 대상 페이지를 선정

페이지에 접근한 시간을 기준으로 대상 페이지를 결정
스왑인하면서 페이지에 접근한 시간을 모두 기록
스왑아웃할 때는 페이지에 접근한 시간이 가장 작은 페이지를 내보냄

2. LFU 페이지 교체 알고리즘
페이지가 사용된 횟수를 기준으로 대상 페이지를 선정

페이지가 몇 번 사용되었는지를 기준으로 대상 페이지를 결정

4번. D가 들어올 때 A,B,C가 모두 1이니 무작위로 하나 내보냄 -> A를 내보내고 D가 들어옴
6번. A가 들어올 때 D,C가 1이니 무작위로 하나 내보냄 -> D를 내보내고 A가 들어옴

3. NUR 페이지 교체 알고리즘
LRU, LFU 페이지 교체 알고리즘은 성능은 좋으나 추가적인 오버헤드가 큼
이를 개선한 NUR는 두 개의 비트만으로 구현 가능

참조비트가 0인 페이지를 먼저 찾고, 없으면 변경 비트가 0인 페이지를 찾음

참조 비트: 페이지에 접근하면 1이 된다.
변경 비트: 페이지가 변경되면 1이 된다.

4. 2차 기회 페이지 교체 알고리즘 (FIFO 변형)
특정 페이지에 접근하여 페이지 부재 없이 성공할 경우 해당 페이지를 큐의 맨 뒤로 이동하여 대상 페이지에서 제외


스레싱

하드 디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘 것 같은 상태

스레싱 발생 시점
CPU가 작업하는 시간보다 스왑 영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작업이 빈번해져서 CPU가 작업할 수 없는 상태에 이르게 되는 시점
-> 물리 메모리의 크기를 늘리면 스레싱 발생 지점이 늦춰짐

스레싱과 프레임 할당
프로세스에 너무 적은 프레임을 할당하면 페이지 부재가 빈번히 일어남
프로세스에 너무 많은 프레임을 할당하면 페이지 부재는 줄지만 메모리가 낭비됨
프로세스에 프레임을 할당하는 방식은 크게 정적 할당과 동적 할당으로 구분

균등 할당 (정적 할당)
프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당

프레임이 많이 필요한 프로세스(C)에게도 프레임을 4개 줌

비례 할당 (정적 할당)
프로세스의 크기에 비례하여 프레임을 할당

작업 집합 모델 (동적 할당)
작업 집합: 일정 시간동안 참조한 페이지의 집합

작업 집합을 변화시켜가면서 프레임을 할당함

페이지 부재 빈도 (동적 할당)
페이지 부재 횟수를 기록하여 페이지 부재 비율을 계산하는 방식

Leave a Reply

Your email address will not be published. Required fields are marked *