운영체제 9. 가상 메모리 (4) - Segmentation System

728x90
반응형

출처 : https://www.youtube.com/watch?v=Dprd7V842WY

 

이전 장에서 배운 Paging System은 프로세스를 논리적인 단위가 아닌 크기로만 분할함으로써 protection이 복잡해진다는 문제점이 있었다.

 

이번에는 프로세스를 논리적인 단위로 나누는 Segmentation System에 대해서 알아보자.

 

 

Segmentation System

 

  • 프로그램(혹은 프로세스)을 논리적 block으로 분할 (segment)
    • Block의 크기가 서로 다를 수 있음
    • ex) stack, heap, main procedure, shared lib, 등등
  • 특징
    • 메모리를 미리 분할하지 않음. block의 크기가 다를 수 있기 때문
      • VPM(Variable Partition Multi-programming)과 유사
    • Segment sharing / protection이 용이함
    • Address mapping 및 메모리 관리의 overhead가 큼. block의 크기가 서로 다르므로 관리가 복잡함
    • No internal fragmentation
      • External fragmentation 발생 가능

 

 

 

Segmentation System을 그림으로 표현하면 위 그림과 같다.

 

프로세스 하나가 Swap device(=가상 메모리)에 저장되어있다. 이 프로세스를 분할하는데, 논리적으로 분할하였기 때문에 크기가 서로 다르다. 이 크기가 서로 다른 논리적 block을 segment라고 한다.

 

모든 Virtual storage method는 Non-continuous memory allocation이기 때문에 필요한 부분만 메모리에 적재하고, 나머지 부분은 swap device에 머무른다.

 

 

 

  • Segmentation System의 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
    • 나머지는 PMT와 유사하나 2가지가 추가되었다.
      • segment length : 세그먼트의 길이
      • protection bits : 해당 세그먼트에 대해서 프로세스가 가지는 권한. Page는 단순히 크기로만 나누었지만, Segment는 논리적으로 나누었기 때문에 권한을 적어놓음으로써 segment의 접근을 쉽게 보호할 수 있다.

 

 

  • Address mapping (Direct mapping)
    • SMT가 저장되어있는 주소 base address와 segment number * 줄 수를 계산해서 segment address를 출력한다.
    • 해당 segment가 메모리에 적재되어있다면 (residence bit가 1이라면) 해당 segment address에 d(segment address로부터 떨어진 거리)를 더해서 real address를 계산해낸다.

 

 

 

  1. 프로세스의 SMT가 저장되어 있는 주소 b에 접근
  2. SMT에서 segment s의 entry 찾음
    • s의 entry 위치 = b + s * entrySize
  3. 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
    1. residence bit가 0인 경우, swap device로부터 해당 segment를 메모리로 적재한 후, SMT를 갱신
    2. displacement 가 segment length보다 큰 경우 (d > ls) (즉, segment를 벗어난 주소를 access 한다면), segment overflow exception 처리 모듈을 호출
    3. 허가되지 않은 연산일 경우 (protection bit field 검사), segment protection exception 처리 모듈을 호출
  4. real address r을 계산 (r = as + d)
  5. r로 메모리에 접근

 

 

  • Memory management
    • VPM과 유사
      • Segment 적재 시, 크기에 맞추어 분할 후 적재
    • partition : 메모리를 분할한 파티션의 번호
    • start address : 해당 파티션의 시작 주소
    • size : 해당 파티션의 크기
    • current process ID : 해당 파티션을 점유하고 있는 프로세스 ID
    • segment number : 해당 파티션을 점유하고 있는 프로세스의 segment의 번호
    • storage protection key 

 

 

  • Segment sharing / protection
    • 논리적으로 분할되어있어, 공유 및 보호가 용이함

프로세스 안에 편집기(코드 부분), 데이터(데이터 부분) 처럼 논리적으로 나뉘어져 있다. 이 편집기(코드 부분)은 공유가 가능하기 때문에, 메모리에는 한 공간에만 두고 공유해서 사용한다. 

 

공유의 경우 paging system에서는 단순히 크기로만 나누었지만, segment system의 경우 논리적으로 분할하였기 때문에 문제가 발생하지 않는다.

 

보호의 경우 SMT의 protection bit를 통해 보호할 수 있다.

 

 

 

Segmentation System - Summary

 

  • 프로그램을 논리 단위로 분할 (segment) / 메모리를 동적으로 분할
    • 내부 단편화(Internal fragmentation) 문제 없음
    • 장점
      • Segment sharing / protection이 용이함
    • 단점
      • Paging system 대비 관리 overhead가 큼
  • 필요한 segment만 메모리에 적재하여 사용
    • 메모리의 효율적 활용
  • Segment mapping overhead
    • 메모리 공간 및 추가적인 메모리 접근이 필요
    • 전용 HW 호라용으로 해결 가능

 

 

Paging vs Segmentation

 

  • Paging system
    • 장점 
      • 간단함
      • overhead 낮음
    • 단점
      • 단순히 크기로만 파티셔닝을 함
      • 공유, 보호가 복잡함

 

  • Segmentation system
    • 장점
      • 논리적 개념의 파티셔닝을 함
      • 공유, 보호가 간단하고 쉬움
    • 단점
      • 오버헤드가 큼

 

 

728x90
반응형