불연속할당 기법은 하나의 프로세스가 물리적 메모리의 여러 위치에 분산되어 올라갈 수 있는 메모리 할당 기법을 말한다.
페이징은 프로세스의 주소 공간을 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 위치에 페이지들을 저장하는 방식을 말한다.
물리적 메모리를 페이지와 동일한 크기의 프레임으로 미리 나누어둔다. 왜냐하면 메모리에 올리는 단위가 동일한 크기의 페이지 단위이므로 메모리를 같은 크기로 미리 분할해두더라도 빈 프레임이 있다면 어떤 위치이든 사용될 수 있기 때문이다. 따라서 페이징 기법에서 동적 메모리 할당 문제가 발생하지 않는다.
페이징 기법은 외부 단편화 문제는 발생하지 않지만 내부 단편화 문제는 발생한다.
물리적 메모리에 올리는 위치가 각각 다르므로 논리적 주소를 물리적 주소로 변환하는 작업이 페이지 단위로 이루어져야 한다. 즉, 특정 프로세스의 몇 번째 페이지가 물리적 메모리의 몇 번째 프레임에 들어 있다는 페이지별 주소 변환 정보를 유지하고 있어야 한다.
페이징 기법에서는 모든 프로세스가 각각의 주소 변환을 위한 페이지 테이블(page table)
을 가지며 이 테이블은 프로세스가 가질 수 있는 페이지 개수만큼 주소 변환 엔트리를 가지고 있게 된다.
주소 변환 기법
논리적 주소는 페이지 번호(p)와 페이지 오프셋(d)로 나누어 주소 변환에 사용된다.
물리적 주소는 프레임 번호(f)와 프레임 오프셋(d)로 나눠져 있다.
페이지 테이블의 구현
페이지 테이블은 페이징 기법에서 주소 변환을 하기 위한 자료구조로 물리적 메모리에 위치해 있다.
메모리에 한 번 접근하기 위해서 매번 메모리에 두 번 접근해야되므로 오버헤드가 생기게 된다.
따라서 오버헤드를 줄이고 메모리의 접근 속도를 향상시키기 위해 TLB(Translation Look-aside Buffer)
라고 불리는 고속의 주소 변환용 하드웨어 캐시가 사용된다.
TLB에는 모든 정보를 담을 수 없어서 자주 참조되는 페이지에 대한 주소 변환 정보만 담는다. 따라서 요청되는 페이지에 대한 주소 변환 정보가 TLB에 있을 수도 있고 없을 수도 있다. 따라서 TLB에는 페이지 번호와 이에 대응하는 프레임 번호가 쌍으로 저장되어야 한다.
또한 TLB에 있는지 확인하기 위해 모든 항목들을 탐색하는데에 오버헤드가 생긴다. 이 오버헤드를 줄이기 위해 병렬탐색이 가능한 연관 레지스터(associative register)가 사용된다.