[OSTEP] Introduction to Paging

Soeng_dev·2022년 5월 2일
0

Paging의 정의

공간을 동일크기의 조각으로 분할하는 방법
(세그멘테이션 - 가변크기 분할)

• Page

고정크기의 단위를 page라고 함

페이징에선 물리 메모리도 page frame이라는 고정 크기 슬롯의 배열로 생각함

개요

• 장점

» 유연성

프로세스의 주소공간 사용방식과 무관하게 주소공간을 지원 가능

-> Segmentation 방식에선 프로세스가 메모리를 사용하는 방식(힙, 스택)등을 고려해서 공간을 할당해야 했음
-> 가상주소에 빈공간이 많은 경우도 효율적으로 지원

» 단순함

비어있는 물리 메모리 페이지의 빈 공간 리스트를 유지하고,
빈 공간 리스트의 첫 페이지부터 순서대로 필요한 갯수만큼 선택만 하면됨
(ex : 63바이트의 프로세스 주소공간, 페이지 크기 16바이트
-> 빈공간리스트 앞에서 부터 4개 선택)

• 단점

» 성능저하

페이지 테이블 접근으로 인한 시스템 성능 저하

» 메모리 낭비

페이지 테이블 저장으로 인한 메모리 낭비의 가능성이 존재

Page Table (페이지 저장공간)

운영체제는 가상 페이지들의 물리 메모리 위치 기록을 위해
프로세스마다 페이지 테이블이라는 자료구조를 유지

• 가상 주소 변환

vpn과 offset으로 구성,
해당 프로세스의 몇번째 페이지인지 나타내는 VPN을 PFN(physical frame number, 페이지의 실제 물리적인 순서를 나타냄 = PPN, physical page number)로 바꿔서 offset(페이지 내에서 원하는 메모리의 위치)에 해당하는 메모리값을 참조한다.

» Virtual Page Number (VPN)

해당 프로세스의 몇번째 페이지인지 나타내는 값,

프로세스의 가상주소의 최상위 비트를 필요한 만큼 사용

  • ex : 프로세스 주소공간 64비트, 페이지 크기 16비트
  • 4개의 페이지가 프로세스에 필요
  • 4개의 페이지를 나타낼 수 있는 2개의 최상위 비트( 22 = 4)를 VPN으로 사용
  • 총 가상메모리가 64비트 필요하므로 가상메모리는 6비트를 사용(26 = 64)

• 저장장소

물리 주소로의 변환 정보를 비롯한 필요한 정보들을 PTE(page table entry)라고 함
페이지 테이블은 물리메모리에 상주하거나 운영체제 가상메모리에 저장할 수 있고, 디스크에 스왑될 수도 있다.

• 실제 저장되는 데이터

페이지 테이블은 가상주소를 물리주소로 매핑하는데 사용되는 자료구조
임의의 자료구조도 사용가능, 가장 간단한 형태는 선형 페이지 테이블(linear page table)
-> 가상페이지 번호 VPN으로 배열의 항목에 접근

» 페이지 테이블 항목

  • Valid bit
    특정 변환의 유효 여부를 나타냄, 할당되지 않은 주소공간을 표현하기 위해 반드시 필요
    ex : 힙과 스택사이의 미사용공간은 무효(invalid)로 표시됨

  • Protection bit
    페이지가 read, write, execute가 가능한지 표시
    protection bit가 허용하지 않는 방식으로 페이지에 접근 시 운영체제에 트랩을 발생

  • Present bit
    이 페이지가 물리메모리에 있는지 디스크에 있는지(= 스왑 아웃 됬는지) 표시

  • Dirty bit
    메모리 반입된 후 페이지가 변경되었는지 표시

  • Reference bit ( = Accessed bit)
    페이지가 접근되었는지 추적
    어떤 페이지가 인기있는지 결정, 메모리가 유지되어야 하는 페이지를 결정하는데에도 유용,
    -> 페이지 교체에 매우 중요

profile
Software Engineer

0개의 댓글