운영체제

11. 페이징(Paging)

ggomjiu 2025. 2. 10. 02:41

페이징(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

https://erinh.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%ED%8E%98%EC%9D%B4%EC%A7%95-Paging