본문 바로가기

한권떼기/운영체제(Operating System Concepts)

[한권떼기] 운영체제 08번째. 메모리 스와핑과 페이지 교체 알고리즘

728x90
반응형

**본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau', 'Operation System Concepts Abraham Silberschatz 외 2' 내의 이미지와 내용을 포함하고 있습니다

 

 

Swapping 매커니즘

우리가 사용하는 메모리는

Mass Storage(HDD, SDD..) -> Main Memory -> Cache(CPU내에 존재) -> Registers

순으로 크기가 작고, 속도가 빠름

따라서 Main Memory(physical memory)에 모든 페이지를 다 넣을 수 없기 때문에 페이지 중 일부는 memory에서 삭제되어 disk에서 조회해야 함

 

Page fault: 찾고자 하는 페이지가 memory에 없는 것. disk에서 페이지를 찾아야 함

 

캐시의 성능이 좋아지는 이유

모든 페이지를 disk에 넣지 않고, 페이지 교체 정책을 사용하면서까지 메인 메모리를 사용하는 것은 페이지가 캐싱이 되어 disk까지 가지 않고 더 빠르게 찾을 수 있기 때문

 

캐싱은 두 가지 Locality 속성 때문에 성능이 보장됨

시간적 지역성: 최근에 사용했던 데이터를 다시 사용할 확률이 높음

공간적 지역성: 접근했던 데이터의 근처에 있는 데이터를 접근할 확률이 높음

 

 

페이지 교체 알고리즘

FIFO

먼저 들어온 페이지가 먼저 나감

BELADY's ANOMALY

보통은 캐시의 크기가 늘어나면 page fault가 줄어들지만, FIFO에서는 반대로 page fault가 늘어나는 경우도 있음

 

LRU

페이지들 중에 가장 덜 최근에 사용된 페이지가 나감

스택 알고리즘 사용 가능

 

LFU

페이지들 중에 가장 적은 횟수로 참조된 페이지가 나감

 

 

페이지 선택 알고리즘

Prefetching

페이지를 가져올 때 그 근처에 있는 페이지도 가져 옴

공간적 지역성에 따라 근처 페이지를 참조할 확률이 없고, 필요할 때마다 페이지를 disk에서 가져온다면 오버헤드가 일어남

Clustering, Grouping

disk에 데이터의 변경을 반영할 때 페이지 하나씩 반영 하는 것이 아니라, 여러 개의 페이지를 모아서 한꺼번에 반영함

 

Thrashing

만약 프로세스가 충분한 메모리 공간을 가지지 못하면, 프로세스가 page를 스왑하는 데에 시간을 많이 써서 성능이 급격하게 낮아짐

locality 사이즈의 합이 전체 메모리 사이즈보다 큰 경우 발생

 

 

Thrashing은 실제로 어떤 상황에서 볼 수 있을까요?
멀티 프로그래밍 환경에서 CPU 이용률이 증가하다가 한 번 떨어지면, 프로세스를 더 추가해서 이용률을 높이려고 하는 경우가 있습니다.
이런 경우에 만약 Thrashing이 발생 중이었다면, 추가된 프로세스가 그만큼 더 메모리를 잡아먹게 되어서 Thrashing이 심해지는 것을 볼 수 있습니다.

 

 

 

728x90
반응형