오래 못 할 짓 하지 않기
[ 운영체제 ] 24. Virtual memory 본문
https://min-h-study-review.tistory.com/259
Background
Physical memory보다 큰 프로그램을 실행시켜야 한다면
프로그램 전체를 가져올 필요가 없다.
실행할 때 당장 필요한 것들만 가져오면 되고,
그렇지 않은 것들은 가상의 메모리에 저장해두면 된다.
● Virtual Memory
Logical mem을 Physical mem으로부터 분리시킨 공간.
= Logical address space는 physical address space보다 훨씬 크다.
여러 Process간에 address space도 공유할 수 있게 한다.
요약하면
물리 메모리보다 더 많은 것을 저장할 수 있게 해주는 메모리라고 생각하면 된다.
Demand Paging
: 요구되는 page만 load된다. ( 항상 load되어 있는 거 x )
물리 메모리는 크기가 한정되어 있기 때문에
메모리를 할당하기 위해서 OS 가 해야할 일이 있다.
1. 기존 적재된 불필요한 페이지를 선별 → 보조기억장치로
= 페이지 교체
2. 프로세스들에게 적절한 프레임 할당
● 작동 방식
→ 유효 비트를 사용하여 적재 유무를 판단한다.
- Valid / Invalid bit
해당 Page에 해당하는 Frame(Phsical memory)에 데이터가 valid한 값이면
Valid bit에 표시가 된다.
해당 page에 해당하는 Frame이 invalid라면 그에 맞게 표시.
따라서 프로그램을 실행하면서
● Valid page에 접근 → 정상 작동
● Invalid page에 접근 → Page fault 발생
Page - fault
page fault 가 발생했다면 어떻게 작동할까?
● 예외 처리 발생 ( Interrupt 발생 )
→ page를 backing store에서 가져오게 한다.
→ Free Frame에 해당 page를 넣는다.
→ page table 업데이트
→ 다시 해당 Instruction 실행
아래 예제를 한 번 보자
현재 프로그램을 실행하는데 필요한 정보들은 [ A C F ] 이다.
Logical mem에서 이 정보들을 사용하기 위해서 page table에 접근한다면 해당 데이터들을 사용할 수 있다.
실행 중에 E 정보가 필요하다면 Logical mem에서 page table로 접근해서 4번 frame를 본다.
해당 frame의 valid bit가 invalid를 나타내고, 해당 frame응ㄴ 연결된 page가 없으므로 free frame이다.
정보를 backing store에서 가져와야 함.
backing store에 있는 B를 physical mem 12번 칸에 두고
page table에 4번 frame에는 12와 v로 업데이트 시킨다.
( * page table에 숫자는 있는데 invalid라면, 해당 physical mem에는 우리가 원하는 정보가 아닌 다른 정보가 있다는 뜻이다.
= page swap을 해주어야 함)
- Free-Frame List
page fault가 일어났을 때, 비어있는 frame에 page를 넣어준다.
그렇게 비어있는 frame을 free frame이라고 하는데, 이는 Os에서 list로 관리하나보다.
(나중에는 Stack 이나 heap으로 해야한다고 함 )
● Demand paging의 특징
- page Swap in/out 과 유사하다.
- 빠른 반응 속도
- HW의 Support가 필요하다.
그냥 훑어볼 거
locality 측면에서 오른쪽이 효율적이다.
반복문에 j -> i인지, i -> j인지 판단.
● Demand paging의 퍼포먼스
ma = memory access time
p = page fault 가능성
Effective Access Time (EAT)
= ( page fault 일어나지 않을 확률 * ma ) + ( page fault 일어날 확률 * page fault time )
= (1-p) * ma + p * page fualt 처리하는 데 걸리는 시간
Copy on write
정말 간단하다.
우선 Fork를 하여 process를 새로 만들었을 때는
실제로 Page를 복제하지 않는다. 공유만 한다.
그러다가 어느 프로세스 하나가 shared page에 write를 하면,
그 때에서야 복제된 page 가 만들어진다.
(출처)
한동대학교 고윤민교수님 - 운영체제
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 26. Virtual memory - Frame allocation / Thrashing (0) | 2024.06.03 |
---|---|
[ 운영체제 ] 25. Virtual memory - Replacement (0) | 2024.06.01 |
[ 운영체제 ] 23. Page Table / Swapping (0) | 2024.05.24 |
[ 운영체제 ] 22. Page / Frame (0) | 2024.05.21 |
[ 운영체제 ] 21. Main memory (0) | 2024.05.20 |