본문 바로가기
전공/운영체제

Ch09. 가상 메모리 관리_02)요구페이징

by 임 낭 만 2023. 6. 12.

요구페이징

요구페이징 개요

  • 컴퓨터를 오래 켜 두면 시스템이 느려지는 이유는 작업을 하지 않고 쉬는 프로세스나 좀비 프로세스가 메모리를 차지해 메모리 관리가 복잡해지기 때문
  • 메모리에는 꼭 필요한 프로세스만 유지하는 것이 좋음
  • 운영체제는 프로세스를 구성하는 모듈을 전부 메모리에 올리지 않음
  • 필요한 모듈만 메모리에 올려 실행하고 나머지 모듈은 필요할 때 메모리로 불러옴
  • 프로세스 일부만 메모리로 가져오는 이유
    • 메모리를 효율적으로 관리하기 위해, 메모리가 가득차면 관리하기 어려우므로 적은 양의 프로세스만 유지
    • 응답속도 향상을 위해, 용량이 큰 프로세스를 전부 메모리로 가져와 실행하면 응답이 늦어져 필요한 모듈만 올려 실행
    • 예) 포토샵 프로그램(본 프로그램 및 외부필터, 피부보정필터, 노이즈 제거필터 등)
  • 이처럼 사용자 요구 시 해당페이지를 메모리로 가져오는 것을 요구페이징이라고 함
  • 페이지를 미리 가져오는 방식은 가져온 페이지를 쓰지 않을 경우 메모리를 낭비하게 됨
  • 요구 페이징이 메모리의 절약, 메모리의 효율적 관리, 프로세스의 응답 속도 향상 등의 효과를 볼 수 있음
  • 미리 가져오기는 예상되는 페이지를 가져오는 방법
  • 대표적인 경우 캐시, 캐시는 앞으로 필요할 것이라 예상되는 부분을 고속의 캐시 메모리에 가져와서 시스템의 성능을 향상시킴
  • 그러나 미리 가져온 데이터가 사용되지 않을 경우 자원이 낭비됨, 따라서 현재 운영체제는 요구 페이징을 기본으로 사용

요구 페이징의 필요성

더보기
  • 요구페이징 : 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 것은 가져오기 정책
  • 가져오기 정책은 프로세스가 요청할 때 메모리로 가져오는 방법이 일반적인데 이를 요구페이징이라고 함

요구페이징 개념

요구 페이징의 개념

타당 비트와 비타당 비트를 추가한 페이지 테이블

타당 비트와 비타당 비트를 추가한 페이지 테이블

유효 페이지는 메인 메모리에 있는 페이지 중 하나라는 의미이고, 유효하지 않는 페이지는 디스크에 있는 페이지 중 하나라는 의미. 타당 비트(1)로 설정되어 있으 면 유효 페이지이고, 비타당 비트(0)는 유효하지 않는 페이지


페이지 테이블 엔트리의 구조

요구페이징과 스왑영역

  • 페이지가 스왑 영역에 있는 경우는 크게 두 가지
  • 요구 페이징으로 인해 처음부터 물리 메모리에 올라가지 못한 경우
  • 메모리가 꽉 차서(Full) 스왑 영역으로 옮겨온 경우

스왑인과 스왑아웃

페이지 테이블 엔트리(PTE) 구성

  • 페이지 테이블에는 페이지가 메모리에 있는지, 스왑 영역에 있는지 표시해야 하는데 이때 사용하는 비트가 유효비트
  • PTE는 페이지번호와 프레임 번호로 구성된다고 했는데, 정확히 페이지 번호, 플래그비트, 프레임번호로 구성

페이지 테이블 엔트리의 구성

페이지 테이블 엔트리(PTE) 설명

  • 페이지 번호: 직접 매핑에서는 필요 없지만, 연관 매핑에서는 필요, 매핑 방법에 따라 필요함
  • 프레임 번호: 가상주소의 해당페이지가 어느 프레임에 있는지 표시, 페이지 테이블의 핵심
  • 프레임번호를 주소필드(address field) 라고도 하며, 이후로 주소필드로 칭함
  • 접근비트(access bit): 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트. 즉, 해당 메모리에 읽거나 실행작업을 했다면 접근비트가 1이 됨
  • 변경비트(modified bit): 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트, 즉, 해당메모리에 쓰기나 추가 작업을 했다면 변경비트가 1이 됨. 접근비트는 참조비트(reference bit)라고도 함.
  • 유효비트(valid bit): 페이지가 실제메모리에 있는지 나타내는 비트
  • 읽기, 쓰기, 실행비트: 페이지에 대한 권한을 나타내는 비트, 읽기권한이 없는 프로세스 읽으려고하거나 쓰기권한이 없는 프로세스가 쓰려고 할 때 접근을 차단하는데 사용됨
  • 접근 권한 비트라고 부름
  • 접근비트와 변경비트는 페이지가 메모리에 올라온 후 어떤 작업이 있었는지 알려주는 역할을 함

페이지 부재

