Paging & Segmentation
외부 단편화 : 물리적 메모리의 빈 공간으로 인해 발생하는 문제 내부 단편화 : 할당된 메모리의 내부 공간이 비효율적으로 사용되는 문제
Paging
→ 프로세스의 주소 공간을 고정된 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식
- 물리적 메모리를 고정된 크기 블록인
Frame
으로 분할하고, 논리적 메모리를 동일한 크기의Page
로 분할 - 논리적 주소를 페이지 번호와 오프셋으로 나타냄
- 페이지와 프레임을 대응시키는 page mapping 과정 필요
- 페이지 테이블에 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소 저장
- 구현이 간단하여 효율적인 메모리 사용 가능
- 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결
- 프로세스의 크기가 페이지 크기의 배수가 아닐 경우 마지막 페이지에 내부 단편화 발생
Segmentation
→ 프로세스를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하여 메모리에 연속적으로 할당하는 방식
- 메모리를 가변 크기의
segment
로 분할 - 각 세그먼트는 프로그램의 논리적 단위에 해당 (함수, 데이터 구조 등)
- 논리적 주소는 세그먼트 번호와 오프셋으로 나타냄
- 세그먼트의 크기가 서로 다르기에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당
- mapping을 위한 segment table 필요
- 프로세스가 필요한 메모리 공간만큼 메모리를 할당하기에 내부 단편화 발생 X
- 중간에 메모리를 해제하면 외부 단편화 발생
references
👉 https://cocoon1787.tistory.com/860