6/14 페이징(Paging)

JK·2023년 6월 14일

페이징(Paging)의 문제점

페이징의 문제점 중의 하나가 페이지 테이블의 크기입니다. 페이지 테이블이 크면 많은 메모리 공간을 차지합니다. 배열 형태를 가지는 선형 페이지 테이블 (linear page table)을 예로 들어 봅시다. 전술한 바와 같이 선형 페이지 테이블은 상당히 커질 수가 있습니다. 페이지 크기가 4 KB(2^12 바이트) 이고, 페이지 테이블의 각 항목은 4바이트인 32비트 주소 공간(2^32 바이트)을 가정해 보자. 주소 공간에는 대략 백만 개의 가상 페이지가 존재할 것입니다. 여기에 페이지 테이블 항목의 크기를 곱하면 (4바이트 x 백만 개), 페이지 테이블의 크기가 됩니다. 하나의 페이지 테이블 크기가 약 4MB가 된다. 또 하나 잊으면 안되는 사실이 있다! 일반적으로 각 프로세스는 자기 자신의 페이지 테이블을 갖습니다. 백 개의 프로세스가 실행 중이라면 (현대 시스템에서 드물지 않습니다), 페이지 테이블이 100개 존재하며, 400 MByte의 메모리가 필요하다. 이런 엄청난 메모리 부담을 해결할 수 있는 다양한 해법들이 존재합니다.

더 큰 페이지

페이징에서 페이지 테이블은 가상 주소와 물리 주소 간의 매핑 정보를 저장하는 데이터 구조입니다. 페이지 테이블은 일반적으로 계층적인 구조로 구성되어 있고, 페이지 테이블의 크기는 주소 공간의 크기에 비례합니다. 이로 인해 큰 주소 공간을 가진 프로세스의 경우 페이지 테이블의 크기가 매우 커지는 문제가 발생할 수 있습니다.

이러한 페이지 테이블 크기의 문제를 해결하기 위해 나온 개념이 "더 큰 페이지"입니다. 더 큰 페이지는 일반적인 페이지보다 더 많은 주소 공간을 한 번에 표현하는 단위입니다. 일반적인 페이지의 크기는 보통 4KB로 설정되어 있지만, 더 큰 페이지는 2MB, 4MB 등의 크기를 가질 수 있습니다.

더 큰 페이지를 사용하면 페이지 테이블의 크기를 줄일 수 있습니다. 예를 들어, 2MB 페이지를 사용하면 4KB 페이지보다 훨씬 적은 개수의 페이지 테이블 엔트리가 필요하게 됩니다. 이는 페이지 테이블을 탐색하는 시간을 줄여주고, 메모리 접근 성능을 향상시킬 수 있습니다.

또한, 더 큰 페이지를 사용하면 페이지 테이블의 계층 구조도 단순화될 수 있습니다. 일반적인 페이지 테이블은 여러 수준의 계층으로 구성되어 있지만, 더 큰 페이지를 사용하면 계층 구조의 깊이를 줄일 수 있습니다. 이는 페이지 테이블의 접근 시간을 더욱 단축시켜줍니다.

더 큰 페이지를 사용하는 것은 페이지 테이블의 크기와 계층 구조의 복잡성을 줄이는 장점을 가지지만, 한편으로는 내부 단편화 문제가 발생할 수 있습니다. 작은 페이지 크기보다 큰 페이지를 사용하면, 페이지에 할당되는 메모리 공간이 페이지 크기에 맞춰져야 합니다. 따라서 작은 크기의 데이터가 큰 페이지에 저장되는 경우에는 내부 단편화가 발생하여 메모리의 낭비가 발생할 수 있습니다.

더 큰 페이지는 페이징 기법의 성능을 향상시키기 위한 방법 중 하나이며, 페이지 테이블 크기와 계층 구조의 단점을 해결할 수 있습니다. 그러나 페이지 크기 선택은 프로세스의 특성과 시스템 요구 사항에 따라 고려되어야 하며, 내부 단편화와의 트레이드오프를 고려해야 합니다.

하이브리드 접근 방법 : 페이징과 세그멘트

페이징과 세그멘테이션은 메모리 관리 기법으로, 가상 주소를 물리 주소로 매핑하는 데 사용됩니다. 하이브리드 메모리 관리 기법은 이 두 가지 기법을 조합하여 사용하는 방식을 말합니다.

