1. 페이징 개념
페이징(Paging)은 프로세스의 논리 주소 공간(Logical Address Space)을 같은 크기의 페이지(Page)로 나누고,
물리 메모리를 같은 크기의 프레임(Frame)으로 나누어 매핑하는 메모리 관리 방식 의미. [1][2][3]
이 방식에서는 프로세스의 각 페이지가 물리 메모리의 연속되지 않은 여러 프레임에 적재될 수 있음. [1][2][3]
즉, 프로세스는 논리적으로는 연속된 주소 공간을 사용하지만,
실제 물리 메모리에서는 분산된 위치에 저장될 수 있는 구조.
2. 논리 주소와 물리 주소
CPU가 생성하는 주소는 논리 주소(Logical Address)이며,
실제 메모리 하드웨어가 사용하는 주소는 물리 주소(Physical Address) 의미. [2]
실행 시간 주소 바인딩 환경에서는 논리 주소와 가상 주소(Virtual Address)를 같은 뜻으로 사용하는 경우가 많음. [2]
사용자 프로그램은 논리 주소를 기준으로 동작하고,
이 논리 주소를 물리 주소로 변환하는 작업은 MMU(Memory Management Unit)와 페이지 테이블(Page Table)이 담당함. [2][3]
3. 페이지 테이블과 주소 변환
페이징에서는 논리 주소를 보통 다음 두 부분으로 나누어 해석.
- 페이지 번호(Page Number)
- 오프셋(Offset)
페이지 번호는 페이지 테이블의 인덱스로 사용되고,
페이지 테이블은 해당 페이지가 적재된 프레임 번호(Frame Number)를 저장함. [2][3]
이후 프레임 번호 + 오프셋을 결합하여 최종 물리 주소를 구함. [2][3]
정리하면 주소 변환 흐름은 다음과 같음.
- CPU가 논리 주소 생성
- 논리 주소를 페이지 번호 + 오프셋으로 분리
- 페이지 번호로 페이지 테이블 조회
- 대응되는 프레임 번호 확인
- 프레임 번호와 오프셋을 합쳐 물리 주소 생성
4. 페이징과 메모리 단편화
페이징의 장점은 외부 단편화(External Fragmentation)를 없애거나 매우 크게 줄인다는 점.
고정 크기 프레임 단위로 할당하므로, 연속된 큰 빈 공간을 찾기 위해 메모리를 재배치할 필요가 없기 때문. [1][3]
반면, 내부 단편화(Internal Fragmentation)는 발생 가능. [1][3]
이유는 프로세스 크기가 페이지 크기의 정확한 배수가 아닐 수 있기 때문.
이 경우 마지막 페이지 내부에 사용되지 않는 공간이 남을 수 있음. [1][3]
즉,
- 외부 단편화: 페이징에서는 발생하지 않거나 매우 크게 완화됨 [1][3]
- 내부 단편화: 마지막 페이지에서 발생 가능 [1][3]
5. 왜 중요한가
페이징은 프로세스를 반드시 연속된 물리 메모리 공간에 배치하지 않아도 되므로
메모리 할당이 쉬워지고, 현대 운영체제의 가상 메모리 구조를 이해하는 기본 개념이 됨. [1][2][3]
면접에서는 다음 두 가지를 연결해서 설명하면 정리가 잘 됨.
- 논리 주소와 물리 주소는 다를 수 있음
- 페이지 테이블을 통해 논리 주소가 물리 주소로 변환됨
핵심 정리
페이징
- 논리 주소 공간을 페이지, 물리 메모리를 프레임으로 나누는 방식
- 각 페이지는 물리 메모리의 비연속적인 프레임에 저장 가능
주소 변환
- 논리 주소는 페이지 번호와 오프셋으로 구성
- 페이지 테이블이 페이지 번호를 프레임 번호로 변환
단편화
- 외부 단편화는 없거나 매우 크게 완화됨
- 내부 단편화는 마지막 페이지에서 발생 가능
참고 자료
- KOCW, 운영체제 강의자료
https://contents.kocw.or.kr/KOCW/document/2015/cup/weonsunghyun/7.pdf - University of Wisconsin-Madison, CS 537 Notes, “Paging”
https://pages.cs.wisc.edu/~bart/537/lecturenotes/s16.html - University of Illinois Chicago, Operating Systems Notes, “Logical Versus Physical Address Space” / “Paging”
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMemory.html - Johns Hopkins University, Operating Systems Slides, “Paging”
https://www.cs.jhu.edu/~yairamir/cs418/os5/tsld022.htm