눈팅하는 게임개발자 블로그

Page 본문

공부한거/운영체제

Page

Palamore 2020. 9. 23. 15:53

페이징 기법

프로세스의 주소 공간과 물리 메모리를 페이지 단위로 분할하고

프로세스의 각 페이지를 물리 메모리의 프레임에 분산 할당하고 관리하는 기법.

논리 주소의 물리 주소로의 변환은 CPU에 내장되어 있는 MMU(memory management unit)에 의해 이루어진다.

 

페이지와 프레임

프로세스의 주소 공간을 동일한 크기의 페이지(page)로 나눈다.

물리 메모리 역시 동일한 크기로 나누고, 이를 프레임(frame)이라고 부른다.

코드, 데이터, 스택, 힙 등의 메모리 구성요소에 관계없이 고정 크기로 분할한 물리적 단위.

페이지와 프레임에 번호를 붙이며 페이지의 크기는 보통 4KB, 운영체제마다 다르게 설정 가능.

페이지 테이블 : 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블.

프로세스의 주소 공간을 n개의 페이지로 나누고

해당 프로세스의 페이지 테이블에 프레임 번호가 저장되어 있음.

논리 주소의 물리 주소 변환 개념

 

페이징 구현

페이징 구현은 CPU, 운영체제의 지원을 통해 이루어진다.

페이지 테이블이 페이지와 프레임을 매핑하는데,

CPU에서 해당 페이지 테이블의 메모리 주소를 가진 레지스터를 통해 페이지 테이블을 관리할 수 있다.

또한 CPU 내부의 MMU(Memory Management Unit)가

offset이 해당 프레임(페이지)의 크기를 넘어서는가를 체크하여 메모리를 보호하며

페이지 테이블에 값을 저장하고 검색하는 빠른 캐시를 포함하고 있다.

 

운영체제에는 프레임의 동적 할당/반환 및 페이지 테이블 관리 기능이 구현되어 있고

프로세스의 생성/소멸에 따라 동적으로 프레임 할당/반환.

물리 메모리에 할당된 페이지 테이블과 빈 프레임 리스트 생성, 관리 유지.

컨텍스트 스위칭 시 CPU의 레지스터에 적절한 값 로드.

컴파일러, 링커, 로더 지원 등의 지원을 한다.

 

페이징의 성능을 떨어트리는 2가지 문제.

1. 한 번의 메모리 액세스를 위해 두 번의 물리 메모리 액세스가 필요하다.

논리 주소를 물리 주소로 바꾸기 위한 페이지 테이블 액세스(1회)

찾아낸 물리 주소에 액세스(2회)

해결 방법 : TLB(Translation Look-aside Buffer) 활용.

TLB는 주소 변환 캐시라고도 불리는데.

최근에 접근한 페이지와 프레임 번호의 쌍을 항목으로 저장하는 캐시 메모리이다.

현대 컴퓨터에서는 대부분 MMU의 내부에 존재한다.

접근할 페이지가 TLB 캐시 리스트에 존재하면 페이지 테이블에 액세스 하지 않고

바로 실제 데이터(물리 주소)에 액세스 할 수 있다.

 

 

2. 대부분의 페이지 테이블 항목이 비어있기 때문에 페이지 테이블이 낭비된다.

실제 프로세스가 사용하는 메모리는 그리 크지 않기 때문에

실제 활용되는 페이지 테이블의 비율은 매우 낮다.

해결 방법

- 역 페이지 테이블(inverted page table)

(프로세스 번호, 페이지 번호, 프레임 번호) 의 포맷을 가지는 해시 테이블 구성.

시스템에 하나의 해시 테이블, 사용중인 각 프레임에 대해 페이지 테이블 항목 생성

(프로세스 번호, 페이지 번호)를 키로 해시 검색하여 프레임 번호를 알아내는 방식.

- 멀티 레벨 페이지 테이블(multi-level page table)

페이지 테이블을 하나의 페이지에 넣고 페이지 테이블을 가리키는 페이지 구성

사용중인 페이지들에 대해서만 페이지 테이블 구성.

 

 

 

 

 

 

'공부한거 > 운영체제' 카테고리의 다른 글

DeadLock(교착상태)  (0) 2020.10.29
Demand Paging  (0) 2020.09.23
스레드 동기화  (0) 2020.09.23
CPU 스케줄링  (0) 2020.09.23
Process  (0) 2020.09.22