세그멘테이션은 프로그램의 주소 공간을 서로 다른 크기의 논리적 세그먼트로 나누고, 각 세그먼트를 물리적으로 분할된 메모리 영역에 매핑합니다. 세그먼트는 프로그램의 논리적인 의미를 가지며, 코드, 데이터, 스택 등으로 구성될 수 있습니다. 이렇게 세그멘테이션을 사용하면 프로그램의 주소 공간을 논리적으로 구분하여 프로그램의 모듈성을 높일 수 있습니다. 하지만 세그멘테이션은 주소 공간 내에서 단편화 문제가 발생할 수 있습니다.

페이징은 프로그램의 주소 공간을 고정된 크기의 페이지로 나누고, 각 페이지를 물리적으로 분할된 페이지 프레임에 매핑합니다. 페이지는 동일한 크기를 갖고, 페이지 테이블을 통해 가상 주소와 물리 주소 간의 매핑을 수행합니다. 페이징은 주소 공간을 연속적인 페이지로 나누기 때문에 단편화 문제를 해결할 수 있습니다. 그러나 프로그램의 모듈성이 떨어지는 단점이 있을 수 있습니다.

하이브리드 메모리 관리 기법은 페이징과 세그멘테이션을 조합하여 사용하는 방식입니다. 일반적으로 하이브리드 메모리 관리 기법에서는 세그멘테이션 기법으로 주소 공간을 분할하고, 각 세그먼트 내에서 페이징 기법을 사용하여 페이지로 분할합니다. 이렇게 함으로써 세그멘테이션의 모듈성과 페이징의 단편화 해결 기능을 모두 활용할 수 있습니다.

하이브리드 메모리 관리 기법은 세그멘테이션의 유연성과 페이징의 효율성을 동시에 제공하여 메모리 관리의 성능을 향상시킬 수 있습니다. 프로그램의 주소 공간을 세그먼트로 구분하고, 각 세그먼트 내에서 페이지 테이블을 사용하여 페이지로 분할하여 관리함으로써 프로그램의 모듈성과 단편화 문제를 해결할 수 있습니다.

멀티 레벨 페이지 테이블

멀티 레벨 페이지 테이블은 페이지 테이블을 계층적으로 구성하여 페이지 테이블의 크기와 접근 시간을 최적화하는 방법입니다. 이 방법은 대부분의 가상 주소 공간을 표현하는 데 필요한 페이지 테이블 엔트리의 수를 줄여주는 장점이 있습니다.

멀티 레벨 페이지 테이블은 여러 개의 페이지 테이블을 사용하여 가상 주소를 물리 주소에 매핑합니다. 각 페이지 테이블은 다른 페이지 테이블을 가리키는 포인터로 구성됩니다. 이렇게 계층적으로 구성된 페이지 테이블은 큰 주소 공간을 효과적으로 표현할 수 있습니다.

일반적으로 멀티 레벨 페이지 테이블은 2단계 구조를 가지고 있습니다. 각 단계는 레벨이라고 불리며, 각 레벨은 페이지 테이블을 가리키는 포인터들로 구성됩니다. 가장 높은 레벨은 최상위 레벨 페이지 테이블이며, 가장 낮은 레벨은 페이지 테이블 엔트리를 가리키는 말단 레벨 페이지 테이블입니다.

페이지 테이블을 탐색하는 과정은 다음과 같습니다. 가상 주소는 페이지 디렉터리, 페이지 테이블, 페이지 테이블 엔트리의 순서대로 탐색하며, 각 단계에서 해당 레벨의 페이지 테이블 포인터를 사용하여 다음 단계의 페이지 테이블을 찾습니다. 최종적으로 페이지 테이블 엔트리에서 물리 주소를 얻게 됩니다.

멀티 레벨 페이지 테이블은 대부분의 프로세스가 사용하지 않는 주소 공간을 표현하는 데 불필요한 페이지 테이블 엔트리를 생성하지 않아도 됩니다. 이로 인해 페이지 테이블의 크기가 절약되며, 접근 시간도 단축됩니다. 또한, 페이지 테이블을 계층적으로 구성하기 때문에 메모리 접근을 위한 페이지 테이블 탐색 시간도 단축됩니다.

초보자가 이해하기 쉽게 설명하자면, 멀티 레벨 페이지 테이블은 주소 변환을 위한 페이지 테이블을 여러 개의 계층으로 나누어 관리하는 방법입니다. 이를 통해 주소 공간의 크기를 효율적으로 표현하고, 물리 메모리 접근 속도를 향상시킬 수 있습니다.

profile
^^

0개의 댓글