유효 비트

  • 가상 메모리의 페이지 테이블에 있는 페이지가 물리 메모리에 있는지, 스왑 영역에 있는지 표시하기 위해 유효 비트를 사용
  • 유효 비트가 0일 때 : 페이지가 메모리에 있으므로 주소 필드에 물리 메모리의 프레임 번호가 저장
  • 유효 비트가 1일 때 : 페이지가 스왑 영역에 있으므로 주소 필드에 스왑 영역 내 페이지의 주소가 저장

유효 비트에 따른 주소 필드의 변화

페이지 부재

  • 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황
  • 페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리 메모리로 옮겨야 함

물리 메모리와 스왑 영역에 저장된 페이지 매칭

  • 가상메모리의 페이지 0은 물리메모리 프레임 3에 있기 때문에 PTE 0의 유효비트 0, 주소필드 값은 프레임 번호 3
  • 가상메모리 페이지 4는 스왑 영역의 1번에 있기 때문에 PTE 4의 유효비트 1, 주소 필드 값은 스왑 주소 1
  • 프로세스가 페이지 3을 요청하면, PTE 3의 유효비트 1, 주소필드 값은 0이므로 페이지 3은 메모리에 없고 스왑 영역의 0번에 있음
  • 이렇게 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황을 페이지 부재(page fault) 라고함
  • 페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리메모리로 옮겨야 함

페이지 부재 처리과정

  • ① 프로세스가 페이지 3을 요청하면 페이지 테이블의 유효 비트가 1이기 때문에 페이지 부재가 발생
  • ② 메모리 관리자는 스왑 영역의 0번에 있는 페이지를 메모리의 비어 있는 프레임인 5로 가져옴 (스왑인)
  • ③ 프레임 5에 페이지가 들어오면 PTE 3의 유효비트는 1→0으로, 주소 필드 값은 0→5 로 바뀜
  • ④ 프레임 5로 접근하여 해당 데이터를 프로세스에 넘김

페이지 부재 발생 시의 조치

  • [그림9-6] 은 메모리에 빈 프레임에 있어 작업이 수월하지만, 빈 프레임이 없을 때는 메모리에 있는 프레임 중 하나를 스왑 영역으로 내보낸 후 해당 페이지를 가져올 수 있음
  • 어떤 페이지를 스왑 영역으로 보낼 지 결정하는 알고리즘을 페이지 교체 알고리즘(page replacement algorithm) 이라고 하며, 페이지 교체 알고리즘에 의해 스왑 영역으로 보낼 페이지를 대상 페이지(victim page) 라고 함

페이지 교체

  • 페이지 부재가 발생하면 스왑 영역에 있는 페이지를 메모리의 빈 영역에 올리고 페이지 테이블을 갱신(업데이트)
  • 빈 프레임이 없을 때는 메모리에 있는 프레임 중 하나를 스왑 영역으로 내보낸 후에야 해당 페이지를 가져올 수 있음

메모리가 꽉 찬 상태에서 페이지 부재가 발생했을 때 조치

  • 프로세스가 페이지 4를 요청

대상 페이지의 스왑 아웃

  • ① 해당 페이지의 유효 비트가 1이라 페이지 부재가 발생
  • ② 메모리가 꽉 차 있는 상태이기 때문에 스왑 영역에 있는 페이지 E를 가져오기 위해 메모리의 페이지 중 하나를 스왑 영역으로 내보내야 함(물리 메모리의 프레임 3에 저장된 페이지를 대상 페이지로 선정했는데 이 페이지를 스왑 영역으로 옮김(스왑아웃))
  • ③ 대상 페이지 PTE 0의 유효 비트가 0에서 1로, 주소 필드 값이 프레임 3에서 스왑주소 6으로 바뀜
  • ④ 스왑 영역 1번에 있던 페이지 E가 프레임 3으로 올라감(스왑인)
  • ⑤ PTE 4의 유효 비트가 1에서 0으로, 주소 필드 값이 스왑 주소 1에서 프레임 3으로 바뀜

세그먼테이션 오류와 페이지 부재

  • 세그먼테이션 오류 (segmentation fault)
    • 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생하며 해당 프로세스를 강제 종료하여 해결
  • 페이지 부재 (page fault) 
    • 해당 페이지가 물리 메모리에 없을 때 발생하는 오류로 사용자 프로세스와 무관하기 때문에 페이지 부재가 발생하면 메모리 관리자는 스왑 영역에서 해당 페이지를 물리 메모리로 옮긴 후 작업을 진행

지역성

지역성 (locality)

  • 메모리의 빈 공간이 없어 어떤 페이지를 스왑 영역 보낼 때는 앞으로 사용하지 않을 페이지를 내보내는 것이 좋음
  • 자주 사용될 페이지를 보내면 다시 물리메모리로 불러와야 하기 때문에 시스템 성능이 저하됨
  • 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 성질
  • 페이지 교체 알고리즘이 내보낼 페이지를 찾을 때 지역성을 바탕으로 함

지역성의 종류

  • 공간의 지역성: 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높음
  • 시간의 지역성: 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사용될 확률이 높음
  • 순차적 지역성: 여러 작업이 순서대로 진행되는 경향이 있음

공간의 지역성, 시간의 지역성, 순차적 지역성

댓글