📌Segmentation System
- 프로그램을 논리적 block으로 분할 (segment)
- Block의 크기가 서로 다를 수 있음
- 예) stack, heap, main procedure, shared lib, 등
- 특징
- 메모리를 미리 분할 하지 않음 (크기가 다르므로, VPM과 유사)
- Segment sharing/proteection이 용이함
- Address mapping 및 메모리 관리(복잡함)의 Overhead가 큼
- No internal fragmetation
- 외부 단편화는 발생 가능 (메모리에서 빠져나가는 순서가 다르기 때문에)
- Address mapping
- Virtual address: v=(s, d) (s=segment num, d=dispalcement, offset)
- Segment Map Table (SMT)
- Address mapping mechanism는 paging system과 유사
- direct mapping과 매우 유사(virtual address부분의 변수만 다름)
- 프로세스의 SMT가 저장되어 있는 주소 b에 접근
- SMT에서 sgment s의 entry 찾음
- s의 entry 위치 = b + s*entrySize
- 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
- 존재 비트가 0인 경우 = segment fault
- 변위(d)가 segment 길이보다 큰 경우 (d > ls), segment overflow exception 처리 모듈 호출
- 허가되지 않은 연산일 경우 (protection bit field 검사), segment protection exception 처리 모듈을 호출
- 실제 주소 r 계산 r = as + d
- r로 메모리에 접근
- Segment sharing/protection
- 노리적으로 분할되어 있어, 공유 및 보호가 용이함
공유할때 점프하는 부분에서 문제가 생겼는데 Segment는 어차피 편집기 안에서 점프하고 이는 논리적인 공간이기 때문에 점프 거리만 외부에서 알려주면 됨
요약
- 프로그램을 논리 단위로 분할(segment) / 메모리를 동적으로 분할
- 단편화 ❌, sharing / protection이 용이
- paging system 대비 관리overhead가 큼
- 필요한 segment만 메모리에 적재하여 사용, 메모리 효율적 활용
- Segment mapping overhead = Paging과 유사
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능
📌Hybrid Paging System
- Paging과 Segmentatiton의 장점을 결합
- 프로그램 분할
- 논리 단위의 segment로 분할
- 각 segment를 고정된 크기의 page들로 분할
- Page 단위로 메모리에 적재
Address mapping
- Virtual address : v = (s, p, d)
- s : segment num, p : page num, d : offset in a apge
- SMP와 PMT 모두 사용
- 각 프로세스 마다 하나의 SMT
- 각 segment 마다 하나의 PMT
- Address mapping
- 메모리관리는 FPM과 유사 = Paging system과 유사
- SMT 하이브리드
- No residence bit ➡ 메모리에 바로 올리는 작업이 아니기 때문에
- PMT address가 추가 됨, 각 segment의 PMT가 어디있는 지 찾기 위해
-
- 메모리 접근을 3번해야한다는 단점이 있음. 하지만 장점이 더 큼
요약
- 논리적 분할(segment)과 고정 크기 분할(page)을 결합
- 페이지 공유 및 보호가 쉬움
- 메모리 할당/관리 overhead가 작음
- external fragmentation❌, 내부 단편화는 있음
- 전체 테이블 수의 증가 ➡ 메모리 소모가 크고 Address mapping 과정이 복잡함
- Direct mapping의 경우 메모리 접근이 3배 ➡ 성능이 저하될 수 있음
App은 작은 OS임 이를 활용하면 효율적인 프로그램 만들 수 있음 !!
https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATEC