[8주차] - 메모리관리 Ⅱ, Ⅲ
1. 페이징
2. Paging Hardware with TLB
- Context switch가 오버헤드가 크다고 표현하는 것은 가득채워둔 TLB를 다 날리고 새로 채워야하는 것도 한 부분을 차지한다
3. Two-Level Page Table
- Address space가 더 커지면 다단계 페이지 테이블 필요
- 각 단계의 페이지 테이블이 메모리에 존재하므로 Logical address의 Physical address 변환에 더 많은 메모리 접근 필요
- TLB를 통해 메모리 접근 시간을 줄일 수 있음
5. Memory Protection
6. Inverted Page Table
- page table이 매우 큰 이유
- 모든 process 별로 그 logical address에 대응하는 모든 page에 대해 page table entry가 존재
- 대응하는 page가 메모리에 있든 아니든 간에 page table에는 entry로 존재
- Inverted page table
- Page frame 하나당 page table에 하나의 entry를 둔 것
- 각 page table entry는 각각의 물리적 메로리의 page frame이 담고 있는 내용 표시
- 단점
- 테이블 전체를 탐색해야 함 (오버헤드 심하다)
- 조치
- associateive register 사용(expensive)
7. Shared Page
- 2가지 제약조건이 존재함
- Read-only, 동일한 logical address에 있어야 함
8. Segmentation
- paging과의 차이점
- paging은 동일한 크기로 나누어서 관리
- segmentation은 의미 단위로 관리
- 프로그램은 의미 단위인 여러 개의 segment로 구성
- 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의
- 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능
- 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨
- segment는 다음과 같은 logical unit들임
- main()
- function
- global variables
- stack
- symbol table, arrays
9. Segmentation Architecture
10. Paged Segmentation
본 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.