-
9-2. Virtual Memory (Segmentation System)OS/os 공부 2022. 1. 6. 14:30
Segmentation System
프로그램을 논리적 block(segment)로 분할하므로 block의 크기가 서로 다를 수 있다.
ex) tack, heap, main, procedure, shared lib...
논리적 단위로 나누기 때문에 메모리를 미리 분할하지 않는다.
Segment의 공유와 보안이 용이하지만 Address mapping과 메모리 관리의 overhead가 크다.
또한 내부 단편화는 발생하지 않으나 외부 단편화는 발생이 가능하다.
Segmentation Address Mapping
가상 주소 v =(s, d)
s = segment number
d = offset
SMT(Segment Map Table)
PMT와 다르게 segment length와 protection bits테이블이 추가되었다.
direct mapping
- SMT가 저장되어있는 주소 b에 접근
- SMT안에서 segment number 이용 enrty를 찾는다.
- 찾은 entry가 존재하지 않는다면? segment fault ->swap device로부터 해당 segment 메모리에 적재 후 smt갱신
존재는 하지만 offset이 segment 길이보다 긴 경우? segment overflow exception 처리
존재는 하지만 허가되지 않은 연산을 요구하는 경우(protection bit field 검사) ->segment protection exception 처리 - 실제 주소 r계산
- r로 메모리 접근
Memory management
segmentation system은 Variable partition multiprograming과 유사하며 segment적재 시 크기에 맞추어 분할 후 적재한다.
Segment sharing/protection
논리적으로 분할되어 있어 paging 시스템에 비해 공유와 보호가 용이하다.
Segmentation system 요약
- 장점 :
프로그램을 논리 단위로 분할하여 내부 단편화 문제가 없고 shaing과 protection이 용이하다.
메모리의 효율적 활용이 가능하다. - 단점:
segment의 크기가 달라 paging system 대비 관리 overhead가 크다.
SMT를 저장하기 위한 메모리 공간 및 추가적인 메모리 접근이 필요하나 이는 전용 HW활용으로 해결 가능하다.
'OS > os 공부' 카테고리의 다른 글
컨텍스트 스위칭과 스와핑의 차이점 (0) 2022.01.10 9-3. Virtual Memory (Hybrid paging/segmentation system) (0) 2022.01.06 9-1. Virtual Memory (Non-continous allocation)_Paging system (0) 2022.01.06 8.Main memory management(2)_Memorry Allocation (0) 2022.01.01 8.Main memory management(1)_용어와 개념리마인드 (0) 2021.12.30