[운영체제]11.가상메모리II

이유정·2023년 8월 21일
0

운영체제

목록 보기
26/49
post-custom-banner

목표

가상 메모리 관리를 위한 캐싱 기법과 클락 알고리즘에 대해 알아본다.

교체 알고리즘은 꼭 페이징 시스템 뿐만아니라 컴퓨터 시스템의 다양한 곳에서 사용된다. => 캐싱
빠른 공간에다가 어떤걸 보관하고, 어떤걸 쫓아낼 것인가를 결정하는 것 !

지금 설명드린 캐슁은 하나의 컴퓨터 시스템 안에서 매체 속도가 상대적으로 빠르고 느리고의 차이를 완화하기 위해서 쓰는 건데, 웹 캐싱은 웹 페이지 검색했을 때 뜨는데 뜨는 이유는 멀리있는 웹 서버에서 웹페이지를 읽어와서 보여주는 것이다. 근데 똑같은 페이지로다가 계속 그때마다 웹 서버에서 가져오는 게 아니라 하드디스크에 저장해두고, 미리 받아온 내용을 보여주는 것! 웹 캐싱은 매체의 속도 완화가 아니라, 지리적으로 멀리 떨어진 컴퓨터에서 읽어오는 시간 차를 완화하기 위함이다.

페이징 시스템에서는 LRU,LFU 같은 알고리즘을 사용할 수가 없다 사실,,
이미 메모리에 올라와있는 페이지를 프로세스가 접근하게 되면 중간에 운영체제가 개입하는게 전혀 없다.
사용자 프로세스가 메모리 접근하기 위해서는 주소변환이 필요하다. 이 주소변환에서 운영체제가 개입하는게 없다. 하드웨어적으로 주소변환이 되는것. 이미 메모리에 올라와있는 페이지는 사용자 프로그램이 VPU를 쓰면서 그냥 가져와버리니까 이 페이지를 언제 사용했는지 그 사실을 운영체제가 모른다. 즉, 운영체제가 LRU 알고리즘을 사용하려면 이 페이지가 언제 사용됐는지 그때그때 알아야 하는데, 모른다 ! 메모리에 존재하는 페이지가 사용되면 A프로그램에 운영체제 개입이 없다. 즉, 줄세우기 관리가 불가능하다는 것. ! A프로그램이 메모리 참조를 하려고 주소변환을 했는데
그 페이지가 물리적 메모리에 없어. 디스크에 있어 . 그런 경우에는 PAGE FAULT가 난다. 그래서 제어권이 운영체제한테 넘어간다. 그럼 운영체제가 해당 페이지를 올려놓고, 언제 올려놨는지 시간을 안다. 그래서 이때만 줄 세울 수 있다.

Clock Algorithm

LRU를 근사시킨 알고리즘이다/

Page frame의 Allocation

프로세스에 대한 고려를 하지 않고, 오래된 페이지를 쫓아냈었는데, 이제 각 프로세스한테 물리적 메모리를 할당하겠다 ~~~ 뜻임

할당이야기를 왜하나? => 프로그램이 원활하게 실행되려면 적어도 메모리 상에 페이지 프레임을 몇개는 가지고 있어야 한다. 왜? => loop가 실행된다고 할 때 반복문을 구성하는 페이지가 5개라고 해보자. 5개 페이지를 이 프로그램한테 할당해주면 루프를 도는 동안 page fault가 안난다. 1000만번 돌아도 ! 근데 3개 할당하면 page fault가 난다. 비효율적이야

  • 프로그램을 구성하는 주소공간이 코드, 데이터, 스택이잖아 코드 페이지만 메모리에 올라와있다고 page fault가 안나는게 아니라, 그 프로그램이 기계어를 실행하면서 데이터를 실행하겠다 데이터 페이지도 적어도 메모리에 같이 올라가있어야 한다.

할당방법은?

global vs local replacement

global: 할당 개념없이 모든 n개의 프로그램들이 그냥 경쟁하면서 메모리를 사용할 수도 있다 ~
특정 프로그램이 메모리를 독식할 수도 있는 문제가 생김/

trashing diagram

working-set

global replacement+ local replacement 알고리즘을 섞은것 : 그때 그때 필요한 페이지를 활용하면서도, 한 프로세스가 동작하는걸 보장되도록 working-set 메모리를 마련하기 때문에

pff scheme

  • 이 알고리즘도 trashing 을 방지한다.
  • 아예 각 프로세스 페이지 비율을 그때그때 봐가면서 메모리를 더 줄지 말지 결정한다. 프로그램한테 메모리를 많이 주면 페이지 폴트가 적게난다는 그래프

page size의 결정

profile
강의 기록 블로그
post-custom-banner

0개의 댓글