9-1.[os] 요구 페이징

  • 가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 것

  • 요구 페이징(demand paging): 프로세스가 요청할 때 메모리로 가져오는 방법

요구 페이징의 개요

  • 컴퓨터 오래 켜두면 느려짐: 작업하지 않고 쉬는 프로세스나 좀비 프로세스가 메모리를 차지해서 메모리 관리가 복잡해지기 때문!

필요한 모듈만 메모리에 올려 실행하고 나머지는 필요할 때 불러온다

  • 메모리 절약
  • 메모리를 효율적으로 관리
  • 응답 속도를 향상시키기

예시) 포토샵

  • 포토샵 + (피부 보정 필터, 노이즈 제거 필터)
  • 모든 프로세스를 메모리에 올리면 메모리 많이 차지하고 오래 걸림
  • 메모리에는 포토샵 본 프로그램만 올리고 사용자가 필요로할 때마다 메모리로 가져온다

image.png

미리 가져오기:

  • 요구 페이징과 반대
  • 앞으로 필요할거라고 예상되는 페이지를 미리 가져오는 방식 예) 캐시
  • 장점: 시스템 성능을 향상
  • 단점: 미리 가져온 데이터가 쓸모없으면 피해가 큼
  • 현대 운영체제는 요구 페이징을 사용
  • 순수한 스와핑(swapping): 프로세스를 구성하는 모든 페이지를 메모리에 올리는 것
  • 게으른 스와퍼(lazy swapper): 사용자가 요구할 때 메모리에 올리는 것
  • 프로세스 입장에선 프로세스를 구성하는 모든 페이지가 한꺼번에 메모리로 올라오는 게 좋다

페이지 테이블 엔트리 구조

  • 가상 메모리의 크기 = 물리 메모리 + 스왑 영역
  • 스왑 영역: 하드디스크에 존재하나 메모리 관리자가 관리하는 영역
  • 스왑인: 스왑 영역 -> 물리 메모리
  • 스왑아웃: 물리 메모리 -> 스왑 영역

image.png

페이지가 스왑 영역에 있는 경우:

  1. 요구 페이징으로 인해 처음부터 물리 메모리에 올라가지 못한 경우
  2. 메모리가 꽉 차서 스왑 영역으로 옮겨 온 경우

  3. 유효 비트(valid bit): 페이지가 메모리에 있는지, 스왑 영역에 있는지 페이지 테이블에 표시할 때 사용하는 비트

  4. 페이지 테이블 엔트리(PTE):

    • 페이지 테이블의 한 행
    • 페이지 번호 + 플래그 비트 + 프레임 번호
    • 직접 매핑 -> 페이지 번호 없음

image.png

주소 필드(address field)

  • 접근 비트(access bit):

    • 페이지가 메모리에 올라온 후 사용한 적이 있는지
    • 읽기, 실행 -> 비트가 1이 됨
    • = 참조 비트(reference bit)
  • 변경 비트(modified bit):

    • 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지
    • 쓰기, 추가 -> 비트가 1이 됨
    • = 더티비트(dirty bit) - 새로운 값으로 오염되었다
  • 유효 비트(valid bit):

    • 페이지가 실제 메모리에 있는지를 나타내는 비트
    • 물리 메모리가 부족할 경우 일부 페이지가 스왑 영역으로 옮겨짐
    • = 현재 비트(present bit) - 해당 페이지가 메모리에 존재하는지
  • 읽기, 쓰기, 실행 비트:

    • 접근 권한 비트(rights bit) = 읽기 비트(read bit) + 쓰기 비트(write bit) + 실행 비트(execute bit)

페이지 부재

  • 가상 메모리의 페이지 테이블에서 물리 메모리에 있는지, 스왑 영역에 있는지 표시하기 위해 유효 비트 사용

  • 페이지가 메모리에 있다 -> 유효 비트 0 ->주소 필드물리 메모리프레임 번호 저장

  • 페이지가 메모리에 없다 -> 유효 비트 1 -> 주소 필드스왑 영역의 페이지 주소 저장

image.png

image.png

  • 페이지 부재(page fault): 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황

image.png

  • 프로세스가 페이지 3을 요청
  • 페이지 테이블의 유효 비트가 1 -> 페이지 부재 발생
  • 스왑 영역의 0번에 있는 페이지 -> 물리 메모리로 이동(스왑인)
  • PTE 유효 비트 1 -> 0, 주소 필드 0 -> 5
  1. 페이지 부재 발생
  2. 스왑 영역에 있는 페이지를 메모리의 빈 영역으로 이동
  3. 페이지 테이블 갱신

페이지 교체 알고리즘 (page replacement algorithm): 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘

대상 페이지 (victim page): 페이지 교체 알고리즘에 의해 스왑 영역으로 보낼 페이지

image.png

  1. 해당 페이지의 유효 비트가 1 -> 페이지 부재
  2. 메모리가 꽉 차 있음 -> 스왑 영역에 있는 페이지(E)를 가져와야하는데 못함 -> 메모리 프레임 3번의 페이지 A를 스왑 영역으로 내보냄(스왑 아웃)

  3. PTE 1의 유효 비트: 0 -> 1, 주소필드: 프레임 3 -> 스왑인 주소 6 소 6으로바뀐다.

  4. 스왑영역 1번에 있던 페이지 E가프레임 3으로 올라감(스왑인).
  5. PTE 4의 유효 비트: 1 -> 0, 주소 필드: 스왑 주소 1 -> 프레임 3

세그먼테이션 오류:

  • 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생
  • 사용자 프로세스에 의해 발생하며 해당 프로세스를 강제 종료하여 해결

페이지 부재:

  • 해당 페이지가 물리 메모리에 없을 때 발생하는 오류
  • 사용자 프로세스와 무관
  • 메모리 관리자는 스왑 영역에서 해당 페이지를 물리 메모리로 옮긴 후 작 업을 진행

지역성


지역성

  • 메모리가 꽉 차서 어떤 페이지를 스왑 영역으로 보낼 때 되도록 앞으로 사용하지 않을 페이지를 쫓아내는 것이 좋다
  • 페이지 부재 줄이고 컴퓨터 성능이 높아짐
  • 자주 사용될 페이지를 쫓아내면 다시 물리 메모리로 불러와야 해서 시스템의 성능이 떨어짐
  • 페이지 교체 알고리즘 -> 지역성(locality)을 바탕으로 함
  • 공간의 지역성, 시간의 지역성, 순차적 지역성

image.png

공간의 지역성

  • spatial locality
  • 집 앞 편의점에 갈 확률이 더 높다
  • 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할확률보다 높다

시간의 지역성

  • temporal locality
  • 어제 산 잡지를 읽을 확률이 더 높다
  • 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사'용될 확률이 높다
  • 공간적 지역성이랑 비슷해서 대충 생략함

순차적 지역성

  • sequential locality
  • 여러 작업이 순서대로 진행되는 경향이 있다
  • 일반적인 프로그래밍도 순서대로 진행됨

예) 캐시

  • 시간적, 공간적으로 가까이 있는 데이터 가져오는게 캐시 적중률을 높임
  • 현재 5번 실행 -> 10번 o 200번x
  • goto문 사용하면 엉뚱한 행으로 이동해서 이미 가져온 데이터가 쓸모없어짐 -> 쓰지말 것!

Did you find this article valuable?

Support Christy Choi by becoming a sponsor. Any amount is appreciated!