페이징과 세그먼테이션 개요

운영체제는 프로세스를 메모리에 올릴 경우, 프로세스를 통째로 연속된 메모리에 올려놓는 일은 거의 없다.

예를 들면 현재 물리 메모리가 아래의 그림처럼 있을 경우, 90MB의 빈 공간이 있지만 연속되어 있지 않아 80MB 크기의 프로세스를 통째로 올릴 수가 없다.

스크린샷 2023-06-18 오후 4.55.23.png

OS는 이러한 문제를 해결하기 위해, 효율적으로 프로세스를 할당하기 위한 기법을 도입했다.

페이징이란?

물리 메모리를 동일한 크기로 조각낸다. → 이때, 하나의 조각을 페이지라고 함!

메모리에 올릴 프로세스도 페이지와 동일한 크기만큼 조각내서 물리 메모리에 저장한다.

스크린샷 2023-06-18 오후 4.56.56.png

페이징 덕분에 연속되어 저장될 필요없이 분산되어 저장이 가능하지만,

프로세스의 입장에서는 자신의 페이지들이 어디있는지 알아야 하기 위해 페이지 테이블에 기록한다.

페이징의 문제점

내부 단편화가 발생한다.

프로세스를 페이지 단위로 쪼개다보면 페이지 내부에는 안쓰는 공간이 생긴다.

예를 들어, 크기가 100인 프로세스를 크기가 30인 페이지로 관리하면 마지막 페이지는 20이 남는다.