논리메모리, 페이지폴트를 위한 메모리 할당 전략

infoqoch·2021년 3월 4일
0

운영체제

목록 보기
15/15

1. 프로세스에 얼마만큼의 프레임을 할당하는가?

  • 페이지 폴트가 자주 발생하는 이유는 자주 사용되는 페이지가 계속 교체 되기 때문.
  • 특히 Loop를 구성하는 페이지의 경우, 이에 필요한 페이지가 한꺼번에 할당되야 함. 루프 한 번 마다 페이지 폴트가 발생하면 매우 비효율적임.
  • 그러므로 프로세스 마다 최소한 필요로 하는 페이지가 얼마만큼인지 쟁점이 됨.

1.1 페이지 할당 계획 Allocation Scheme

  • Equal Allocation : 모든 프로세스에 똑같은 갯수 할당
  • Proportional Allocation : 프로세스 크기에 비례하여 할당
  • Priority Allocation : 프로세스의 우선순위에 따라 다르게 할당

2. 트레싱 Thrashing

  • 프로세스의 원할한 수행에 필요로 한 최소한의 page frame 수를 할당받지 못함. 그로 인하여 페이지 폴트가 반복적으로 발생하는 현상. 특히 멀티 프로그래밍 환경에서 너무 많은 프로세스가 메모리를 점유할 때를 의미함.
  • Page fault rate의 상승 -> CPU Utilization의 하락 -> OS는 MPD Multiprogramming dgree를 올림 -> 메모리에 적재된 프로세스 갯수 상승(higher MPD) -> Page fault rate의 상승 -> CPU의 사용이 하락

3. Working-set Model

3.1 Locality of reference

  • 트레싱을 해소하기 위한 방안.
  • Locality of reference : 프로세스는 특정 시간 동안 일정 장소만을 집중적으로 참조. 집중적으로 참조되는 해당 페이지를 Locality set이라 함.
  • Locality를 기반으로 하여 프로세스가 원할하게 돌아갈 수 있는 양의 페이지를 working-set으로 설정. working-set 전체를 물리 메모리에 적재할 수 없으면, 페이지 폴트 자체가 발생하지 않음. 물리 메모리에 적재 되지 않는 워킹-셋은 통채로 백스토리지에 swap-out 됨.
  • MPD를 조정.

3.2 Working-set Algorithm

1) working-set이 요청 될 때

  • 워킹셋이 page frame보다 클 경우 : 일부 프로세스를 swap out하여 워킹 셋을 적재
  • 워킹셋이 page frame보다 작을 경우 : 해당 워킹셋을 로딩한다. 그리고 swap out 된 다른 워킹셋을 남은 프레임에 할당.

3.3 window set과 working-set 페이지 선정

2) working-set의 size 결정 방법

  • window size : 워킹 셋을 결정하기 위한 일종의 선정 범위. 윈도우에 의존하여 워킹셋의 크기가 결정된다.
  • 위의 예제의 window set의 크기는 10이다. page fault가 들어온 t1을 기준으로 window에 포함되는 페이지는 2부터 1까지이다. 그 중에 중복되는 페이지는 1, 2, 5, 6, 7이다. 중복되는 페이지 5개가 워킹셋이 된다.
  • 워킹셋을 기준으로 나머지 페이지는 페이지 폴트가 발생할 때 잠재적으로 삭제될 수 있다.
  • window의 사이즈가 너무 작으면 locality set을 모두 수용하지 못함.
  • window의 사이즈가 너무 크면 다수의 locality set을 수용하여 비효율적임.

3.4 PFF Scheme Page Fault Frequency

  • PFF는 page-fault rate의 상한값과 하한값을 통해 페이지의 사이즈를 정하는 전략이다.
  • page-fault rate가 상한값을 넘으면 frame을 더 할당한다.
  • page-fault rate가 하한값보다 낮으면 frame을 덜 할당한다.

4. Page size의 결정

  • 이전까지는 정해진 페이지 크기를 기준으로 페이지의 할당, 교체, 제거 등에 중점이 있었음. 페이지 자체의 사이즈를 크게 하거나 적게 하면 어떻게 될까?
  • 페이지 수의 증가 -> 페이지 테이블 크기 증가.
  • internal fragmentation 감소 : 페이지가 클 수록 필요 없는 데이타가 있을 확률이 높음
  • 필요한 정보만 메모리에 올라와 메모리 이용에 효율적
  • 다만, 지역성을 고려하면 좋지 않을 수 있음.
  • 현재 트렌드는 페이지 사이즈를 늘리는 방향으로 가고 있음.
profile
JAVA web developer

0개의 댓글