본문 바로가기
OS/os 공부

9-2. Virtual Memory (Segmentation System)

by Success T.H.I.E.F 2022. 1. 6.

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

  1. SMT가 저장되어있는 주소 b에 접근
  2. SMT안에서 segment number 이용 enrty를 찾는다.
  3. 찾은 entry가 존재하지 않는다면? segment fault ->swap device로부터 해당 segment 메모리에 적재 후 smt갱신
    존재는 하지만 offset이 segment 길이보다 긴 경우? segment overflow exception 처리

    존재는 하지만 허가되지 않은 연산을 요구하는 경우(protection bit field 검사) ->segment protection exception 처리 
  4. 실제 주소 r계산
  5. r로 메모리 접근

Memory management

segmentation system은 Variable partition multiprograming과 유사하며 segment적재 시 크기에 맞추어 분할 후 적재한다.

 

Segment sharing/protection

논리적으로 분할되어 있어 paging 시스템에 비해 공유와 보호가 용이하다. 

 

Segmentation system 요약

  • 장점 :
    프로그램을 논리 단위로 분할하여 내부 단편화 문제가 없고 shaing과 protection이 용이하다. 
    메모리의 효율적 활용이 가능하다.
  • 단점:
    segment의 크기가 달라 paging system 대비 관리 overhead가 크다.
    SMT를 저장하기 위한 메모리 공간 및 추가적인 메모리 접근이 필요하나 이는 전용 HW활용으로 해결 가능하다.