운영체제 - 가상메모리(4)

2020-11-02

OS를 공부하면서 정리를 한 내용들 입니다.


쓰레싱은 메모리 관리에서 중요한 개념입니다.

한번 알아봅시다.

Thrashing

그림 출처

  • X 축 : 메모리에 올라가 있는 프로그래밍의 갯수

  • Y 축 : CPU의 이용율(CPU가 놀지 않고 일한 시간)

처음에 프로그램 하나가 올라가 있을때 CPU의 이용율은 천천히 올라가게 됩니다.

 그런데 왜 이용율이 100%가 아닌가? 그 프로그램이 CPU를 쓰다가, I/O 작업을 하러 가버리면, CPU가 놀게 됩니다.

동시에 여러개를 올려놓았을 때 위 동작을 하다가, 어느 순간 뚝 떨어지는 현상이 발생합니다.

이것을 “Thrashing이 일어났다” 라고 합니다.

이게 어떤 상황이냐면 메모리에 너무 많은 프로그램을 동시에 올려놓으니,

프로그램이 원활하게 동작하기 위해서 필요한 최소한의 메모리도 얻지 못한 상황이 발생합니다.

각각의 프로그램들이 메모리를 너무 조금씩 가지고 있다보니,

해당 프로그램에게 CPU를 줘봐야 Page Fault가 발생하고,

또 다른 프로그램에게 CPU를 줘봐야 Page Fault가 발생해서 누구에게 CPU를 줘도 Page Fault가 발생해서

CPU가 놀고 있는 상황입니다.

정리

  • 프로세스의 원활한 수행에 필요한 최소한의 page Frame 수를 할당 받지 못한 경우 발생
  • Page fault rate가 매우 높아짐
  • CPU utilization이 낮아짐
  • OS 는 MPD(Multiprogramming degree)를 높여야 한다고 판단
  • 또 다른 프로세스가 시스템에 추가됨(higher MPD)
  • 프로세스 당 할당된 frame의 수가 더욱 감소
  • 프로세스는 page의 swap in/ swap out으로 매우 바쁨
  • 대부분의 시간에 CPU는 한가함
  • low throughput

Working-set Model

Locality of reference

프로세스는 일반적으로 특정 시간 동안 일정 장소만을 집중적으로 참조합니다.

특정 시간동안 한 장소를 집중적으로 사용하다가 시간이 지나면 다른 장소에 집중적으로 사용됩니다.

집중적으로 참조되는 해당 page들의 집합을 locality set이라고 합니다.

Working-set Model

Locality에 기반하여 프로세스가 일정 시간 동안 원활하게 수행되기 위해 한꺼번에 메모리에 올라와 있어야 하는

page들의 집합을 working set이라고 합니다.

working set을 이용하는 메모리 알고리즘은 working set에 포함되는 page들을 메모리에 무조건 보장해주는 방법을 씁니다.

  • 만약 메모리가 부족해서 어떤 working set이 메모리에 다 못올라간다면?

모든 frame을 반납한 후 swap out(suspend) 합니다.

Working set Algorithm

그림 출처

그림을 보면 시간순서에 따라 page reference string이 나열되어있습니다.

이 page reference string은 모든 페이지가 아닌 특정 page의 reference string 입니다.

여기서 알고리즘은 working set이 무엇인지는 정확하게 모릅니다.

미래에 사용될 것은 모르기 때문입니다.

그러나 과거의 history에 근거해서 추정합니다.

  • Δ = working-set window : page reference의 고정된 수

  • WSi = 프로세스 Pi의 working-set : 가장 최근 Δ에 참조된 페이지 집합. 만약 페이지가 활발히 사용되고 있다면 -> Working-set

  • WSSi = WSi의 크기 : 만약 Δ 너무 작으면 모든 locality를 포함 못함. 너무 크면 여러 locality를 포함할 것. 무한대에 수렴하게 크면 모든 프로그램을 포함할 것

  • D = 프레임의 총 demand = ΣWSSi

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의