Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

가상메모리 (캐싱)
CS/운영체제

가상메모리 (캐싱)

2022. 5. 24. 18:02

출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님

 

 

 

 

페이지들 중 일부를 속도가 더 빠른 main memory에 저장하고 나머지는 backing storage에 저장하는 것도 일종의 caching.

 

실제로는 LRU LFU 사용 불가능.

 

왜?

 

page fault가 일어나지 않았을 때 페이지 접근에 OS가 전혀 관여를 안함. 순수한 HW 작업.

 

0은 최근에 사용하지 않은 페이지라는 뜻

1은 최근에 사용된 페이지라는 뜻

 

빈 페이지가 없어서 페이지 하나를 쫓아내야 한다고 하자.

시곗바늘을 돌리면서 reference bit 체크한다.

1을 만난다 $\rightarrow$ reference bit 0으로 바꾸고 넘어간다

0을 만난다 $\rightarrow$ 가장 오래전에 사용한 페이지는 아닐 확률이 높지만 적어도 최근에는 사용하지 않은 페이지이다 $\rightarrow$ 쫓아낸다

 

reference bit 변환

0을 1로 바꾸는 건 CPU가 참조할 때 HW적으로 1로 변경된다.

1을 0으로 바꾸는 건 위에 나와있듯이 OS가 해준다.

 

개선

ref bit -> 읽기/쓰기 시에 1로 변경

mod bit -> 쓰기 시에만 1로 변경

 

수정이 안됐으면 걍 메인 메모리에서 지우기만 하면 되는데(어짜피 backing storage랑 내용 같음)

수정이 됐으면 backing storage에 save 해줘야 하니까

 

 

Thrashing

메모리에 프로그램 1개 $\rightarrow$ 프로그램이 CPU 쓰다가 I/O 하러 가면 CPU 논다

메모리에 프로그램 2개 $\rightarrow$ 프로그램 둘 다 I/O 하러 가야 CPU 논다 (확률 더 낮다)

...

 

프로그램 너무 많아지면 각각의 프로그램이 가지는 메모리 공간이 너무 적어져서 제대로 일을 하지 못함

(CPU 줘봐야 page fault가 계속 발생. 프로세스들은 page fault 처리하느라 바쁨)

 

 

'CS > 운영체제' 카테고리의 다른 글

Dynamic Memory Allocation  (1) 2022.08.23
Linker and Loader  (0) 2022.08.23
가상메모리  (0) 2022.05.24
메모리 관리  (0) 2022.05.24
Deadlock  (0) 2022.05.24
    'CS/운영체제' 카테고리의 다른 글
    • Dynamic Memory Allocation
    • Linker and Loader
    • 가상메모리
    • 메모리 관리
    Mathlife
    Mathlife

    티스토리툴바