CS/운영체제

가상 메모리 개념 - 페이징 시스템

:_: 2022. 2. 24. 14:54

 

페이징 시스템 (paging system)

 

가상 메모리는 하나의 프로세스에서 특정 시간동안 쓰는 영역은 일부분이므로 일부분만 메모리에 올려놓자.

어느 정도 크기만큼 메모리에 올려야 될까?   → 페이징 이라는 단위로

 

페이징 개념

- 크키가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리

- 하드웨어 지원이 필요 

- 리눅스에서 4KB로 paging

- 페이지 번호를 기반으로 가상 주소와 물리주소간 매핑 정보가 있음

 

페이징 시스템 구조

- page 또는 page frame : 고정된 크기의 block (4KB)

- paging system

  • 가상 주소 v = (p,d)
    • p : 가상 메모리 페이지 
    • d : p 안에서 참조하는 위치(변위)

- 페이지 크기가 4KB 예

   1) 가상 주소의 0비트에서 11비트가 변위 (d)를 나타내고,

   2) 12비트 이상이 페이지 번호가 될 수 있음

 

 페이징 가상주소에 대한 물리주소 + d(변위) = 실제 물리 메모리에 있는 해당 데이터의 위치를 있음

 

페이지 테이블(page table)

  • 물리 주소에 있는 페이지 번호와 해당 페이지의 물리주소 정보를 매핑한
  • 가상 주소 v = (p,d) 라면
    • p : 페이지 번호
    • d : 페이지 처음부터 얼마 떨어진 위치인지
  • paging system 동작
    • 해당 프로세스에서 특정 가상 주소 엑세스를 하려면
      • 해당 프로세스의 page table( PCB page table 주소(base 주소) + 페이지번호 -> page table page : 물리주소+변위 ) 해당 가상 주소가 포함된 page 번호가 있는지 확인
      • page 번호가 있으면 이 page가 매핑된 첫 물리 주소를 알아내고(p')
      • p' + d 가 실제 물리 주소가 됨

페이징 시스템과 MMU(컴퓨터 구조)

  •  CPU는 가상 주소 접근
    • MMU 하드웨어 장치를 통해 물리 메모리 접근
  • 프로세스 생성시, 페이지 테이블 정보 생성
    • PCB 등에서 해당 페이지 테이블 접근 가능하고 관련 정보는 물리 메모리에 적재
    • 프로세스 구동 시, 해당 페이지 테이블 base 주소가 별도 레지스터에 저장(CR3)
    • CPU가 가상 주소 접근 시, MMU가 페이지 테이블 base 주소를 접근해서 물리주소 가져옴

 

다중 단계 페이징 시스템

- 32bit 시스템에서 4KB 페이지를 위한 페이징 시스템은 

  • 하위 12bit 오프셋, 상위 20bit가 페이징 번호이므로, 2의 20승(1048576)개의 페이지 정보가 필요

- 페이징 번호를 단계를 나누어 생성

  • 페이지 디렉토리를 만들고 필요없는 페이지는 생성하지 않으면 공간 절약 가능

- 페이지 번호를 나타내는 bit 구분해서 단계를 나눔 (리눅스는 3단계, 최근 4단계 나누어 처리)

CR3 레지스터에 전체 페이지 테이블 맨 앞이 페이지 디렉토리를 가리키므로 페이지 테이블 맨 앞으로 들어가게 된다.

 

MMU와 TLB(컴퓨터 구조)

- MMU 물리 주소를 확인하기 위해 메모리를 갔다와야 함.

- TLB : 페이지 정보 캐쉬

→ 어떻게 MMU 동작? CPU 가상메모리 요청(①하면 MMU CR3 레지스터에 값을 가지고 페이지 테이블에 들어가게 되고(②) 물리주소를 가져오고(③) 물리주소에 MMU 접근해(④) 해당 페이지에 해당Data CPU에전달(⑤)

 

 페이지 테이블에 가기 위해 CR3 레지스터, 물리주소 요청하는 시간이 많이 걸림.

TLB (캐쉬 보조 하드웨어) 사용

 

가상 주소를 요청하면  CR3 레지스터에 가서 물리주소를 얻게 되는데

 

한번 접근해 변환이 물리주소는 TLB 저장

MMU 단계에서 TLB 해당 물리주소가 있는지 먼저 확인, 있다면 ②,③ 하지 않아도

 

페이징 시스템과 공유 메모리 

- 프로세스간 동일한 물리 주소를 가리킬 있음 (공간절약, 메모리 할당 시간 절약)

프로세스 a 와 프로세스 b 의 노란색 공간이 공유되는 공간이라고 가정

 물리 메모리에는 별도의 공간으로 따로 놓지 않고 하나만 가져다 놓고 페이지 테이블에서 주소를 변환할때 해당 물리주소만 동일하게 가리키도록하면 메모리 두 배로 사용x

 

- 물리 주소 데이터 변경시

 : 물리 주소 데이터 수정 시도시, 물리 주소를 복사 있음(copy-on-write)

 

 

요구 페이징 (Demand Paging 또는 Demanded Paging)

  • 프로세스 모든 데이터를 메모리로 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재함
    • 선행 페이징(anticipatory paging) - 미리 프로세스 관련 모든 데이터를 메모리에 올려놓고 실행하는 반대 개념
    • 이상 필요하지 않은 페이지 프레임은 다시 저장매체에 저장(페이지 교체 알고리즘 필요)

페이지 폴트(page fault)

- 어떤 페이지가 실제 물리 메모리에 없을 일어나는 인터럽트

- 운영체제가 page fault 일어나면, 해당 페이지를 물리 메모리에 올림

 

- 페이지 폴트가 자주 일어나면? 실행되기 전에, 해당 페이지를 물리 메모리에 올려야 함(시간이 오래 걸림)

- 페이지 폴트가 안 일어나게 하려면?

  : 향후 실행/참조될 코드/데이터를 미리 물리 메모리에 올리면 됨(앞으로 있을 일을 예측해야 함 - 신의 영역)

 

 

 

제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.
728x90