철학과 학생의 개발자 도전기

페이징과 세그먼테이션 본문

운영체제

페이징과 세그먼테이션

Younghun 2024. 2. 12. 17:12

1. 메모리 관리 기법

연속 메모리 기법

  • 프로그램을 연속적인 메모리에 할당
  • 고정 분할 기법
    • 메모리를 고정된 크기의 파티션으로 나누고, 프로그램에게 하나의 파티션을 할당한다.
    • 내부 단편화가 발생한다.
    • 만약 프로그램의 크기가 파티션보다 크다면 메모리를 할당받을 수 없다.
  • 동적 분할 기법
    • 프로그램이 필요로 하는 메모리 크기만큼만 할당한다.
    • 외부 단편화가 발생한다.
    • 프로그램이 종료되면 메모리에 빈 구역들이 듬성듬성 생기기 때문이다.

불연속 메모리 기법

  • 프로그램이 메모리에 불연속적으로 할당되는 기법
  • 페이징과 세그먼테이션 기법이 존재한다.

가상 메모리

  • 실제 메모리 크기보다 더 많은 메모리를 할당할 수 있도록 가상 메모리 주소를 사용한다.
  • 프로그램의 일부분(당장 필요한 데이터, 자주 사용하는 데이터 등)만 메모리에 할당한다.
  • 메모리에 올라오지 않은 데이터를 사용할 때, 디스크에서 메모리에 올린다.
  • MMU(Memory Management Unit)를 통해 논리 주소와 물리 주소를 매핑한다.

2. 페이징

  • 메모리는 'Frame', 프로세스는 'Page' 라는 고정된 크기의 단위로 분리한다.
  • 페이지와 프레임은 같은 크기를 가진다.
  • 페이징 테이블을 생성하여 페이지와 프레임의 매핑 정보를 저장한다.
  • 메모리를 불연속적으로 사용하기 때문에 외부 단편화 문제는 해결하지만, 내부 단편화 문제는 존재한다.

3. 세그먼테이션

  • 프로세스를 비슷한 의미 단위로 묶어서, 서로 다른 크기의 메모리 블록을 할당한다.
  • 세그먼트 테이블을 생성하여 세그먼트의 시작 주소와 크기를 저장한다.
  • 프로세스가 필요로 하는 크기만큼 메모리를 할당하기 때문에 내부 단편화 문제는 해결된다.
  • 하지만 작은 세그먼트가 해제된 자리에 큰 세그먼트가 할당되지 못하는 외부 단편화 문제가 발생한다.

'운영체제' 카테고리의 다른 글

메모리  (0) 2024.02.25
페이지 교체 알고리즘  (0) 2024.02.12
뮤텍스와 세마포어  (0) 2024.02.05
Race Condition과 Dead Lock  (0) 2024.02.05
CPU 스케줄링  (0) 2024.02.05