티스토리 뷰
운영체제
가상메모리 #3 - Virtual Storage Methods(Segmentation system, Hybrid paging/segmentation system)
˙ᵕ˙ 2021. 1. 17. 19:36Virtual Storage Methods
- Paging system
-
Segmentation system
- Hybrid paging/segmentation system
Segmentation System
- 프로그램을 논리적 block으로 분할 (segment)
- Block의 크기가 서로 다를 수 있음
- 예) stack, heap, main procedure, shared lib, Etc.
- 특징
- 메모리를 미리 분할 하지 않음
- VPM과 유사
- Segment sharing/protection이 용이 함
- Address mapping 및 메모리 관리의 overhead가 큼
- No internal fragmentation
- External fragmentation 발생 가능
- 메모리를 미리 분할 하지 않음
Segmentation System (Example)
- 논리적 분할 이므로 크기가 다를 수 있다.
Address mapping
- Virtual address: v = (s , d)
- s : segment number
- d : displacement in a segment
- Segment Map Table (SMT)
- Address mapping mechanism
- Paging system과 유사
Segment Map Table
- segment number : 세그먼트 번호
- residence bit : 메모리 적재 유무
- secondary storage address : 세그먼트가 저장된 위치
- segment length : 세그먼트 길이( 크기가 다를 수 있기 때문 )
- protection bits : 프로세스가 가지는 권한
- segment address in memory : 세그먼트의 메모리 위치
Address mapping (direct mapping)
- 프로세스의 SMT가 저장되어 있는 주소 b에 접근
- SMT에서 segment s의 entry 찾음
- s의 entry 위치 = b + s * entrySize
- 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
- 존재 비트가 0 인 경우,
// missing segment fault
swap deive로부터 해당 segment를 메모리로 적재
SMT를 갱신 - 변위(d)가 segment 길이보다 큰 경우 (d > ls ),
segment overflow exception 처리 모듈을 호출 - 허가되지 않은 연산일 경우 (protection bit field 검사),
segment protection exception 처리 모듈을 호출
- 존재 비트가 0 인 경우,
- 실제 주소 r 계산 (r = as + d)
- r로 메모리에 접근
Memory management
- VPM과 유사
- Segment 적재 시, 크기에 맞추어 분할 후 적재
- partition : 나누어진 메모리 영역의 번호
- start address : 시작 주소
- size : 크기
- current process ID : 현재 사용중인 프로세스 ID
- segment number : segment 번호
Segment sharing/protection
- 논리적으로 분할되어 있어, 공유 및 보호가 용이함
Segmentation System
- 프로그램을 논리 단위로 분할 (segment) / 메모리를 동적으로 분할
- 내부 단편화 문제 없음
- Segment sharing/protection이 용이함
- Paging system 대비 관리 overhead가 큼
- 필요한 segment만 메모리에 적재하여 사용
- 메모리의 효율적 활용
- Segment mapping overhead
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능
Paging vs Segmentation
Paging system | Segmentation System |
• Simple • Low overhead • No logical concept for partitioning • Complex page sharing mechanism |
• High management overhead • Logical concept for partitioning • Simple and easy sharing mechanism |
Hybrid Paging/Segmentation
- Paging과 Segmentation의 장점 결합
- 프로그램 분할
- 논리 단위의 segment로 분할
- 각 segment를 고정된 크기의 page들로 분할
- Page단위로 메모리에 적재
Address mapping
- Virtual address : v = (s, p, d)
- s : segment number
- p : page number
- d : offset in a page
- SMT와 PMT 모두 사용
- 각 프로세스 마다 하나의 SMT
- 각 segment마다 하나의 PMT
- Address mapping
- Direct, associated 등
- 메모리 관리
- FPM과 유사
SMT in hybrid mechanism
- 각 프로세스 마다 하나의 SMT를 가진다.
- 메모리에 올라가는 것은 page이므로 residence bit는 필요하지 않다.
- PMT address : 각 세그먼트들의 PMT 주소
PMT for a segment k in hybrid mechanism
- page가 메모리에 올라가므로 residence bit 가 있다.
Address mapping tables
- 각 프로세스마다 SMT 존재
- 각 세그먼트마다 PMT 존재
Direct (address) mapping
- 프로세스의 SMT가 저장되어 있는 주소 b에 접근
- SMT에서 segment s의 entry 찾음
- s의 entry 위치 = b + s * SMTentrySize
- 찾아진 entry의 PMT가 저장되어 있는 주소 bs에 접근
- PMT에서 page p의 entry 찾음
- p의 entry 위치 = bs + p * PMTentrySize
- 찾아진 Entry에 대해 존재 비트 검사
- 존재 비트가 0 인 경우,(page fault)
swap deive로부터 해당 page를 메모리로 적재
PMT를 갱신 3-2 단계 수행 - 존재 비트가 1 인 경우,
해당 entry에서 page frame 번호 p`를 확인
- 존재 비트가 0 인 경우,(page fault)
- 실제 주소 r 계산 (r = p` * pageSize + d)
- r로 메모리에 접근
Hybrid Paging/Segmentation
- 논리적 분할(segment)와 고정 크기 분할(page)을 결합
- Page sharing/protection이 쉬움
- 메모리 할당/관리 overhead가 작음
- No external fragmentation
- internal fragmentatioin 발생 가능
- 전체 테이블의 수 증가
- 메모리 소모가 큼
- Address mapping 과정이 복잡
- Direct mapping의 경우, 메모리 접근이 3배
- 성능이 저하될 수 있음
강의
www.youtube.com/watch?v=Dprd7V842WY&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=30
www.youtube.com/watch?v=ctfTntZ-RBo&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=31
'운영체제' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring
- Free space management
- Replacement Strategies
- Allocation methods
- I/O Mechanisms
- RAID Architecture
- Variable allocation
- gradle
- Disk Scheduling
- 하둡
- springboot
- Disk System
- 빅데이터
- I/O Services of OS
- hadoop
- JSON
- linux
- jdbc
- SPARK
- 빅데이터 플랫폼
- HDFS
- maven
- mapreduce
- vmware
- Flume
- oracle
- SQL
- Java
- File Protection
- aop
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함