Multilevel Paging and Performance
- Address space가 더 커지면 다단계 페이지 테이블 필요
- 각 단계의 페이지 테이블이 메모리에 존재하므로 logical address의 physical address 변환에 더 많은 메모리 접근 필요
- TLB를 통해 메모리 접근 시간을 줄일 수 있음
- 4단계 페이지 테이블을 사용하는 경우
- 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns이고
- TLB hit ratio가 98%인 경우
- effective memory access time = 0.98 x 120 + 0.02 x 520 = 128 nanoseconds.
- 결과적으로 주소변환을 위해 28ns만 소요
Valid(v) / Invalid(i) Bit in a Page Table
- Page table의 각 entry 마다 아래의 bit를 둔다.
- Protection bit
- Page 연산에 대한 접근 권한(read/write/read-only)
- Page Table은 프로세스마다 독립적으로 존재, 본인의 Page에 대해서만 주소변환이 가능하고 다른 프로세스의 접근은 애초에 불가능하다.
- Valid-invalid bit
- valid: 해당 주소의 frame에 그 프로세스를 구성하는 유효한 내용이 있음을 뜻함 (접근 허용)
- invlid: 해당 주소의 frame에 유효한 내용이 없음을 뜻함 (접근 불허)
- 프로세스가 그 주소 부분을 사용하지 않는 경우
- 해당 페이지가 메모리에 올라와 있지 않고 swap area에 있는 경우
- Protection bit
Inverted Page Table
- Page table이 매우 큰 이유
- 모든 preocess 별로 그 logical address에 대응하는 모든 page에 대해 page table entry가 존재
- 대응하는 page가 메모리에 있든 아니든 간에 page table에는 entry로 존재
- Inverted page table
- 프로세스가 아닌 시스템 당 1개의 page table을 가지며 entry의 수 = page frame의 수
- Page frame 하나당 page table에 하나의 entry를 둔 것(system-wide)
- 각 page table entry는 각각의 물리적 메모리의 page frame이 담고 있는 내용 표시 (process-id, process의 logical address)
- pid에 따른 p를 통해 page table 내 entry 위치를 확인하고 해당 위치를 framenumber (f)에 넣음으로써 주소변환 가능
- 목적: Page Table을 위한 공간을 절약하기 위해.
- 구성
- pid: 프로세스마다 p가 다르기 때문에 어떤 프로세스의 p인지 구분하기 위한 pid.
- 단점
- 테이블 전체를 탐색해야 함 (시간적 Overhead 존재)
- 조치
- 병렬적으로 탐색하기 위해 associative register 사용 (expensive)
Shared Page
- Shared code
- Re-entrant code (=Pure code), 재진입 가능 코드
- 여러 프로세스가 공유할 수 있는 코드 부분을 같은 물리적인 메모리 프레임으로 맵핑해주는 기법
- read-only로 하여 프로세스 간에 하나의 colde메모리 얼림
- (eg. text editors, comilers, window systems)
- Shared code는 모든 프로세스의 logical address space에서 동일한 위치에 있어야 함
- Private code and data
- 각 프로세스들은 독자적으로 메모리에 올림
- Private data는 logical address space의 아무 곳에 와도 무방
Segmentation
- 프로그램은 의미 단위인 여러 개의 segment로 구성
- 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의
- 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능
- 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨
- Segment는 다음과 같은 logical unit 들임
- main()
- function
- global variables
- stack
- symbol table, arrays
Segmentation Architecture
- Logical address는 다음의 두 가지로 구성: <segment-number, offset>
- segment-number: 세그먼트 번호
- offset: 세그먼트 안에서 얼마나 떨어져 있는지 나타내는 수
- Segment table
- each tble entry has
- base: starting physical address of the segment
- limit: length of the segment
- Segment-table base register(STBR)
- 물리적 메모리에서의 segment table의 위치
- Segment-table length register(STLR)
- 프로그램이 사용하는 segment의 수
- Segment number s is legal if s < STLR
- each tble entry has
Segmentation Hardware
- CPU가 논리 주소를 주면 Segmentnumber와 offset으로 나눔
- Segment table의 시작위치는 레지스터가 갖고 있으므로 거기서부터 Segmentnumber만큼 떨어진 위치에 가면 해당 Segment가 물리적 메모리에 어떤 번지수에 올라가 있는지를 갖고 있음
- 따라서 Physical Address Space에서 요청된 Segment의 위치는 Base Add+Limit이라고 볼 수 있음
- Paging과는 다르게 entry에 두 가지 정보를 가짐
- limit : segment의 길이 (의미단위로 자르기 때문에 동일한 크기를 page로 갖는 paging 기법과 달리 limit이 필요함)
- 2가지 체크사항
- Segmentnumber 가 STLR보다 큰가?
- STLR은 Segment의 개수를 나타내므로 STLR보다 크다면 trap
- Segment의 길이보다 offset이 더 큰가?
- Segment의 길이보다 offset(요청)이 더 크다면 trap
- Segmentnumber 가 STLR보다 큰가?
Segmentation Architecture(Cont.)
- Protection
- 각 세그먼트 별로 protection bit가 있음
- Each entry
- Valid bit = 0 → illegal segment
- Read/Write/Execution 권한 bit
- Sharing
- shared segment
- same segment number
- Allocation
- first fit/ best fit
- external fragmentation 발생
Example of Sementation
- 개수가 많은 페이지에 비해 Sementation은 개수가 많지 않음
- Table을 위한 메모리 낭비는 Sementation이 Paging보다 적음
Sharing of Segmentations
- 공유되는 Segment는 table이 나타내는 limit-base가 같음.
Segmentation with Paging
- Pure segmentation과의 차이점
- Segment-table entry가 segment의 base address를 가지고 있는 것이 아니라 segment를 구성하는 page table의 base address를 가지고 있음
- Segment 당 page table이 존재함
- p: page number, d’: offset in page
- Page 형태로 메모리에 올라감으로써 Allocation문제 방지 가능
- Segmentation을 쓰더라도 Paging기법과 혼합해서 사용하는 것이 대부분임.
*주소 변환을 위한 OS의 역할
없음. 온전히 하드웨어의 몫.
어떠한 프로세스가 CPU를 갖고 메모리에 접근하여 주소변환을 하는 데에는 OS의 개입이 필요 없기 때문
출처
KOCW : 이화여대 반효경 교수님 <운영체제, 2014>
'Computer Science > Operating System(OS)' 카테고리의 다른 글
Virtual Memory(2) (0) | 2022.03.25 |
---|---|
Virtual Memory(1) (0) | 2022.03.25 |
Memory Management(2)-메모리 관리 (1) | 2022.03.21 |
Memory Management(1)-메모리 관리 (0) | 2022.03.21 |
Deadlock-데드락 (0) | 2022.03.17 |