페이징(Paging)
: 프로세스의 가상 주소 공간을 고정적인 크기로 나누어서 메모리에 할당하는 방식
Page
: 고정적인 크기 단위
Page Frame
가상 공간의 page를 실제 메모리에 할당할 때
- 가상 메모리에서는 page, 실제 메모리에서는 frame이라고 불리는 고정 크기의 공간으로 프로세스를 실행
-> 각각의 페이지는 물리 메모리의 프레임과 매핑
- 페이지를 연속적으로 배치하지 않고 분할하기 때문에 외부 단편화가 발생하지 않음
- 페이지는 고정 분할 방식으로 각 페이지의 사이즈는 고정
-> 프로세스는 메모리에 여유가 발생할 때마다 Physical Memory 영역에 할당할 수 있게 됨으로써 외부 단편화 문제가 없음
- 프로세스를 실행하기 위해 모든 페이지가 적재될 필요가 없음
-> 물리 메모리보다 큰 프로세스도 실행될 수 있음

1. Page Table
: 프로세스의 페이지들은 메모리 프레임에 조각나서 위치해있기 때문에, 이를 하나의 프로세스로 linear 수행하기 위해서 물리적 주소의 값을 찾아주는 역할을 함
- 각 프로세스마다 페이지 테이블을 가지고 있으며 배열 형태를 가짐
- 가상 주소 공간의 page가 실제 메모리에 어디에 위치해 있는지 기록
- OS 메모리의 영역에 저장됨
- 프로세스별 구조(Per-Process Structure)
cf) Logical Memory vs Physical Memory
▶ Logical Memory
: CPU에 의해 생성되는 주소
▶ Pysical Memory
: RAM에 실질적으로 로드되는 주소
외부 단편화
: 총 메모리 공간을 계산했을 떄 요청을 처리할 만한 충분한 메모리가 있음에도 불구하고, 가능한 공간들이 연속적이지 않아 프로세스를 할당할 수가 없는 문제
- 프로세스는 실행이 되면 메모리에 올라가게 됨
- 프로세스는 연속적으로 배치가 됨 (Contiguous allocation) -> 프로세스를 쪼개서 배치할 수 없음
- 새로운 프로세스가 들어갈 수 있는 자리가 있음에도 할당되지 못하고 대기하게 되는 문제 발생
내부 단편화
: 프로세스를 페이지로 분할하는 과정에서 남는 과정이 발생하는 것
- 외부 단편화에 비해 남는 공간이 얼마 되지 않기 때문에 외부 단편화보다 훨씬 효율적
-> 거의 100%에 가깝게 메모리를 효율적으로 사용할 수 있음

2. 장점
1) Flexibility : 주소 공간의 추상화를 효율적으로 지원
- 얼마나 heap이 커지고 사용하는지에 대한 고민을 할 필요가 없음-
2) Simplicity : 여유 공간 관리가 쉬움
- 가상 메모리의 page와 page frame이 같은 크기를 가짐
- 할당이 쉽고 여유 공간을 유지
3. 주소 변환(Address Translation)
- 가상 주소 공간에는 2가지 요소가 존재
- VPN (Virtual Page Number) : 상위 2개의 bit이 page를 표현
- Offset (Page안에 있는 Offset) : 나머지 4개의 bit이 offset을 표현

- Page Table을 통해서 Virtual Page, Physical Page Frame의 i번 때를 찾음
- Offset을 통해 그 Page 안에 몇 번째 메모리 주소인지 찾음
4. Problem
1) Page Table은 가변 크기 할당에서 사용하던 segment table, base, bound 레지스터를 사용하는 것보다 필요한 크기가 훨씬 커질 수 있음
-> 각각의 프로세스를 위한 Page Table은 OS 가상 메모리에 저장됨
2) 메모리 접근이 너무 잦아져서 성능 저하를 일으킬 수 있음
- 원하는 PTE의 위치를 찾으려면 Page Table의 시작 위치가 필요함
- 모든 메모리 참조에 대해 페이징을 수행하려면 OS에서 하나의 추가 메모리 참조를 수행해야 함
- 메모리에서 데이터를 가지고 오는데 주소 변환 정보를 알아야 하므로 추가적인 메모리 접근이 필요함
-> 문제를 보완하기 위해서 TLB가 방법이 나옴
cf) PTE
: Page Table에서 각 Page의 정보
Reference
'운영체제' 카테고리의 다른 글
13. TLB(Translation Look-aside Buffer) (0) | 2025.02.10 |
---|---|
12. 가상 메모리 & 요구 페이징 & 페이지 교체 (0) | 2025.02.10 |
10. 세그멘테이션(Segmentation) (0) | 2025.01.23 |
9. 주소 변환(Address Translation) (0) | 2025.01.23 |
8. 주소 공간과 가상 메모리(Address Space, Virtual Memory) (0) | 2025.01.23 |