오래 못 할 짓 하지 않기
[ 운영체제 ] 23. Page Table / Swapping 본문
만약 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으로 한다.
(출처)
한동대학교 고윤민교수님 - 운영체제
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 25. Virtual memory - Replacement (0) | 2024.06.01 |
---|---|
[ 운영체제 ] 24. Virtual memory (0) | 2024.05.28 |
[ 운영체제 ] 22. Page / Frame (0) | 2024.05.21 |
[ 운영체제 ] 21. Main memory (0) | 2024.05.20 |
[ 운영체제 ] 20. Deadlock 예방/회피/감지 , Recovery (0) | 2024.05.16 |