출처 : https://www.youtube.com/watch?v=W8q3TKB9Lbo&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=32
이번 장에서는 "가상 메모리를 어떻게 효율적으로 사용할 수 있는가"에 대한 방법론을 알아본다.
Virtual Memory Management
- 가상 메모리 (기억 장치)
- Non-continuous allocation
- 사용자 프로그램(=프로세스)을 block으로 분할하여 필요한 부분만 적재 / 실행
- Paging / Segmentation system
- Non-continuous allocation
- 가상 메모리 관리의 목적
- 가상 메모리 시스템 성능 최적화
- Cost model
- 다양한 최적화 기법
- 성능이라는 것은 모호하기 때문에 어떤 cost model을 만들어서 cost를 최소화하는 다양한 기법들을 통해서 최적화를 진행한다.
- 가상 메모리 시스템 성능 최적화
Cost Model for Virtual Memory System
cost model의 cost는 다양하게 존재한다. 이 중 대표적으로 많이 쓰는 cost model은 page fault를 사용하는 모델이다.
여기서 page fault란, CPU가 메모리에 적재된 block을 가져와서 처리하려고 할 때, 메모리에 해당 block이 없는 경우를 page fault라고 한다.
만약 page fault가 발생하면 state가 running 상태에서 CPU를 반납하고 asleep 상태로 변경된다.
- Page fault frequency (page fault의 발생 빈도)
- page fault rate (page fault의 발생률)
- Page fault rate를 최소화 할 수 있도록 전략들을 설계해야 함
- Context switch 및 kernel 개입을 최소화
- Context switch로 인해 kernel이 개입하면 overhead가 커진다. = cost가 크다.
- 시스템 성능 향상시키기 위해서는 page fault를 낮춰야 한다.
- Page reference string (d)
- 프로세스의 수행 중 참조한 페이지 번호 순서
- page fault를 보기 위해 우리가 어떤 page들을 읽어왔는지에 대한 정보가 필요하기 때문에 사용한다.
- ω = r1 r2 ... rk ... rT
- ri = 페이지 번호, ri ∈ {0, 1, 2, · · · , N-1}
- N : 프로세스의 페이지 수 (0 ~ N-1)
- Page fault rate = F(ω)
- F(ω) = Num. of page faults during ω (page fault가 발생한 수) / |ω| (해당 프로세스를 실행하면서 참조한 전체 page 수)
Hardware Components
- Address translation device (주소 사상 장치, 주소를 변환하는 장치)
- 주소 사상을 효율적으로 수행하기 위해 사용
- E.g., TLB (associated memories), Dedicated page-table register, Cache memories
- 주소 사상을 효율적으로 수행하기 위해 사용
- Bit Vectors
- Page 사용 상황에 대한 정보를 기록하는 비트들
- 메모리에 있는 page들을 관리하기 위해서는 정보(혹은 기준)가 필요하다. 이 기준으로서 사용되는 것이 bit vectors 이다.
- Reference bits (used bit)
- 참조 비트
- Update bits (modified bits, write bits, dirty bits)
- 갱신 비트
Bit vectors
메모리가 page frame들로 나뉘어져 있다. 각각의 page frame 안에는 reference bit와 update bit가 하나씩 존재한다. 이때, page frame이 여러 개가 존재하므로 reference bit와 update bit도 여러 개가 존재해서 vector가 되는 것이다.
이 bit vector들은 PMT에 넣어놓고 정보를 관리한다.
- Reference bit vector
- 메모리에 적재된 각각의 page가 최근에 참조되었는지를 표시
- 우리가 메모리에 적재된 page를 빼고 새로운 page를 적재하려고 하는데, 어떤 page frame을 빼야하는지에 대한 기준을 정하기 위해 사용한다.
- 운영
- 프로세스에 의해 참조되면 해당 page의 referencce bit를 1로 설정
- 주기적으로 모든 reference bit를 0으로 초기화
- reference bit를 확인함으로서 최근에 참조된 page들을 확인 가능 -> locality
특정 시점 마다 모든 page frame의 reference bit를 0으로 만들고, 그 사이에 해당 page frame이 참조가 되면 1로 바꾸어준다.
- Update bit vector
- Page가 메모리에 적재된 후, 프로세스에 의해 수정되었는지를 표시
- 메모리에 적재된 page의 데이터가 프로세스에 의해 수정된다면, page frame에 있는 데이터와 swap device에 있는 데이터가 서로 달라진다. 그러므로 해당 page의 사용이 끝나고 메모리 밖으로 나와서 swap device로 돌아갈 때, 이 변경된 데이터를 swap device에 있는 page에 반영을 해주어야 한다.
- 주기적 초기화 없음. 메모리에서 나올 때 0으로 초기화 됨
- Update bit = 1
- 해당 page의 (Main memory 상 내용) != (Swap device의 내용)
- 해당 page에 대한 Write-back (to swap device)이 필요
'Study > 운영체제' 카테고리의 다른 글
운영체제 10. 가상 메모리 관리 (3) - Replacement Strategies for Fixed Allocation 1 (1) | 2023.12.06 |
---|---|
운영체제 10. 가상 메모리 관리 (2) - SW components (1) | 2023.12.05 |
운영체제 9. 가상 메모리 (5) - Hybrid Paging-Segmentation System (2) | 2023.12.04 |
운영체제 9. 가상 메모리 (4) - Segmentation System (1) | 2023.12.01 |
운영체제 9. 가상 메모리 (3) - paging system (2) (0) | 2023.11.30 |