비균등 고정 분할 기법 -> 내부 단편화
내부 단편화
분할된 메모리 조각의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 들어가기엔 부족해서 사용할 수 없는 상태
가변크기 분할 기법 -> 외부 단편화
외부 단편화
남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상
이를 보완하기 위한 방법 => 페이징
주기억장치를 비교적 작은 고정 사이즈 파티션 (프레임) 으로 나누고 각 프로세스 또한 같은 크기의 고정 조각 (페이지) 으로 나눔
각 프로세스마다 하나의 페이지 테이블(page table) 유지
- 페이지 테이블은 프로세스의 각 페이지들에 해당하는 프레임의 위치 관리
- 프로그램 안에서 각 논리 주소는 페이지 번호와 페이지 내의 오프셋으로 구성
- 논리주소는 프로그램의 시작 위치로부터의 상대적인 값(페이지 번호 + 오프셋) 으로 처리기는 그 논리주소를 물리주소(프레임 숫자 + 오프셋)로 변환
외부단편화로 인한 메모리 낭비 X + 내부단편화로 인한 낭비도 마지막 페이지에서만 발생
프로세스별로 필요한 페이지만큼 빈 프레임에 적재하고 중간에 Swap out된다 하더라도 남은 프레임에 순서대로 채워넣기
- 논리주소로 되어있기 때문에 가능
한 프로그램이 하나 이상의 파티션을 차지할 수 있으며, 이 파티션들이 반드시 연속일 필요는 없다는 점이 중요
페이징 기법이 편리하게 사용되기 위한 방법
- 페이지/프레임 크기를 2의 거듭제곱으로 만듦
=> 프로그램의 시작 위치로부터의 상대 주소와 페이지 번호와 오프셋으로 표현되는 논리 주소가 같음을 알 수 있음
- 10개 비트가 오프셋으로 사용되고 나머지 6비트가 페이지 번호
- 주소가 16비트, 페이지 크기가 1K(1024 바이트)라고 할 때 개의 1K 페이지로 구성될 수 있음.
- 2의 거듭제곱으로 만들 때 장점
- 논리 주소가 상대 주소와 동일해 프로그래머, 어셈블러, 링커에게 투명함
- 수행 중에 동적 주소 변환을 담당할 하드웨어 기능 구현이 쉬움