본문 바로가기

STUDY/운영체제

[2019.07.02] Virtual Memory

프로세스는 조각되어 들어가기 때문에 main memory에 연속적으로 들어갈 필요가 없다.

- Virtual memory의 이점
 main memory 크기와 상관없이 더 큰 process도 실행할 수 있다. 더 많은 process 들이 main memory에 올라온다. -> CPU가 노는 시간이 줄어든다.
 현재 실행 중인 process들이 다 I/O가 되어 blocked 상태이면 CPU가 논다. -> swapping이 제안되었지만 suspended로 보내는 것도 process를 디스크에 올리는 데 오래 걸림 -> VM이 제안됨. 조금씩만 memory에 올림.

- Program 실행
 1. OS가 program의 조각 조금을 main memory에 가져온다.
 2. main memory에 없는 주소가 요구되면 interrupt이 발생한다.
 3. OS는 해당 process를 block 시키고 디스크에 해당 부분을 가져올 것을 말한다.
 4. 디스크가 I/O 처리할 동안 OSS는 다른 process 실행하고 I/O 끝나면 Ready 상태로 간다.

Types of Memory
 - Real Memory : Main memory, 주소는 real address, physical address.
 - Virtual Memory :disk에 있는 memory, 주소는 virtual address, logical address.

- Paging
 fixed-sized pages로 구성된 process가 virtual memory에 저장되어 있다. main memory에 접급해야 하는 page들은 올라간다. 각 page는 main memory의 아무때나 위치할 수 있다. 
 Page table은 logical (virtual) address를 physical memory에 mapping할 때 필요하다.
 Virtuual address는 Page Number 20 bit + Offset 12 bit로 구성되어 있다. 해당 virtual address로 page table에 mapping 하여 Frame Number를 알아낸다. Frame Number 20 bit + Offset 12 bit로 구성된 physical address로 mapping 시켜 main memory에서의 주소가 나온다.

Page Table의 크기
 Page table의 단점은 VM에 따라 크기가 비례한다는 점이다. 너무 커지면 main memory에 안들어가진다. -> page table 자체를 여러개의 조각으로 나누어 쓰이는 것만 main memory에 올리자.
 - Two-Level Paging
    Virtual address에서 20 bit Page number를 p1(10 bit), p2(10 bit)로 나누다. p1이 outer-page table의 위치를 가리키면 그 안에
   page of page table이 있고 p2가 해당 table에서의 위치를 가리킨다. 즉, page table을 여러개 만드는 데 그 page table을 순서대로
   저장한 게 outer-page table이다.
- Translation Lookaside Buffer
    하지만 Page table을 읽기 위해 memory를 많이 읽어야하는 문제가 있다. 이를 위한 해결 방안이다.
    CPU에서 virtual address의 page number 위치에 있는 page number들과 PT Entries라는 영역으로 이루어져있다. PT Enteries는
   처음에는 비어져있지만 한번 access하면 해당 Page Number에 mapping 되는 Frame Number가 저장된다. 순차적으로 찾는게
   아니여서 오래 걸리지 않고 CPU에 저장되므로 memory를 거치지 않는다.
    이 buffer는 cache여서 PT Entry가 있으면 hit, 없으면 miss다.