본문 바로가기
  • 초부득3 - 어제보다 나은 내일을 위해
  • 꿈이 현실이 되는 날까지
sw사관학교 정글 2기/pintOS

WIL week11~12 pintOS Virtual Memory

by 금의야행 2021. 10. 28.

 

핀토스 가상 메모리 이론 정리

https://velog.io/@bdbest72/pintOS-project3-virtual-memory-%EC%9D%B4%EB%A1%A0

 

WIL ?

Virtual memory management

 

가상 메모리 관리

 

가상 메모리 관리에서 가장 중요한 것은 얼마나 disk를 덜 방문하느냐 이다. 왜냐하면 disk에 데이터를 read, write를 하는 작업들은 겁나 느리기 때문이다.

 

가상 메모리를 관리하는 기법 중 하나인 paging과 가상 메모리와 물리 메모리를 연결하는 page table과 이 과정에서 필요한 가상-물리 주소 번역 하드웨어 장치인 MMU와 CPU가 메모리를 접근하는 시간을 단축시키기 위한 TLB 등등이 포함된 영역.

 

  • paging
    • virtual page
    • physical frame
    • page table & supplementary page table

페이징

 

페이징이란 고정된 크기로(page 단위) 메모리 공간을 분할해 가상 메모리를 관리하는 기법입니다.

 

페이징의 필요성은 다음과 같은 문제점들을 해소하기 위함이다. 만약 프로세스 단위의 정보를 물리 메모리에 로드한다면 주어진 물리 메모리가 부족해지는 경우 cpu가 process를 바꿀 때 마다 느린 swap in-out, 즉 물리 메모리에 할당되지 않은 정보를 cpu가 접근하게 되어 이를 물리 메모리에서 로딩하는 과정이(disk read) 매우 빈번하게 발생해 컴퓨터가 필요 이상으로 느려진다. 

 

memory fragementation을 방지해준다. 작은 단위인 page 사이즈로 잘라 관리 할 경우, 남은 공간의 합은 충분한데 정작 연속된 메모리의 크기가 맞지 않아 이를 load하지 못하는 불상사를 막아준다. 

 

frame은 실제 물리 메모리를 페이지와 같은 크기로 나눈 블록 (= 페이지 프레임)의 단위다. 

 

page table는 이 page와 frame 사이의 mapping 정보를 담아 둔다. page table이 있기에 page로 쪼개진 데이터들이 무작위 순서로 물리 메모리에 배치되어도, 마치 연속된 주소 상에 데이터들이 차곡차곡 쌓여있는 환상을 제공한다.

 

spt는 pintOS에서만 사용되는 개념으로 추정되는 데, page fault가 발생할 시 이를 해결하기 위한 정보들을 추가적으로 담아 놓는 page table의 확정된 버젼이라고 볼 수 있다. 

 

 

  • Memory Management Unit (MMU)

page table에 담긴 정보를 기반으로 가상-물리 주소 변환을 수행해주는 하드웨어 장치이다. 이 장치는 메모리 보안,보호(memory protection) 역할을 수행해주기도 하는데, 잘못된 요청(ex. 접근 권한이 없는 process, 존재하지 않는 가상 주소 요청 등등)을 걸러준다. 

 

 

  • Translation Lookaside Buffer (TLB)

cpu가 특정 데이터를 요구할 때 page table 또한 물리 메모리에 저장되어 있기에 cpu와 물리 메모리를 두번 왔다 갔다해야 cpu가 원하는 데이터에 접근 할 수 있다. 이 시간 손실을 줄이기 위해 가장 많이 최근에 사용된 page table의 일부분들을 TLB에 캐시해두어 CPU가 우선 TLB에 접근하게 하고 여기서 원하는 정보를 찾을 경우 page table에 방문 할 필요 없이 즉시 원하는 데이터에 접근할 수 있게 된다. 

 

 

 

Page type

 

위에서 설명한 page table entry에 포함 될 수 있는 정보들이다. 각각의 type은 해당 page가 disk에 있는 page인지, 아직 초기화되지 않는 빈 page인지, 물리 메모리에 올라온 정보인지 등을 구분하기 위해 사용된다. 

  • Uninitialized page
    • Lazy initialization
  • Anonymous page
    • stack growth
  • file-backed page
    • mmap syscall

 

 

 

Swap in/out

  • page replacement policy
  • swap disk

 

 

 

Copy on Write (COW)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'sw사관학교 정글 2기 > pintOS' 카테고리의 다른 글

pintOS 관련 링크들 모음  (0) 2021.11.02
WIL - week09~10  (0) 2021.10.14
Velog.io에 필기 합니다.  (0) 2021.10.04

댓글