일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 동기화
- 상호배제
- core data
- 운영체제
- async
- Algorithm
- UserDefaults
- SwiftUI
- 비동기
- Swift
- IOS
- 인프런
- deadlock
- 앨런
- forEach
- Linked List
- Apple Developer Academy
- 동시성
- decode
- 100 days of SwiftUI
- COLOR
- 프로세스 스케줄링
- Codable
- 알고리즘
- 가상 메모리
- 데드락
- @state
- scrollview
- 오브젝트
- struct
Archives
- Today
- Total
기어가더라도 제대로
[운영체제-김덕수 교수님] 가상 메모리(2/5) - 페이징 시스템 본문
- 프로그램을 같은 크기의 블록으로 분할(pages)
- 용어 정리
- page
- 프로그램의 분할된 블록
- page frame
- 메모리의 분할 영역
- page와 같은 크기로 분할
- page
- 특징
- 논리적 분할이 아님(크기에 따른 분할)
- page 공유(shareing) 및 보호(protection) 과정이 복잡함
- segmentation 대비
- page 공유(shareing) 및 보호(protection) 과정이 복잡함
- simpe and efficeint
- segmentation 대비
- No external fragmentaion
- Internal fragmentation 발생 가능
- 일반적인 block 사이즈 = 4kb
- 논리적 분할이 아님(크기에 따른 분할)
Direct mapping
- block mapping 방법과 유사
- 가정
- PMT를 커널 안에 저장
- PMT entry size = entry size
- page size = pageSize?
1. 해당 프로세스의 PMT 가 저장되어 있는 주소 B에 접근
2. 해당 PMT 에서 Page P 에 대한 Entry 찾음
- P의 Entry 위치 = B + P * entrySize
3. 찾아진 entry의 존재 비트 검사
1. Residence bit = 0 인 경우(page fault),
Swap device에서 해당 page를 메모리로 적재
PMT를 갱신한후 3-2. 수행
2. Residence bit = 1인 경우,
해당 Entry에서 Page frame 번호 P'를 확인
4. P'와 가상 주소의 변위 D를 사용하여 실제 주소 R 형성
- R = P' * pageSize + D
5. 실제 주소 R로 주기억 장치에 접근
- Page fault 를 줄이는 것이 Context switch를 줄이는 것이다.
- Page fault 가 발생하면 Swap device로 데이터를 찾으러 간다(I/O 작업)
- I/O 작업이 발생하면 process의 상태를 asleep 상태로 넘기고 다른 프로세스에게 running 상태를 넘겨준다.
- 결과적으로 Context Switch 발생
페이지 폴트가 난 시간을 보여줌
- 문제점
- 메모리 접근 횟수가 2배
- 성능 저하
- 커널(메모리에 있음)에 접근했다가 실제 메모리 주소로 가니까 2번 이동
- PMT를 위한 메모리 공간 필요
- 메모리 접근 횟수가 2배
- 해결방안
- Associative mapping(TLB)
- PMT를 위한 전용 기억 장치(공간) 사용
- Dedicated register or cache memory
- Hierarchical paging
- Hashed page table
- inverted page table
Associative mapping(TLB)
- TLB(translation look-aside buffer)에 PMT 적재
- Associative high-speed memory
- PMT 를 병렬 탐색
- Low overhead, high speed
- 하드웨어적으로 P를 주면 병렬적으로 탐색을 해서 P'를 알아내는 TLB
- 신기하다.
- 단점으로 하드웨어가 비싸다는 문제가 있다.
- 크게 만들기 어려움
Hybrid Direct / Associative Mapping
- 두 기법을 혼합하여 사용
- HW 비용은 줄이고, Associative mapping 의 장점 활용
- 작은 크기의 TLB 사용
- PMT: 메모리(커널 공간)에 저장
- TLB: PMT 중 일부 entry들을 적재
- 최근에 사용된 page들에 대한 entry 저장
- Locality(지역성) 활용
- 프로그램의 수행과정에서 한번 접근한 영역을 다시 접근(temporal locality) 또는 인접 영역을 다시 접근(Spatial locality) 할 가능성이 높음
다음과 같은 과정이 추가된다
- 프로세스의 PMT가 TLB에 적재되어 있는지 확인
1. TLB에 적재되어 있는 경우
- residence bit를 검사하고 page frame 번호 확인
2. TLB에 적재되어 있지 않은 경우,
- Direct mapping으로 page frame 번호 확인
- 해당 PMT Entry 를 TLB 에 적재함
- 아래에 테이블을 지나는 것을 보면 Direct mapping과 같은데, TLB를 확인하는 과정만 거치는 것이다.
- TLB 있으면 TLB에서 가고,
- 없으면 Direct Mapping 찾아서 가다가, TLB에 등록해주고. 이게 다다. 와우!
'CS > 운영체제' 카테고리의 다른 글
[운영체제-김덕수 교수님] 가상 메모리(4/5) - 세그멘테이션 시스템 (0) | 2022.08.12 |
---|---|
[운영체제-김덕수 교수님] 가상 메모리(3/5) - 페이징 시스템의 메모리 관리 (0) | 2022.08.12 |
[운영체제-김덕수 교수님] 가상 메모리(1/5) - 비연속 메모리 할당 (0) | 2022.08.10 |
[운영체제-김덕수 교수님]메모리 관리(3/3) - 가변 파티션 할당 (0) | 2022.08.10 |
[운영체제-김덕수 교수님] 메모리 관리(2/3) - 할당 (0) | 2022.08.10 |
Comments