요구 페이징(Demand Paging)과 무요구 메모리 영역 (Demand-zero Memory)

lsjoon·2024년 2월 19일
0

CS & PROGRAMMING

목록 보기
10/15

CSAPP : Chap. 9 발췌

스와핑(페이징)
디스크와 메모리 사이에 페이지를 전송하는 동작

요구 페이징
DRAM 캐시 미스(Page fault)가 발생할 때, 하나의 페이지가 스와핑(페이징)되어 들어오는 마지막 순간까지 기다리는 전략

힙(heap)은 초기화되지 않은 데이터 영역 바로 다음부터 시작해서, 위쪽으로(높은 주소 방향으로) 성장하는 무요구 메모리 영역(demand-zero memory)이라고 가정한다.

  • 이러한 메모리 영역은 프로그램이 실행되는 동안 메모리 사용량이 일정하게 유지되도록 설계되어 있다.
  • 프로그램이 메모리를 요청할 때마다 즉시 할당되지 않고, 실제로 사용될 때까지 초기화되지 않은 상태로 유지된다. 이렇게 하면 메모리 사용 효율성이 향상되고, 시스템 자원을 절약할 수 있다.

현대의 모든 시스템은 요구 페이징 방식을 사용한다.

미래의 정글러들에게 이 글을 바칩니다..
CSAPP 9장에서 계속 보이는 Demand-zero 라는 용어는 프로그래밍 분야에선 거의 사용되지 않는 것으로 보임..
단순히 '메모리에게 어떤 요구도 하지 않는다는 점'을 강조하기 위한 CSAPP 만의 표현인 것 같음

자세한 설명은 클릭

요구 페이징 (Demand Paging)


가상메모리 관리 기법

페이지가 실제 사용되기 전까지 물리적 메모리에 할당하지 않는 방식

  • 프로세스에 의해 메모리가 실제로 호출되기 전까진 메모리 페이지를 건들지 않음 ( 할당했다고 표시만 해둠 )
  • 실제 해당 페이지가 접근되어 사용될 때만 '0'으로 채워진 페이지를 할당하고 초기화

즉, 요구페이징 기법을 사용한 결과 = 무요구 메모리 영역 (Demand-zero Memory)

특징


  • 메모리 절약
    실제로 사용되지 않는 페이지는 물리적 메모리를 차지하지 않음
  • 효율성
    프로세스 시작 시, 필요한 전체 메모리를 할당할 필요가 없으므로 빠른 시작이 가능
  • 유연성
    프로세스가 필요한 만큼의 메모리만 사용하므로, 시스템은 메모리를 더 유연하게 관리 가능

동작 방식


  1. 프로세스 실행
    OS는 프로세스가 실행되면 해당 프로세스의 가상 주소 공간을 만들고, 필요한 페이지만 메모리에 할당

  2. Page Fault 시
    프로세스 실행 도중, 필요한 페이지를 메모리에서 찾을 수 없을 때 Page Fault가 발생
    OS는 해당 페이지를 디스크에서 메모리로 할당

  3. 페이지 교체, 페이지 교체 알고리즘
    메모리 공간이 부족한데, 새로운 페이지를 로드해야 할 때 OS는 페이지 교체 알고리즘에 따라 희생자 페이지(victim page)를 선정하여 '0'으로 초기화하고 새로운 페이지를 메모리에 할당

  4. 페이지 적재 시점
    페이지가 할당되면, 할당 여부를 페이지 테이블에 반영

  5. 페이지 디스크에 저장
    메모리에 할당되지 않은 페이지들은 디스크에 저장
    디스크에 저장되는 페이지는 스왑 파일이라는 특수한 파일에 저장

장점


  • 메모리의 효율적 사용 가능
  • 프로세스의 시작 시간 단축
  • 각 프로세스의 필요한 부분만 메모리에 할당되므로 여러 프로세스 간 메모리를 효율적으로 공유

단점


  • 페이지가 실제로 사용될 때마다 Page Fault 가 필요하므로 오버헤드가 발생 가능
  • 페이지를 '0'으로 초기화하는 과정에서 미세한 지연이 발생할 수 있으며, Page Fault가 빈번하게 발생하면, 시스템의 전체적인 성능에 영향을 미침

오버헤드
어떤 명령어를 처리하는 데 사용되는 간접적 또는 추가적인 시간, 메모리 자원

  • 프로그램의 실행 흐름에서 나타나는 현상으로, 실행 도중 동떨어진 위치의 코드를 실행시켜야 할 때, 추가적으로 시간과 자원, 메모리 등이 사용되는 현상
    ( ex : 10초 걸리는 기능이 간접적인 원인으로 20초가 걸린다면, 해당 기능의 오버헤드는 10초 )

Pure Demanding Page


요구 페이징의 한 형태
프로그램을 실행할 때, 페이지를 메모리에 할당하지 않고 CPU가 요구할 때 페이지를 할당하는 방법

  • 어떤 페이지가 필요해지기 전에는 결코 그 페이지를 메모리에 할당하지 않음
  • 메모리에 어떤 페이지도 할당되어 있지 않기 때문에 프로세스의 시작과 동시에 page fault가 발생

장점
- 메모리를 더 효율적으로 사용 가능
- 다양한 프로세스가 동시에 실행될 때 메모리를 더 효율적으로 공유할 수 있도록 함

단점
- page fault가 자주 발생할 경우, 매번 페이지를 디스크에서 로드하므로 오버헤드가 발생

Pre-paging


요구 페이징의 확장
프로그램을 실행할 때, 필요할 것이라 예상되는 페이지를 미리 메모리에 할당

장점
- 메모리가 낭비될 수 있지만, page fault가 발생할 확률이 적어 속도는 빠름
- 미리 필요한 페이지를 메모리에 할당하므로, page fault 로 인한 오버헤드가 감소
- 페이지를 미리 할당함으로써 디스크에서 읽어오는 작업이 줄어 디스크 I/O 감소
- 프로그램이 일반적으로 지역성을 갖기 때문에, 현재 사용 중인 페이지 주변에 있는 페이지를 미리 할당함으로써 지역성을 더 잘 이용

단점
- 모든 페이지를 미리 할당하는 것은 아니므로, 메모리 사용량을 미리 예측할 필요 있음
- 부정확한 예측은 메모리 낭비가 발생 할 수 있음

profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글