Segmentation system
- 프로그램을 논리적 block으로 분할
- Segment : 논리적으로 분할된 block
- 논리적으로 분할하기 때문에 block의 크기가 다름
특징
- Block의 크기가 다르므로 메인 메모리를 미리 분할하기 않음
- VPM과 유사
- 공유와 보호에 용이
- block의 크기가 달라서 관리하기 힘들기 때문에 overhead가 큼
- 내부 단편화 발생하지 않음
- 외부 단편화 발생
Address mapping
- 가상 주소 : v = (s, d)
- SMT(segment map table) 사용
- 동작
* paging system과 유사
-> 프로세스의 SMT가 저장되어 있는 주소 b에 접근
-> SMT에서 segment s의 entry를 찾음(위치 : b + s * entrySize)
-> 찾아진 entry에 대해 다음 단계를 순차적으로 실행
-> residence=0인 경우 (segment fault), swap device로부터 해당 segment를 메모리로 적재하고 SMT 갱신
-> 변위(d)가 segment 길이보다 큰 경우 (d > ls), segment overflow exception 처리 모듈을 호출, 문제 없으면 넘어감
-> 허가되지 않은 연산일 경우(protection bit field 검사), segment protection exception 처리 모듈을 호출, 문제 없으면 넘어감
-> 실제 주소 r계산(r = as + d)하고 메모리에 접근
Segment 관리
- VPM(variable partition multiprogramming)과 유사
- segment 적재시, 크기에 맞추어 분할 후 적재
Partition table
Segment sharing/protection
- 논리적으로 분할되어 있어서 공유 및 보호가 용이
- 공유 용이 why? page system에서 공유할 때는 branch 때문에 선택 영역이 아닌 다른 영역을 가리키는 문제가 발생. 예를 들어, 편집기(43062 ~ 68348) 내에서만 가리켜야 하는데 범위를 벗어나서 가리키는 문제 발생. 하지만 segment는 논리적으로 분할했기 때문에 이런 문제가 발생하지 않음
- 보호 용이 why? 강의에서는 protection bit를 사용하면 된다라고 했지만 이는 page system과도 동일... 나의 생각은 역시나 protection bit에서도 branch와 관련된 문제가 발생하기 때문이라고 생각
Paging system VS Segmentation system
- paging system
* 간단한 관리
* 낮은 overhead
* 크기대로 분할
* 복잡한 공유
- segmentation system
* 복잡한 관리
* 높은 overhead
* 논리적으로 분할
* 쉬운 공유
본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
'Software Courses > Operating System' 카테고리의 다른 글
[Memory] Virtual memory management (0) | 2020.12.12 |
---|---|
[Memory] Hybrid paging segmentation system (0) | 2020.12.10 |
[Memory] Paging system (0) | 2020.12.09 |
[Memory] Memory allocation : Non-continuous memory allocation (0) | 2020.12.09 |
[Memory] Memory allocation : Continuous memory allocation (0) | 2020.12.09 |