본문 바로가기

학교공부/운영체제

Virtual Memory Management

이전까지 배운건 Virtual <-> physical로 변환하는 방법이다.

이제는 확장해서 Virtual Memory가 어떻게 무한하게 쓰이는지 알아본다.

 

Demand Paging

하드에 저장돼있는 많은 pages중에 필요한 page만 제공한다

이게 어떻게 동작하냐? Locality라는 특성 때문이다. 모든 page를 physical에 올리 필요없이 Locality하게 작동시켜도 문제없다. 어차피 쓰는애들만 쓰고 쓰는애들은 그 주변 pages을 대부분 사용한다.

 

Demand paging 기법을 사용하기 위해 Valid-Invalid Bit을 이용한다.

1 -> in-memory 0-> not-in-memory, 진짜 유요하지 않은경우

 

 

8번 이상은 진짜 유요하지 않아서 in-valid고 0~7번이 in-valid한 경우는 현재 메모리 위에 없다는 뜻이다.

 

그렇다면 전체 과정을 살펴보자

1. 어떤 logical address를 변환하기 위해 MMU가 TLB를 뒤진다. 

2. TLB에 없으니까 page table을 찾아본다(main memory에 있음)

3. page table에서 0인 경우(in-valid)한 경우 자기자신에게 trap을 건다.(page-fault-trap)

4. os가 판단해서 처리한다. 1) 진짜 유효하지 않은경우 memory protection 2) not-in-memory인 경우 valid로 바꾸고 적재시킨다. 

 

만약 위에 상황에서 8개의 page가 다 메모리에 올라갈라면 page-fault 8번 일어나야한다.

사용 끝나고 다시 하드로 swapping되는 경우 in-valid로 변경됨.

 

2번 이후의 상황을 나타낸 그림. 만약 4번 상황에서 free frame이 없다면 안쓰는거하나 보내버림.

 

 

 

 

그렇다면 종합적인 상황을 보자

PTE : page table entry

거의 대부분 상황에서는 TLB hit임 근데 miss나는 경우 page tables에서 찾아본다. TLB miss 처리는 cpu가 한다.

근데 TLB에는 valid한 page table만 골라서 올리는건가? TLB miss나면 page table에서 사용하는걸 TLB에 올리는거 같다. 근데 그렇게 올리다가 TLB 꽉차면? 젤 안쓰이는거 빼고 채워넣는다. 

당연히 처음 실행시키면 miss가 많이 생기겠지

 

 


Free Frame 관리 

frame 꽉차서 뭐하나 swap해야될 때 어떤 규칙으로 swap할것인가?

page fault가 줄여지는 방향으로 규칙을 만들어야한다.

즉, 자주 안쓰는 걸 swap해서 page fault를 줄여야지 전체 성능이 향상된다.

 

요 victim을 잘 선정해야한다.

 

교체 알고리즘

5개의 page존재하는 경우

 

당연히 frame도 5개있으면 page-fault가 아예 안생기겠지만 그럼 vitual-memory 쓰는 의미가 없겠지? 적정선을 찾는게 중요하다.

 

 

여러 알고리즘을 알아보자

FIFO

? 뭔가 이상한데

frame을 늘렸는데 fault가 더 생기는 상황도 생긴다. -> 안씀

 

 

Optimal Algorithm

현재 시점에서 가장 오랫동안 사용되지 않을 frame을 교체한다.

 

4 -> 5   1 -> 4 

4frame인 경우 이게 최적이다 6번보다 적게 fault 못줄임

근데 이건 미래를 아니까 되는거고 결국 우린 과거를 보고 유추해서 만들어야한다. (LRU)

 

Least Recently Used (LRU) Algorithm

과거보고 유추해서 씀.  optimal에 근접한 성능

현재시점에서 가장 오랫동안 안쓴 frame을 교체한다.

5 추가 시킬때 3번 자리를 젤 안썼으니까 swap 

교체 시점에서 젤 안쓰는놈 빼버린다.

 

 

 

 

 

 

 

 

 

 

'학교공부 > 운영체제' 카테고리의 다른 글

Implementing File Systems  (0) 2020.06.08
Virtual Memory Management-2  (0) 2020.06.01
Memory Management Strategies - 3  (0) 2020.05.25
Memory Management Starategies -2  (0) 2020.05.22
Memory Management Starategies  (0) 2020.05.20