Home 운영체제 - Virtual-Memory
Post
Cancel

운영체제 - Virtual-Memory

- 정리의 기반은 학교 강의 노트와 [Operating System Concepts]를 참고하였습니다.

22-1학기 운영체제를 들으면서 중간고사에 대비하면서 정리해놓은 개념들입니다…ㅎ 다른 핵심 내용이나 기본이라고 생각되는 내용들은 제외하고 제가 시험에서 중요하다고 생각하는 것들만 중구난방으로 정리되어있습니다.


Demand Paging

디스크에 frame을 임시 저장
물리적 메모리를 디스크에 저장된 페이지의 캐시로 활용하는 느낌


Virtual Memory

  • HW + SW의 지원 필요
  • HW = MMU = Page Table Base Register + TLB + Page walkers
  • OS의 일 :
    • 어떤 frame이 free한지 확인
    • frame을 page에 할당
    • frame replacement
    • sharing frame

Page Fault

  • Valid-Invalid bit 사용 -> I(Invalid bit) = 메모리 접근 불가 or 디스크에 존재하는 데이터
  • PTE가 그 페이지가 메모리 안에 없다고 말해준다.
  • 과정
    1. Page Fault 발생
    2. CPU가 OS에게 알림
    3. OS가 CPU 중지
    4. Disk에서 해당 부분을 찾아 메모리에 올림
    5. Bit를 Valid로 갱신
    6. Page Fault 발생시킨 명령어 재실행

Copy-on-Write

shared-mem은 read-only로 보호
프로세스가 write하면 그때 복사해서 독립적인 memd으로
ex) fork()

cow


Virtual Memory 문제점


VM 문제점 1. Page 테이블의 크기가 꽤 크고, Process가 VM을 다 쓰진 않는다.

  • 해결 방안
    1. Multi-level Page Table : <Outer page #, Secondary Page #, Page Offset>
    mlpt

2. Hashed Page Table : hash 사용
vmht

3. Inverted Page Table :
PFN을 <VPN, PIB> 에 매핑
테이블은 PFN이 어떤 VM프로세스와 대응되는지를 알려준다.
프로세스 기준이 아니기 때문에, 여러개일 필요 없이 1개면 된다. 그러나, 메모리가 기준이므로 테이블의 크기가 크고 탐색시간이 오래걸린다.


VM 문제점 2. Page Table 때문에 메모리에 두번 접근하게 되고, 이로 인해 속도가 느림

Translation Lookaside Buffer(TLB)로 해결

TLB : PTE의 캐시 역할

SW-managed TLB: Alpha
HW-managed TLB: x86
몇몇 TLB는 address-space identifiers(ASIDs)를 TLB Entry에 가지고 있음.

ASIDs: 각 프로세스를 고유하게 식별하여 해당 프로세스에 대한 주소 공간 보호 제공 이게 없으면 context switch가 TLB flush를 발생시킨다.
TLB가 multiple process를 하게 도와준다.


tlb


VM 문제점 3. 언제 주소 변환을 하면 좋지?

  1. befor L1 캐시(Physically-indexed, Physically-tagged)PIPT : L1 접근 느림
    Process의 메모리 접근 -> VA -> TLB -> PA -> L1
  2. After L1 캐시(Virtually-Indexed, Virtually-tagged)VIVT
    Process의 메모리 접근 -> VA -> L1 -> VA -> TLB = Aliasing 문제 발생
    원인 : 여러 VA가 같은 PA에 mapping, Multiple block이 캐시 안에 같은 PA에 존재
    HW 해결책 : miss location 체크하고, 중복 제거 VA의 중복을 알려면 PA를 알아야한다.

    Aliasing 문제 : 각기 다른 신호를 구분하지 못하는 현상

  3. Parallel TLB and Cache Access : PA와 VA의 공통 bit만 index로 사용
  4. VIPT : Aliasing 문제 발생
This post is licensed under CC BY 4.0 by the author.