6-1. 페이징 (Paging)

1. 페이징의 개념과 배경

운영체제에서 메모리 관리는 매우 중요한 부분입니다. 컴퓨터는 제한된 물리 메모리(RAM)를 가지고 있지만, 실행되는 프로그램은 훨씬 더 많은 메모리를 필요로 할 수 있습니다. 이러한 문제를 해결하기 위해 다양한 메모리 관리 기법이 사용되는데, 그중 하나가 바로 페이징(Paging)입니다. 페이징은 가상 메모리 관리의 핵심 기술이며, 메모리 단편화 문제를 효과적으로 해결하여 시스템의 효율성을 높이는 데 기여합니다.

과거에는 메모리 할당을 위해 연속 메모리 할당 방식이 사용되었습니다. 이는 프로그램의 메모리 공간을 연속적인 블록으로 할당하는 방식입니다. 하지만 이 방식은 외부 단편화 문제를 발생시킨다는 단점이 있었습니다. 외부 단편화란, 사용 가능한 메모리 공간이 존재하지만, 작은 조각들로 흩어져 있어서 연속적인 공간을 필요로 하는 프로그램에게 할당할 수 없는 상황을 의미합니다. 이러한 문제는 메모리 낭비와 시스템 성능 저하로 이어집니다.

페이징은 이러한 외부 단편화 문제를 해결하기 위해 고안되었습니다. 페이징은 물리 메모리와 가상 메모리를 동일한 크기의 페이지(Page) 단위로 나누어 관리합니다. 각 페이지는 메모리 할당의 기본 단위가 되며, 프로그램의 주소 공간은 여러 개의 페이지로 나뉘어 물리 메모리의 페이지 프레임에 매핑됩니다.

2. 페이징의 동작 방식

페이징 시스템의 핵심은 가상 주소를 물리 주소로 변환하는 것입니다. 이 변환 과정은 MMU(Memory Management Unit)라는 하드웨어 장치를 통해 이루어집니다.

1) 페이지 테이블 (Page Table)

가상 주소를 물리 주소로 변환하기 위해, 각 프로세스는 페이지 테이블을 가지고 있습니다. 페이지 테이블은 가상 주소 공간의 각 페이지에 대응하는 물리 메모리의 페이지 프레임 정보를 저장합니다. 페이지 테이블은 운영체제가 관리하며, 각 프로세스 별로 별도로 존재합니다.

페이지 테이블의 각 항목은 페이지 번호와 페이지 프레임 번호(물리 메모리 주소)를 매핑하는 정보를 담고 있습니다. 추가적으로 접근 권한(읽기/쓰기/실행)과 같은 제어 비트도 포함될 수 있습니다.

2) 주소 변환 과정

프로세스가 메모리에 접근하려 할 때, MMU는 다음과 같은 과정을 통해 가상 주소를 물리 주소로 변환합니다.

  1. 가상 주소 분해: 가상 주소는 페이지 번호(Page Number)와 페이지 오프셋(Page Offset)으로 나뉩니다. 페이지 번호는 페이지 테이블의 인덱스로 사용되며, 페이지 오프셋은 페이지 내의 특정 위치를 지정합니다.

  2. 페이지 테이블 검색: MMU는 페이지 번호를 사용하여 페이지 테이블에서 해당 페이지에 대한 엔트리를 찾습니다.

  3. 페이지 프레임 번호 획득: 페이지 테이블 엔트리에서 해당 페이지가 매핑된 물리 메모리의 페이지 프레임 번호를 얻습니다.

  4. 물리 주소 생성: 페이지 프레임 번호와 페이지 오프셋을 결합하여 물리 주소를 생성합니다. 물리 주소는 페이지 프레임 번호 * 페이지 크기 + 페이지 오프셋으로 계산됩니다.

  5. 메모리 접근: 생성된 물리 주소를 사용하여 실제 메모리에 접근합니다.

주소 변환 과정 설명 뒤

3) TLB (Translation Lookaside Buffer)

페이지 테이블은 메모리에 저장되어 있기 때문에, 매번 메모리 접근 시 페이지 테이블을 참조하면 성능 저하가 발생할 수 있습니다. 이러한 문제를 해결하기 위해, MMU는 TLB(Translation Lookaside Buffer)라는 작은 캐시 메모리를 사용합니다. TLB는 최근에 사용된 페이지 테이블 엔트리를 저장하여 페이지 테이블 검색 시간을 줄입니다. TLB 히트 시, 페이지 테이블 접근 없이 주소 변환이 가능하므로 성능이 향상됩니다. TLB 미스 시에는 페이지 테이블을 참조하고, 해당 엔트리를 TLB에 추가합니다.

3. 페이징의 장점과 단점

1) 장점

