오래 못 할 짓 하지 않기

[ 운영체제 ] 23. Page Table / Swapping 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 23. Page Table / Swapping

쫑알bot 2024. 5. 24. 12:14
728x90

만약 Paging 해야하는 게 엄청 많아지면 어떻게 처리해야 할까?

 

Memory가 엄청 크고 우리가 고려해야하는 프로세스들이 많아지면

page table이 엄청 커지지 않을까?

 

이를 처리하는 방법에는 3가지가 있다.

 

● Hierarchical Paging
● Hashed Page Tables
● Inverted Page Tables

 

 

 

● Hierarchical Paging

: Logical address space 를 여러 Table로 나눈다.

즉 Page를 위한 Page라고 생각하면 됨.

ex) 윙의 윙

 

 

그림을 보면 Outer page table이 있다.

 

Page table들을 모아두는 page table들이 있는 것이다.

 

이런 구조라고 생각하면 된다.

 

만약에 더 큰 Logical address space가 필요하다면

outer의 outer를 만들 수도 있다.

 


● Hashed Page Tables

page의 값을 hash function을 통해 page table에 저장하고 physical memory에 접근한다. 

 

page값에 대한 hash function 결과값이 같은 Entry끼리는 hash table 에서 linked list로 이어준다.

검색/access할 시에는 linked list를 통해서 Physical address 주소를 얻는다.

 


● Inverted Page Tables

: Pid와 page number를 통해서 저장한다.

모든 프로세스들이 page table을 가지고 있으면서 Logical page를 찾는 것보다.

 

그냥 Pid와 page number가 있으면 Physical address space identifier를 찾을 수 있게 한다!

 

 


 

배경 : Logical address를 사용함으로써

우리가 가진 Main memory보다 훨씬 더 큰 Program도 감당 가능하지 않을까 생각함.

 

Swapping

 

 

: 프로세스는 Memory에 항상 있는 것이 아니라,

 Backing store에 있다가, 실행될 때 memory로 가져와진다.

 

- Backing store : Hard DISK라고 생각하면 된다. 

                           Main memory보다 용량은 훨씬 크지만, Access 처리에 시간이 좀 걸린다.

 

● 다음에 실행하려고 하는 프로세스가 메모리에 있지 않다면,

 

   - 현재 메모리에 있는 Process는 Swap out 시키고 ( = Backing store로 넣고 )

   - 타켓 Process를 Backing Store에서 Swap In해준다 ( = Main memory로 가져온다 )

 

 

Context Switch가 일어나면 시간이 좀 많이 걸리긴 한다.

예 ) Process의 크기 = 100MB

       Hard disk transfer 속도 = 50MB/s

 

문맥 교환이 일어났다고 하면, 100MB를 넣고, 다른 100MB를 꺼내와야한다.

Swap out = 2초 
+
Swap in = 2초

 =4초

 

따라서 프로세스 전체를 Swapping 하는 건 부담이 조금있다.

( +이래서 요새는 그냥 swapping을 하지는 않고, swapping하는 단위를 정해둔 뒤에 한다. )

 

 

● 해결법

 : Swapping with page

 

 

하나의 프로세스에 여러 페이지가 있고

페이지에 따라서 page를 다룬다.

 

여기에서는 Page in / Page out으로 한다.

 

 

(출처)

한동대학교 고윤민교수님 - 운영체제