출처 : 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 발생 가능
- 메모리를 미리 분할하지 않음. block의 크기가 다를 수 있기 때문
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과 유사
- Virtual address : v = (s, d)
- Segment Map Table
- 나머지는 PMT와 유사하나 2가지가 추가되었다.
- segment length : 세그먼트의 길이
- protection bits : 해당 세그먼트에 대해서 프로세스가 가지는 권한. Page는 단순히 크기로만 나누었지만, Segment는 논리적으로 나누었기 때문에 권한을 적어놓음으로써 segment의 접근을 쉽게 보호할 수 있다.
- 나머지는 PMT와 유사하나 2가지가 추가되었다.
- Address mapping (Direct mapping)
- SMT가 저장되어있는 주소 base address와 segment number * 줄 수를 계산해서 segment address를 출력한다.
- 해당 segment가 메모리에 적재되어있다면 (residence bit가 1이라면) 해당 segment address에 d(segment address로부터 떨어진 거리)를 더해서 real address를 계산해낸다.
- 프로세스의 SMT가 저장되어 있는 주소 b에 접근
- SMT에서 segment s의 entry 찾음
- s의 entry 위치 = b + s * entrySize
- 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
- residence bit가 0인 경우, swap device로부터 해당 segment를 메모리로 적재한 후, SMT를 갱신
- displacement 가 segment length보다 큰 경우 (d > ls) (즉, segment를 벗어난 주소를 access 한다면), segment overflow exception 처리 모듈을 호출
- 허가되지 않은 연산일 경우 (protection bit field 검사), segment protection exception 처리 모듈을 호출
- real address r을 계산 (r = as + d)
- r로 메모리에 접근
- Memory management
- VPM과 유사
- Segment 적재 시, 크기에 맞추어 분할 후 적재
- partition : 메모리를 분할한 파티션의 번호
- start address : 해당 파티션의 시작 주소
- size : 해당 파티션의 크기
- current process ID : 해당 파티션을 점유하고 있는 프로세스 ID
- segment number : 해당 파티션을 점유하고 있는 프로세스의 segment의 번호
- storage protection key
- VPM과 유사
- 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
- 장점
- 논리적 개념의 파티셔닝을 함
- 공유, 보호가 간단하고 쉬움
- 단점
- 오버헤드가 큼
- 장점
'Study > 운영체제' 카테고리의 다른 글
운영체제 10. 가상 메모리 관리 (1) - Cost model, HW components (0) | 2023.12.04 |
---|---|
운영체제 9. 가상 메모리 (5) - Hybrid Paging-Segmentation System (2) | 2023.12.04 |
운영체제 9. 가상 메모리 (3) - paging system (2) (0) | 2023.11.30 |
운영체제 9. 가상 메모리 (2) - Paging system (0) | 2023.11.29 |
운영체제 9. 가상 메모리 (1) - Non-continuous allocation (2) | 2023.11.27 |