페이징은 다음과 같은 장점을 가지고 있습니다.

  • 외부 단편화 해결: 물리 메모리를 고정 크기의 페이지 프레임으로 나누어 관리하므로 외부 단편화가 발생하지 않습니다. 사용 가능한 메모리 공간이 여러 조각으로 흩어져 있어도 페이지 단위로 할당 가능합니다.
  • 메모리 효율성 향상: 외부 단편화가 발생하지 않아 메모리 사용 효율이 높아집니다.
  • 쉬운 메모리 할당 및 해제: 페이지 단위로 메모리를 할당하고 해제하므로 메모리 관리 작업이 간단해집니다.
  • 가상 메모리 구현 용이: 페이징은 가상 메모리 구현의 핵심 기술입니다. 프로세스는 물리 메모리보다 큰 주소 공간을 가질 수 있으며, 필요에 따라 페이지를 디스크로 스왑(swap)하여 메모리 부족 문제를 해결할 수 있습니다.
  • 보안 강화: 각 페이지에 대한 접근 권한을 설정하여 메모리 보호를 강화할 수 있습니다.

2) 단점

페이징은 다음과 같은 단점도 가지고 있습니다.

  • 내부 단편화 발생: 페이지 크기보다 작은 메모리 공간을 할당받는 경우, 페이지의 남은 공간이 낭비될 수 있습니다. 이를 내부 단편화(Internal Fragmentation)라고 합니다.
  • 페이지 테이블 관리 오버헤드: 페이지 테이블을 관리하기 위한 메모리 공간이 필요하며, 페이지 테이블 검색으로 인한 성능 저하가 발생할 수 있습니다.
  • TLB 관리 오버헤드: TLB 히트율이 낮으면 TLB 관리에 따른 오버헤드가 증가할 수 있습니다.
  • 주소 변환 과정 복잡성: 가상 주소를 물리 주소로 변환하는 과정이 필요하며, MMU와 같은 하드웨어 지원이 필요합니다.

4. 내부 단편화와 외부 단편화 비교

페이징과 분할 방식(Contiguous Memory Allocation)과 같은 다른 메모리 할당 방식에서 발생하는 단편화를 비교해 보겠습니다.

  • 외부 단편화: 연속 메모리 할당 방식에서 발생하며, 사용 가능한 메모리 공간이 작은 조각들로 흩어져 있어서 연속적인 공간을 필요로 하는 프로그램에게 할당할 수 없는 상황을 의미합니다. 페이징은 외부 단편화를 해결합니다.
  • 내부 단편화: 페이징에서 발생하며, 페이지 크기보다 작은 메모리 공간이 할당될 경우, 페이지 내의 남은 공간이 낭비되는 현상을 의미합니다.

내부 단편화와 외부 단편화 비교 설명 뒤

구분 외부 단편화 내부 단편화
발생 원인 사용 가능한 메모리 공간이 조각나서, 연속적인 공간을 할당할 수 없는 경우 페이지 크기보다 작은 메모리를 할당할 경우, 페이지 내의 남은 공간이 낭비되는 경우
발생 방식 프로세스 할당/해제 과정의 반복으로 인해 발생 페이지 크기에 따라 결정됨
해결 방법 메모리 압축(Compaction), 페이징 페이지 크기 조절, 세그멘테이션과 같은 다른 메모리 관리 기법 사용
페이징에서의 영향 페이징은 외부 단편화를 해결합니다. 페이징은 내부 단편화를 발생시킬 수 있습니다. 페이지 크기가 클수록 내부 단편화의 정도가 커집니다.
연속 메모리 할당 연속 메모리 할당 방식에서는 외부 단편화가 발생할 수 있습니다. 메모리 압축(Compaction)을 통해 해결할 수 있지만, 오버헤드가 발생합니다. 연속 메모리 할당 방식에서는 내부 단편화가 발생하지 않습니다. 프로세스에 정확한 크기의 메모리를 할당할 수 있기 때문입니다.

5. 페이징의 실제 사용 사례

페이징은 현대 운영체제의 핵심 기술로서, 다양한 환경에서 활용됩니다.

  • 운영체제: Windows, Linux, macOS 등 대부분의 현대 운영체제는 페이징을 사용하여 메모리를 관리합니다. 페이징을 통해 가상 메모리를 지원하고, 시스템의 안정성과 효율성을 높입니다.
  • 가상 머신 (VM): VM은 물리적인 하드웨어 자원을 공유하여 여러 개의 운영체제를 실행하는 기술입니다. 페이징은 VM에서 각 게스트 운영체제에 독립적인 메모리 공간을 제공하고, 메모리 관리를 효율적으로 수행하는 데 기여합니다.
  • 데이터베이스: 대규모 데이터베이스 시스템에서 페이징은 데이터를 디스크에서 메모리로 로드하고 관리하는 데 사용됩니다. 이를 통해 데이터베이스의 성능을 향상시키고, 대용량 데이터를 효율적으로 처리할 수 있습니다.

6. 결론

페이징은 메모리 관리의 중요한 기법으로, 외부 단편화 문제를 해결하고 가상 메모리를 구현하는 데 핵심적인 역할을 합니다. 가상 주소와 물리 주소 간의 변환 과정을 통해, 프로세스는 실제 물리 메모리 크기보다 훨씬 큰 주소 공간을 사용할 수 있습니다. 페이징은 시스템의 메모리 사용 효율성을 높이고, 다양한 응용 프로그램의 실행을 가능하게 합니다. 내부 단편화와 페이지 테이블 관리 등의 단점을 가지고 있지만, 현대 운영체제에서 널리 사용되는 메모리 관리 기법입니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!