프로세스 실행

  • OS가 프로그램의 일부만 메인 메모리에 가져옴
  • 필요한 부분이 메모리에 없으면(페이지 폴트) 인터럽트 발생

지역성의 원리(참조의 지역성, Locality of reference)

  • 프로세스 내의 데이터는 뭉치는 경향이 있음
    - 프로그램을 실행하면, 가까운 주소의 데이터를 사용하게 됨
    • 함수 호출(먼 주소의 데이터도 사용) 같은 특별한 경우가 아니면
    • 이를 잘 활용하면, 페이지 수를 적게 사용하면서도 스래싱 방지 가능

가상 메모리

  • 물리적 메모리와 구별되는 논리적 메모리
  • 물리적 메모리 공간보다 주소를 더 많이 사용 가능
  • 여러 프로세스가 주소 공간 공유 가능
  • 가상 주소 공간: 주로 0번에서 시작해서, 공간 끝까지 연속적으로 사용
    - 한편, 물리적 메모리는 페이지 프레임으로 구성
    • MMU(메모리 관리 유닛, Memory Management Unit)이 논리적 주소를 물리적 주소로 짝지어 줌
  • 가상 메모리를 구현하는 방법 중 하나가 요구 페이징(Demand Paging)

요구 페이징

  • 요구 페이징을 사용하면 프로세스 일부만 메모리에 올리고, 필요할 때 페이지를 가져옴
  • 장점:
    - I/O 덜 해도 됨
    • 메모리 공간 덜 필요함
    • 응답 속도 더 빠름
    • 더 많은 유저가 사용할 수 있음
  • Lazy swapper: 페이지가 필요할 때까지 페이지 스왑 안 함

페이지 테이블

  • 프레임 번호, valid-invalid 비트로 구성(v: valid(메모리에 있음), i: invalid(메모리에 없음))
  • MMU가 주소를 번역하는 과정에서 valid-invalid 비트가 i라면 페이지 폴트 발생


1. 프로그램 실행 중 필요한 페이지 참조
2. 페이지 테이블 확인
3. 페이지 테이블에 없으면(페이지 폴트) 인터럽트 발생, 보조기억장치 확인
4. 페이지를 메인 메모리(물리적 메모리)의 빈 프레임으로 가져옴
5. 페이지 테이블 수정
6. 프로그램 재개

P: 메인 메모리에 빈 프레임 없으면...?
S: 페이지 교체(기존 페이지 중 일부를 보조기억장치로 넘기고(swap out), 필요한 페이지를 가져옴)가 일어남

페이지 교체 알고리듬

  • 앞에서 얘기한 페이지 교체가 일어날 때, 교체할 페이지를 결정하는 방법
  1. 랜덤 교체(Random Replacement)
  1. 벨라디의 최적 알고리즘(Belady's Optimal Algorithm)
  1. LRU(Least Recently Used)

  2. LFU(Least Frequently Used)

  1. FIFO(First In First Out)

Inclusion Property: m개의 프레임에 대해 시간 t에서 로드된 페이지는 m+1개의 프레임, 시간 t에서도 로드되어 있음

스래싱

  • 프로세스가 충분한 페이지 수를 가지지 못해, 페이지 교체율이 매우 높은 상태
  • 프로그램 실행은 잘 하지 않으면서 페이지 교체만 엄청 하게 됨
    - CPU 사용률 매우 낮아짐

Reference

  1. 강순주 교수님 PPT OS11
  2. Operating System Concepts 10ed. Abraham Silberschatz
profile
시작보다 중요한 건 지속이다

1개의 댓글

comment-user-thumbnail
2023년 8월 1일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기