[OS] Paging

2024. 3. 30. 00:02·OS

페이징

고정된 크기로 주소 공간을 나누는 메모리 관리 기법

➡️ 메모리 관리가 쉬워짐.

➡️ 외부 단편화 발생 X

➡️ 내부 단편화는 발생 가능

  • page(페이지): 고정 크기 단위 ⬅️ 가상 메모리
  • page frame(페이지 프레임): 고정 크기의 슬롯의 배열 ⬅️ 물리 메모리
  • offset: 해당 페이지에서 떨어진 거리
    • 페이지 크기만큼(bit)
    • ex) 페이지 크기가 16bytes면 4bit 차지
    • 물리 주소 변환 시, offset 유지
  • VPN(가상 페이지 번호)
    • VPN 크기 = 가상 주소 크기 - offset 크기
  • PFN(물리 프레임 번호)
    • 주소 변환 정보에 VPN과 매칭 되어 있음.
  • 물리 주소 = PFN << Shift | offset
  • Bit Map: 물리적 메모리 사용 상태를 1bit를 가지고 나타낸 것
  • 문제점
    • 주소 변환 시, 메모리에 계속 access해야 하므로 느림 ➡️ 성능 저하
    • 페이지 테이블이 크면 많은 메모리 공간 차지

 

페이지 테이블

- 가상 페이지에 대한 물리 메모리 위치 기록을 위한 자료 구조
- 프로세스의 주소를 변환한 정보
  • 물리 메모리(kernel이 관리하는 낮은 주소)에 저장
  • Key 값: VPN

PTE(페이지 테이블 항목)

페이지 테이블을 구성하는 원소 (테이블의 행)
  • 물리 주소로의 변환 정보와 다른 필요한 정보를 저장
  • PTE 개수 = 가상 주소 크기 / 페이지 크기
  • 구성 요소
    • PFN
    • Valid bit: 유효 여부
    • Protection bit: 읽거나 쓰거나 실행될 수 있는지 표시
    • Present bit: 물리 메모리에 있는지 디스크에 있는지 표시
    • Dirty bit: 메모리에 반입된 적 있는지 여부
    • Reference bit: 메모리에 참조(읽거나 쓰기)한 적 있는지 여부

PTBR(Page Table Base Register)

페이지 테이블 시작주소를 담고 있는 레지스터
  • MMU에 존재

 

더 빠른 변환

TLB (변환 색인 버퍼)

- 자주 참조되는 가상 주소-실주소 변환 정보를 저장하는 하드웨어 캐시
- 주소 변환 캐시
  • MMU에 존재
  • 주소 변환을 빠르게 함 ➡️ 성능 문제 해결
  • 하드웨어적으로 TLB를 한꺼번에 조회(Fully Associatvie)
  • TLB Hit/Miss
    • TLB에 VPN 존재 여부를 검사
  • Locality
    • Temporal Locality(시간 지역성): 최근에 접근된 명령어 또는 데이터는 곧 다시 접근될 확률이 높다는 사실에 근거
    • Spatail Locality(공간 지역성): 프로그램이 메모리 주소를 읽거나 쓰면, 인접한 메모리 주소를 접근할 확률이 높다는 사실에 근거

 

TLB Miss 처리

1. 하드웨어적

  • Trap 없이 하드웨어 자체 회로에서 TLB 등록

2. 소프트웨어적

  • Trap 발생
  • Trap Handler에서 또 TLB Miss가 나면 무한 반복되고 빠져나갈 방법이 없음.
    • 해결 방법
      1. Unmap: Trap 핸들러를 물리 메모리에 위치 시킨다.
      2. Wired(연결): TLB의 일부를 Trap 핸들러 코드 주소를 저장하는데 영구히 할당
      ➡️ TLB 핸들러는 항상 TLB에서 Hit
  • Mips는 Kernel Mode에서 TLB를 수정할 수 있는 명령어 집합을 가지고 있음.

TLB 문제

💡 문맥 교환

  • 새로운 프로세스에서 이전에 실행하던 프로세스의 변환 정보를 사용하지 않도록 주의해야 한다.
    • 해결 방법
      1. 기존 TLB 내용 비우기
        • 문맥 교환 시, Valid bit를 0으로 설정 ➡️ 문맥 교환이 빈번히 발생하면, 성능에 큰 부담
      2. 주소 공간 식별자(ASID) 필드 추가
      3. 코드 페이지 공유 ➡️ 프로세스가 사용하는 물리 페이지 수를 줄일 수 있다.

 

더 작은 테이블

Hybrid & Multi Level Paging

하이브리드 페이징

: 페이징과 세그먼트 조합

  • Segment Table
    • MMU에 존재

❗ 문제

  • 빈 공간이 많은 Heap의 경우 페이지 테이블 낭비
  • 페이지 테이블의 다양한 크기 ➡️ 외부 단편화

 

멀티 레벨 페이징

: 페이지 테이블을 페이지 크기의 단위로 나눈다.

  • 개수 = 페이지 크기 / PDE 혹은 PTE 크기
  • 페이지 디렉터리라는 자료 구조를 사용하여 페이지 테이블 각 페이지의 할당 여부와 위치 파악한다.
  • 한 페이지 당 PTE 개수 = 페이지 크기 / PTE 크기

 

▷ PDE(페이지 디렉터리 항목)

  • 페이지 테이블의 한 페이지를 나타낸다.
  • 페이지 테이블을 페이징한 페이지 테이블의 엔트리

▷ PDBR(Page Directory Base Register)

  • 페이지 디렉터리 시작주소를 담고 있는 레지스터
    • MMU에 존재

▷ 장단점

  • 장점
    • 사용자 주소 공간의 크기에 비례하여 페이지 테이블 공간 할당
    • 페이지 테이블을 페이지 크기로 분할하여 메모리 관리가 유용
  • 단점
    • Level이 높을수록 메모리 access 횟수 증가 → 추가 비용 발생
    • 복잡도

 


※ 국민대학교 소프트웨어학부 황선태 교수님의 운영체제 교과목을 공부하며 정리한 내용입니다.

728x90
반응형

'OS' 카테고리의 다른 글

[OS] Concurrency and Threads  (0) 2024.03.31
[OS] Beyond Physical Memory  (0) 2024.03.30
[OS] Free-Space Management  (1) 2024.03.29
[OS] Segmentation  (1) 2024.03.29
[OS] Address Space & Address Translation  (2) 2024.03.29
'OS' 카테고리의 다른 글
  • [OS] Concurrency and Threads
  • [OS] Beyond Physical Memory
  • [OS] Free-Space Management
  • [OS] Segmentation
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (193)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (5)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    완전 탐색
    스택
    제주해커톤
    디지랩챌린지
    heap
    디지털혁신
    제주지역혁신플랫폼지능형서비스사업단
    exhaustive search
    기술로바꾸는세상
    큐
    힙
    Stack
    Queue
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[OS] Paging
상단으로

티스토리툴바