페이징 개요

라마·2023년 8월 1일

운영체제

목록 보기
29/32

※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.

가상 메모리를 사용하는 이유

모든 프로그램은 메모리에 올라와야 CPU 를 통해 실행할 수 있습니다.

CPU 가 메모리를 읽을 때는 오로지 주소를 통해 접근하기 때문에, 정확한 주소가 필요합니다.

만약 개발자가 시스템의 메모리 크기까지 직접 고려하면서 프로그램을 개발해야 한다면..

→ 내 프로그램이 어디에 설치될지 모르니, 특정 시스템에 종속적인 프로그램 밖에 만들지 못합니다.

그래서 개발자가 메모리 크기까지 신경쓰기 어려우니, 메모리는 무조건 0번지부터 끝까지 다 사용한다고 가정하는 것이 가상 메모리의 개념이었습니다.

  • 주소변환은 MMU 가 해줌

  • 부족한 메모리 공간은 Swap 으로 보충

연속 메모리와 Segmentation 의 단점

프로그램이 한두개일땐 큰 문제가 되지 않지만, 프로그램이 많아질수록 관리하기가 어려워 집니다.

  • 프로그램의 크기가 제각각 → 관리하기가 어려움

프로그램을 segment 단위로 쪼갠다 하더라도, 이 segment 가 커지면 연속 메모리에서 발생했던 문제가 똑같이 발생하게 됩니다.

  • External Fragmentation 문제 → 잦은 Defragmentation 동반

즉 관리하기가 어려우니 → 검색 효율이 저하되고 → 이는 메모리 운용 속도의 저하를 일으키게 됩니다.

페이징 ( Paging )

페이징은 고정 - 분할 방식을 이용한 가상 메모리 관리 기법입니다.

  • 프로세스의 주소 공간을 0번지부터 동일한 크기의 페이지 ( page ) 로 나눔

    • 프로세스의 구성 요소에 상관없이 고정 크기로 분할한 단위
  • 물리 메모리 역시 0 번지부터 페이지 크기로 나누고, 프레임 ( frame ) 이라고 부름

  • 페이지와 프레임에 번호를 붙임

  • 페이지 테이블 : 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블

프로세스와 물리 메모리의 공간을 나눔 ( 페이지, 프레임 )

→ 각각의 페이지 인덱스 번호와 프레임 번호 매핑 ( 페이지 테이블 )

→ 페이지 테이블에 저장된 프레임 번호가 물리 메모리 공간에 들어감

페이징을 쓰는 이유 ( 표준화 / 모듈화 )

  • 용이한 구현 : 메모리를 0번지부터 고정 크기로 단순히 분할하기 때문

  • 높은 이식성

    • 페이징 메모리를 관리하기 위해 CPU 에 의존하는 것 없음
    • 다양한 컴퓨터 시스템에 쉽게 이식 가능
  • 높은 융통성

    • 시스템에 따라, 응용에 따라 페이지의 크기를 다르게 설정할 수 있음
  • 메모리 활용과 시간 오버헤드 면에서 우수

    • 외부 단편화 X
    • 내부 단편화는 발생할 수 있지만, 매우 작음
    • 홀 선택 알고리즘을 실행할 필요 없음

페이징 구현

  • 하드웨어 지원

    • CPU 의 지원

      • CPU 에 페이지 테이블이 있는 메모리 주소를 가진 레지스터 필요
      • Page Table Base Register ( PTBR )
    • MMU 장치

      • 논리 주소 → 물리 주소 변환 ( 페이지 테이블 참조 )
      • 페이지 테이블을 저장하고 검색하는 빠른 캐시 포함
      • 메모리 보호 ( 페이지 번호가 페이지 테이블에 있는지, Offset 이 페이지의 범위를 넘어가는지 확인 )
  • 운영체제 지원

    • 프레임의 동적 할당 / 반환 및 페이지 테이블 관리 기능 구현
      • 프로세스의 생성 / 소멸에 따라 동적으로 프레임 할당 / 반환
      • 물리 메모리에 할당된 페이지 테이블과 빈 프레임 리스트 생성 관리 유지
      • 컨택스트 스위칭 때 CPU 의 레지스터에 적절한 값 로딩

0개의 댓글