동현 유
척척석사
동현 유
전체 방문자
오늘
어제
  • 분류 전체보기 (178)
    • BlockChain (48)
      • [paper] Consensus (13)
      • [paper] Execution (19)
      • [paper] Storage (5)
      • [paper] ZKP (1)
      • [paper] Oracle (1)
      • Blockchains (9)
    • Java (19)
      • Java의 정석 (13)
      • Java 파헤치기 (5)
    • Python (20)
      • Python 뜯어보기 (6)
      • 데이터 분석 기초 (5)
      • Python 기초 강의 (6)
      • Python 기초 강의 부록 (3)
    • Golang (0)
    • MySQL (3)
      • programmers (2)
      • 기본 문법 (0)
    • 웹 프로젝트 (IBAS) (36)
      • Django 레거시 (14)
      • SpringBoot api 개편 (14)
      • Infra (3)
      • 서버 장애 기록 (4)
      • 신입팀원 교육 자료 (1)
    • CS (30)
      • Operating System (22)
      • Computer Security (3)
      • Network (4)
      • DBMS (1)
    • 책 (10)
      • 도메인 주도 설계 철저 입문 (9)
      • Real MySQL 8.0 (1)
    • BOJ 문제 풀이 (3)
    • 이러쿵저러쿵 (7)
    • 회고 (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
동현 유

척척석사

[전공생이 설명하는 OS] 메모리 관리 - (2) Virtual Memory
CS/Operating System

[전공생이 설명하는 OS] 메모리 관리 - (2) Virtual Memory

2022. 6. 2. 14:50

1. 가상메모리란?

각 프로세스에게 큰 전용 메모리를 제공하는 기술. 

 

2. 부분적재

에러코드, 자주 접근되지 않는 코드들까지 한번에 적재할 필요가 있나?

Locality, Knuth's estimation : 10%의 코드가 90% 실행시간을 갖는다. 

가상메모리도 일종의 캐시. 디스크와 메모리 사이의 캐시

 

  • (fetch policy) 그러면 필요한 부분을 언제 올릴건데? 
  • (resident set policy) 메모리에 올라와 있는 각 프로세스의 조각들을 어떻게 효율적으로 관리할 것인가? 
  • (replacement policy) 메모리가 부족해서 다른 조각들을 쫓아내야할때 어떤 조각들을 쫓아낼것인가?
  • 매핑테이블을 어떻게 관리할 것인가?

 

보통 paging 과 segmentation 기법을 사용

- 프로세스를 조각냈다-> 메모리에 연속적으로 적재할 필요가 없다. 분산적재 가능

- 물리메모리에서 재배치가 가능하다

 

3. 관리 정책

1) fetch policy

  • demand paging
    : page fault 발생 시에만, page를 가져옴. -> 시간이 지나면 자주 사용되는 페이지만 남게될것.
  • prepaging
    : space locality 를 신경써서 주변 page 까지 가져옴. 불필요한 page 를 가져올 경우 penalty가 심각함

 

2) replacement policy

  메모리에 가용공간이 부족할 때, 미래에 사용이 잘 안될것같은 페이지를 디스크로 쫓아내는 것. 그 victim page를 고르는 것. 페이지 별 reference 통계 정보를 가지고 선택하는 경우가 많다.

(1) Optimal 

  - 다른 replacement policy의 성능을 비교하기 위해 사용된다.

  - 모든 미래의 workload를 다 안다고 가정하고 가장 최적의 성능을 보이는 방법이다.

  - 알고리즘의 하한을 보이기 위한 이론적인 방법으로, 실제로는 구현할 수 없다.

(2) FIFO

  - 가장 오래 메모리에 거주중인 page를 방출

  - Belady's Anomaly : frame 이 늘어나면 page fault 가 오히려 증가하기도 하는 현상

(3) LRU(Least Recently Used)

  - 가장 오래전에 접근된 page 를 방출 (가장 오랫동안 사용되지 않은 page를 방출)

  - 구현하기 까다로워서 근사적인 알고리즘을 사용

  - clock(second-chance) : page를 환형으로 정렬하고, 처음 적재하면 1로 설정. 지나가면서 1을 0으로 바꿈. 0인 페이지가 있으면 해당 페이지를 방출

  - enhanced second-chance : (reference bit, dirty bit) 수정된거보다 수정 안된것이 더 효율적

 

3) resident set policy

  • 각 프로세스마다 고정된 수의 frame 을 할당하는 방식. (local)
  • 프로세스 별 요구사항에 맞게 frame 을 할당하는 방식. 

 

4. Page Fault

(1) Thrash

멀티프로그래밍의 정도가 증가하면, 어느 순간 급격하게 page fault 가 발생하는 현상. swap in out 만 엄청 하고 있는 것.

 

(2) Working set

- 특정 시간동안 접근된 page 집합.

- hit 가 지속되면 working set 이 작고, page fault 가 많이 발생하면 working set 이 증가한다.

- 구현하기가 어렵다. window size를 적절하게 정하기가 어렵다. -> 근사해야함.

- 프로세스별로 page fault rate 을 운영한다. upper bound, lower bound 사이의 page fault frequency 를 조절해서 적절한 working set 을 유지하도록 한다.

 

'CS > Operating System' 카테고리의 다른 글

[논문 리뷰] SoftTRR: Protect Page Tables against Rowhammer Attacks using Software-only Target Row Refresh  (0) 2023.05.20
[논문 리뷰] Drammer: Deterministic Rowhammer Attacks on Mobile Platforms  (0) 2023.05.19
[전공생이 설명하는 OS] 메모리 관리 - (1) Partition/Page/Segment  (0) 2022.06.02
[전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)  (0) 2022.05.31
[전공생이 설명하는 OS] 동기화 - (5) Deadlock  (0) 2022.05.31
    동현 유
    동현 유
    Fault Tolerant System Researcher for more Trustful World and Better Lives. (LinkedIn: https://www.linkedin.com/in/donghyeon-ryu-526b8a276/)

    티스토리툴바