[운영체제 스터디] - 9. 가상메모리

Ader(아더)·2022년 4월 1일
0

OS

목록 보기
9/11
post-thumbnail

[9주차] - 가상메모리


1. Demand Paging

  • 실제로 필요할 때 page를 메모리에 올리는 것
    • I/O 양의 감소
    • Memory 사용량 감소
    • 빠른 응답 시간
    • 더 많은 사용자 수용
  • Valid/Invalid bit 사용
    • Invalid 의미
      • 사용되지 않는 주소 영역인 경우
      • 페이지가 물리적 메모리에 없는 경우
    • 처음에는 모든 page entry가 invalid로 초기화
    • address translation시에 invalid bit이 set되어 있으면 page fault

2. Page Fault



3. Optimal Algorithm


4. FIFO Algorithm


5. Least Recently Used Algorithm


6. Least Frequently Used Algorithm


7. 다양한 캐싱 환경

  • 캐싱 기법
    • 한정된 빠른 공간(캐시)에 요청된 데이터를 저장해 두었다가 후속 요청 시 캐시로부터 직접 서비스하는 방식
    • paging system외에도 cache memory, buffer caching, web caching등 다양한 분야에서 사용
  • 캐시 운영의 시간 제약
    • 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 걸리는 경우 실제 시스템에서 사용할 수 없음
    • 버퍼 캐싱이나 웹 캐싱의 경우
      • O(1)에서 O(log n) 정도까지 허용
    • Paging system인 경우
      • page fault인 경우에만 OS가 관여함
      • 페이지가 이미 메모리에 존재하는 경우 참조시각 등의 정보를 OS가 알 수 없음
      • O(1)인 LRU의 list 조작조차 불가능

8. Clock Algorithm

  • Clock algorithm
    • LRU의 근사 알고리즘
    • 여러 명칭으로 불림
      • Second chance algorithm
      • NUR(Not Used Recently) 또는 NRU(Not Recently Used)
    • Reference bit을 사용해서 교체 대상 페이지 선정(circular list)
    • reference bit가 0인 것을 찾을 때까지 포인터를 하나씩 앞으로 이동
    • 포인터 이동하는 중에 reference bit 1은 모두 0으로 바꿈
    • reference bit이 0인 것을 찾으면 그 페이지를 교체
    • 한 바퀴 되돌아와서도 0이면 그때에는 replace 당함
    • 자주 사용되는 페이지라면 second chance가 올 때 1
  • Clock algorithm의 개선
    • reference bit과 modified bit(dirty bit)을 함께 사용
    • reference bit = 1 : 최근에 참조된 페이지
    • modified bit = 1 : 최근에 변경된 페이지

9. Page Frame의 Allocation


10. Thrashing

  • Thrashing
    • 프로세스의 원활한 수행에 필요한 최소한의 page frame 수를 할당받지 못한 경우 발생
    • page fault rate이 매우 높아짐
    • cpu utiliztion이 낮아짐
    • OS는 MPD(Multiprogramming degree)를 높여야 한다고 판단
    • 또 다른 프로세스가 시스템에 추가됨
    • 프로세스 당 할당된 frame의 수가 더욱 감소
    • 프로세스는 page의 swap in / swap out으로 매우 바쁨
    • 대부분의 시간에 CPU는 한가함
    • low throughput

11. Woring Set Model


12. Working-Set Algorithm


13. Page Falut Frequency Scheme


14. Page Size의 결정

  • Page size를 감소시키면
    • 페이지 수 증가
    • 페이지 테이블 크기 증가
    • Internal fragmentation 감소
    • Disk transfer의 효율성 감소
      • seek/rotation vs transfer
    • 필요한 정보만 메모리에 올라와 메모리 이용이 효율적
      • Locality의 활용 측면에서는 좋지 않음
  • Trend
    • Larger page size

본 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.

profile
하루하루 성장하는 개발자

0개의 댓글