페이징
고정된 크기로 주소 공간을 나누는 메모리 관리 기법
➡️ 메모리 관리가 쉬워짐.
➡️ 외부 단편화 발생 X
➡️ 내부 단편화는 발생 가능
|
페이지 테이블
- 가상 페이지에 대한 물리 메모리 위치 기록을 위한 자료 구조
- 프로세스의 주소를 변환한 정보
- 물리 메모리(kernel이 관리하는 낮은 주소)에 저장
- Key 값: VPN
PTE(페이지 테이블 항목)
페이지 테이블을 구성하는 원소 (테이블의 행)
- 물리 주소로의 변환 정보와 다른 필요한 정보를 저장
- PTE 개수 = 가상 주소 크기 / 페이지 크기
- 구성 요소
- PFN
- Valid bit: 유효 여부
- Protection bit: 읽거나 쓰거나 실행될 수 있는지 표시
- Present bit: 물리 메모리에 있는지 디스크에 있는지 표시
- Dirty bit: 메모리에 반입된 적 있는지 여부
- Reference bit: 메모리에 참조(읽거나 쓰기)한 적 있는지 여부
PTBR(Page Table Base Register)
페이지 테이블 시작주소를 담고 있는 레지스터
- MMU에 존재
더 빠른 변환
TLB (변환 색인 버퍼)
- 자주 참조되는 가상 주소-실주소 변환 정보를 저장하는 하드웨어 캐시
- 주소 변환 캐시
|
|
TLB Miss 처리
1. 하드웨어적
- Trap 없이 하드웨어 자체 회로에서 TLB 등록
2. 소프트웨어적
- Trap 발생
- Trap Handler에서 또 TLB Miss가 나면 무한 반복되고 빠져나갈 방법이 없음.
- 해결 방법
- Unmap: Trap 핸들러를 물리 메모리에 위치 시킨다.
- Wired(연결): TLB의 일부를 Trap 핸들러 코드 주소를 저장하는데 영구히 할당
- 해결 방법
- Mips는 Kernel Mode에서 TLB를 수정할 수 있는 명령어 집합을 가지고 있음.
TLB 문제
💡 문맥 교환
- 새로운 프로세스에서 이전에 실행하던 프로세스의 변환 정보를 사용하지 않도록 주의해야 한다.
- 해결 방법
- 기존 TLB 내용 비우기
- 문맥 교환 시, Valid bit를 0으로 설정 ➡️ 문맥 교환이 빈번히 발생하면, 성능에 큰 부담
- 주소 공간 식별자(ASID) 필드 추가
- 코드 페이지 공유 ➡️ 프로세스가 사용하는 물리 페이지 수를 줄일 수 있다.
- 기존 TLB 내용 비우기
- 해결 방법
더 작은 테이블
Hybrid & Multi Level Paging
하이브리드 페이징
: 페이징과 세그먼트 조합
- Segment Table
- MMU에 존재
❗ 문제
- 빈 공간이 많은 Heap의 경우 페이지 테이블 낭비
- 페이지 테이블의 다양한 크기 ➡️ 외부 단편화
멀티 레벨 페이징
: 페이지 테이블을 페이지 크기의 단위로 나눈다.
|
▷ 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 |