본문 바로가기

공부의 기록/Operating System

[운영 체제] 페이징과 세그멘테이션 기법

728x90

⬛ 단편화

  • 메모리의 공간이 여러 조각으로 나뉘는 현상으로 합쳐보면 메모리 사용이 가능하지만 나누어져 있어 사용이 불가능한 상태

내부 단편화 (Internal Fragmentation)

  • 메모리를 분할하여 사용할 때 분할된 단위가 프로세스가 필요한 공간보다 더 커서 사용되지 못하고 남는 메모리가 발생하는 현상

외부 단편화 (External Fragmentation)

  • 메모리 할당 및 해제 작업의 반복으로 메모리와 사이에 사용하지 않는 메모리가 발생하고 이러한 메모리들을 합치면 프로세스 할당하기에 충분하지만 연속적인 공간이 아니기 때문에 사용하지 못하는 현상

연속 메모리 할당 방식

  1. 고정 분할 기법 : 메모리를 여러 개의 고정된 크기로 분할하고 하나의 메모리에 하나의 프로세스를 실행 → 내부 단편화
  2. 동적 분할 기법 : 프로세스의 크기에 따라 메모리를 분할 → 외부 단편화

동적 분할 기법의 외부 단편화 발생 과정

 불연속 메모리 할당 방식

페이징 기법

  • 프로그램을 가상메모리(논리적 메모리)에서 동일한 크기의 블록인 페이지로 나눠 처리
  • 물리적 메모리도 페이지와 같은 크기로 분할(프레임)하고 프레임에 페이지를 적재하여 사용한다.
  • 일종의 주소 변환 테이블의 역할을 하는 페이지 테이블을 통해 페이지와 프레임을 Mapping하는 과정이 필요하다. Mapping하는 과정이 있기 때문에 프로세스의 물리 주소 공간이 연속적이지 않아도 된다.
  • 고정된 크기의 블록으로 나누기 때문에 내부 단편화 발생

세그멘테이션 기법

  • 프로그램을 논리적인 Block인 세그먼트으로 분할 (stack, heap,...)
  • 같은 역할을 하는 논리적인 단위를 말한다.
  • 세그멘테이션이란 프로세스를 세그먼트의 집합으로 표현하는 것으로 프로세스를 code 영역, data 영역, stack 영역 등으로 나누는 것 또한 세그멘테이션이라고 할 수 있다.
  • 가상 메모리를 서로 크기가 다른 세그먼트로 분할하고 일종의 주소 변환 테이블의 역할을 하는 세그먼트 테이블을 통해 논리적 메모리를 물리적 메모리로 Mapping하는 과정이 필요
  • 각 세그먼트끼리는 연속적인 물리적 메모리에 적재된다.
  • 세그먼트의 크기는 일정하지 않기 때문에 테이블에 limit 정보를 저장한다. 세그먼트의 크기를 넘는 주소를 요청하면 인터럽트를 발생시켜 프로세스를 종료시킨다.
  • 서로 크기가 다른 블락으로 나누기 때문에 외부 단편화 발생

728x90