CS/운영체제

[운영체제] 페이징(Paging)과 세그멘테이션(Segmentation)

Heeyeon Choi 2024. 10. 31. 12:41
728x90
메모리 관리 기법으로, 프로세스가 필요한 메모리 공간을 효과적으로 관리하고 할당하는 방식입니다. 각각의 기법은 가상 메모리를 물리적 메모리에 효율적으로 배치하고, 프로세스를 분할하여 메모리 낭비를 줄이기 위해 사용됩니다.

 

페이징(Paging)

  • 개념: 페이징은 프로세스를 고정된 크기의 블록으로 나누어 메모리에 할당하는 방식입니다. 프로세스를 일정한 크기의 페이지(Page)로 나누고, 물리 메모리는 동일한 크기의 페이지 프레임(Page Frame)으로 나누어 페이지 단위로 메모리에 적재됩니다.
  • 작동 방식:
    1. 프로세스가 요청하는 메모리 주소를 페이지 번호와 오프셋으로 나눕니다.
    2. 페이지 테이블(Page Table)을 통해 페이지 번호를 프레임 번호로 변환하여 물리 메모리 주소를 찾습니다.
  • 장점: 외부 단편화(External Fragmentation)가 발생하지 않으며, 고정된 크기의 페이지로 메모리 관리가 효율적입니다.
  • 단점: 프로세스 크기가 페이지 크기의 배수가 아닐 경우 마지막 페이지에 내부 단편화(Internal Fragmentation)가 발생할 수 있습니다.

페이징 예시

프로세스 A가 10KB 메모리를 필요로 하고, 페이지 크기가 4KB라면 프로세스 A는 3개의 페이지로 나뉘며, 각 페이지는 물리 메모리의 빈 페이지 프레임에 할당됩니다.

세그멘테이션(Segmentation)

  • 개념: 세그멘테이션은 프로세스를 **논리적인 단위(세그먼트)**로 나누어 메모리에 할당하는 방식입니다. 세그먼트는 고정된 크기가 아닌, 코드, 데이터, 스택과 같은 의미 단위로 나뉩니다.
  • 작동 방식:
    1. 프로세스는 세그먼트 번호와 오프셋으로 메모리 주소를 정의합니다.
    2. 세그먼트 테이블을 사용하여 논리 주소를 물리 주소로 변환하고, 각 세그먼트는 물리 메모리의 연속된 공간에 할당됩니다.
  • 장점: 프로세스를 논리적 단위로 나누기 때문에 프로그램 구조와 일치하며, 공유와 보안이 용이합니다.
  • 단점: 가변 크기 세그먼트로 인해 외부 단편화가 발생할 수 있습니다.

세그멘테이션 예시

프로세스 A가 코드 세그먼트(10KB), 데이터 세그먼트(8KB), 스택 세그먼트(4KB)로 구성되어 있다면, 각 세그먼트는 물리 메모리의 다른 위치에 연속적으로 할당됩니다.

페이징과 세그멘테이션의 차이점

구분페이징(Paging)세그멘테이션(Segmentation)

분할 단위 고정 크기의 페이지 가변 크기의 세그먼트 (논리적 단위)
주소 구조 페이지 번호와 오프셋 세그먼트 번호와 오프셋
단편화 내부 단편화 발생 가능, 외부 단편화 없음 외부 단편화 발생 가능, 내부 단편화 없음
메모리 접근 방식 페이지 테이블을 통해 물리 주소로 매핑 세그먼트 테이블을 통해 물리 주소로 매핑
메모리 할당 방식 고정 크기 블록 할당 가변 크기 블록 할당
적합성 메모리 관리 효율적, 단순한 구조 프로그램 구조와 일치, 세그먼트 별 보안 및 공유 용이

결론

  • 페이징은 고정된 크기로 메모리를 관리하여 외부 단편화가 발생하지 않으며, 메모리 활용 효율이 높습니다.
  • 세그멘테이션은 논리적 단위로 메모리를 관리하므로 프로그램 구조와 일치해 효율적이지만, 외부 단편화가 발생할 수 있습니다.
728x90