ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상 메모리(Virtual Memory) 2
    CS/OS(운영체제) 2022. 6. 12. 19:49
    728x90

    가상 메모리(Virtual Memory)

    - 가상 메모리는 사용자로 하여금 매우 큰 크기의 main memory를 제공받는다는 느낌을 갖도록 하는 메모리 관리 기법임.

     

    가상 메모리의 장점

    - 메인 메모리 안에서 더 많은 프로세스들이 유지될 수 있음. 각 프로그램들이 실행하는 동안 더 적은 메모리를 소모하고, 더 많은 프로그램이 동시적으로 실행될 수 있음.

    - 물리적 메모리보다 프로세스가 더 큰 메모리를 가지고 있어 수행 능력이 좋음.

    - Protection과 Isolation을 가능하게 함.

    - 효율적으로 메모리를 공유할 수 있음.

    - 부분적재가 가능하기 때문에 I/O loading이 더 적음.

     

    VM의 하드웨어와 제어 구조

     

    Page Table Base Register

    - 레지스터에 적재하는 것은 cost가 많이 발생하기 때문에 페이지 테이블을 가르키는 주소는 main memory 안에서 관리된다.

     

    Page Table Entry

    - Present (Valid) bit (P) - 디스크에 있는지 메인 메모리에 있는지 상태를 나타내는 Bit.

    - Modified (Dirty) bit (M) - 페이지의 내용이 수정되었는지를 나타내는 Bit.

     

    modified bit가 중요한 이유는 만약 수정되었다면 저장할 때 다시 wirte를 해주어야 하지만 수정이 되지 않았을 경우에는 그럴 필요가 없으므로 memory management technique 측면에서 더 효율적인 관리가 가능하기 때문이다.

     

    TLB(Translation Lookaside Buffer)

    - Page Table의 메모리 접근을 빠르게 하기 위한 고속 하드웨어 캐시.

    - 현대 인텔 프로세서는 TLB 안에 128 or 256 entry가 있다.

     

    Check TLB

    input : page# , Output: Frame#

    TLB Hit일 경우 -> Fetch translation, return Frame#

    TLB Miss일 경우 -> Check page Table ( in memory) ->

                                    Present bit 1일 경우 -> Load page table entry into TLB, return Frame#

                                    Present bit 0일 경우 -> Page Fault Exception

    MMU는 page fault exception을 호출할 수 있음.

    CPU가 I/O request를 시작함 -> 페이지를 디스크부터 메모리까지 전송함 -> page table entry를 동시에 업데이트함 -> TLB로 entry를 load함

    Virtual Memory Issue

     

    1. Page Size Issue

    페이지 사이즈가 크면 페이지 entry(테이블)이 더 작아짐.

    단점은 각 페이지들이 내부적으로 낭비되기 때문에 internal fragmentation (내부단편화)가 발생하고, 메모리가 큰 페이지들로 빠르게 채워짐.

     

    2. Faster Translation

    페이지 테이블에 추가적인 메모리 접근이 필요하기 때문에 Performance 감소가 이뤄짐. ( 이 문제를 TLB를 이용하여 해결 ) 그러나, TLB에서 Contect Switch 이슈가 발생함.

    각 프로세스는 다른 페이지 테이블을 가짐. context-switching이 발생할 때, TLB 안에 있는 지난 프로세스가 의미 없을 수 있음. (같은 VPN을 가지고 Valid P가 1임에도 불구하고, PFN이 100과 110으로 다른 경우)

    첫번째 해결책은 Flush이다. 가장 간단하게 모든 valid P bit를 0으로 설정하는 것. (miss ratio가 높아지기 때문에 cost가 높음)

    두번째 해결책은 ASID(Address Space Identifer) 이다.

    주소 공간 식별자를 같이 적는다. 즉 PID를 추가하여 넣어주면 PID와 VPN이 일치해야 hit이 가능하게 하는 것이다. 이 경우 다른 프로세스에서도 TLB는 translation이 가능하게 된다.

     

    3. Smaller Tables

    메모리 낭비적인 측면에서 가장 중요한 이슈이다. 4KB page size를 가진 32bit computer의 경우 2^20entry를 가지고 있다. 만약 PTE가 4B라면, page table size는 2^(20*4) 즉 4MB가 되어버린다. 주목해야 할 점은 이 페이지 테이블은 프로세스 마다 존재하기 때문에 프로세스가 100개가 되어버리면 400MB를 차지하게 되는 것이다. 64bit computer일 경우 문제점이 더 심각해진다.

    해결책은 뒤에 후술할 Combined paging and segmentation 기법이 있고, 페이지 계층화 , 역페이지 테이블 등이 있다.

     

    Combined Paging and Segmentation

    각각의 유저 주소공간을 segments 단위로 쪼개는 것.

    각 segment는 고정된 크기의 pages로 다시 쪼개짐.

    Segment Table의 변화는

    Base : segment의 페이지 테이블의 위치가 삽입

    Bound : # 페이지 테이블 엔트리의 숫자가 삽입

    다른 컨트롤 비트는 sharing과 protection의 목적으로 사용됨.

    페이지 테이블 엔트리는 필수적으로 pure paging system으로 같게 사용됨.

    장점 : 페이지 테이블의 메모리 오버헤드 감소 , 메모리 할당의 간단화 , 외부 Fragmentation은 없고 내부 Fragmentation만 존재할 수 있음.

    단점 : MMU에서 지원해야 하기 때문에 complexity level이 일반적인 paging과 비교하여 훨씬 더 높아짐.

     

    페이지 계층화(Hierachical Paging)

    page table을 더 작은 같은 크기의 multiple page로 나누는 것 ( 만약 전체 페이지의 PTEs가 invalid 하다면, 나누지 않음 )

    two level page table임. (64bit CPU는 4-level) , 페이지 테이블 스스로 paged.

    장점 : 낭비가 적음(할당된 공간 크기가 실제 사용되는 공간의 양에 부분적으로 있기 때문) , 페이지 테이블이 물리적 메모리 안에 연속적으로 존재할 필요가 없음.

    단점 : 메모리로부터 추가적인 load가 요구됨.

     

    역 페이지 테이블(Inverted Page Tables)

    # of PTE == # of PFN , 인덱스로써 Frame #(번호)를 사용하고 시스템 안에서 한 페이지 테이블만 사용하는 기법.

    각 엔트리는 page #을 포함하고, pid는 그 페이지의 자신.

    장점 : 각 페이지 테이블을 저장하는 데 필요한 메모리의 감소
    단점 : 페이지 참조가 발생할 때 테이블을 찾는데 필요한 시간이 더 오래걸림 , Hash Table을 사용함.

    728x90

    'CS > OS(운영체제)' 카테고리의 다른 글

    가상 메모리(Virtual Memory)  (0) 2022.06.12
    메모리 관리(Memory Management)  (0) 2022.06.12
    교착 상태(DeadLock)  (0) 2022.06.12
    동기화(Synchronization) 2  (0) 2022.06.12
    동기화(Synchronization)  (0) 2022.06.01
Designed by Tistory.