Virtual storage methods
- Paging system
- Segmentation system
- Hybrid paging/segmentation system
Segmentation system
프로그램을 논리적 block으로 분할함 (분할된 블럭: segment)
- Block의 크기가 서로 다를 수 있음
- 예) stack, heap, main procedure, shared lib, Etc...
특징
- 블록의 크기가 다를 수 있기 때문에 메모리를 미리 분할 하지 않음 (Variable Partition Multiprogramming과 유사)
- Segment sharing/protection이 용이하다.
- Address mapping 및 메모리 관리의 Overhead가 큼 (크기가 다르기 때문에 복잡하다..)
- 내부 단편화가 발생하지 않음 (필요한 만큼 페이지를 잘라서 주기 때문에) (외부 단편화는 발생가능하다)
프로세스가 segment 여러개로 나누어져 있는데 크기가 서로 다르다 (논리적으로 분할 했기 때문)
나누어진 segment들은 가상 메모리 시스템 안에 존재한다
필요한 것만 swap device에 유지되는 형태는 paging 시스템과 동일하다
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(SMT)
residence bit: 메모리에 있는지 확인
secondary storage address: swap device에 저장된 주소
segment address in memory: memory에 저장된 주소
segment length: 세그먼트의 길이
protection bits(R/W/X/A): 해당 세그먼트에 프로세스가 가지고 있는 권한을 나타냄
Address Mapping(Direct mapping)
page System에서 썼던 direct mapping 방법과 똑같다고 보면 된다.
vitrual address가 s와 d로 주어짐
- 해당 프로세스의 SMT가 저장되어 있는 주소 b에 접근
- 해당 SMT에서 segment s에 대한 entry를 찾음 (S의 entry위치 = b+s*entrysize)
- 찾아진 entry의 존재를 검사함
- Residence bit = 0 (메모리에 없는경우) 실패, swap device에서 해당 segment를 메모리로 적재하고 SMT를 갱신 후 3-2 단계 이후 과정을 수행함
- Residence bit = 1인경우, 해당 entry에서 segment 주소번호 As를 확인
- 이때 변위(d)가 segment 길이보다 큰 경우(d>ls), segment overflow exception 처리 모듈을 호출
- 허가되지 않은 연산일 경우 (protection bit field검사), segment protection exception 처리 모듈을 호출
- As와 떨어진 거리 d를 사용하여 실제 주소 r 형성(r = as + d)
- 실제 주소 r로 접근하여 주기억 장치에 접근
Segmentation system - Memory management
VPM과 유사함 (Segment 적재시, 크기에 맞추어 분할 후 적재함)
Segment sharing & protection
논리적으로 분할되어 있어, 공유 및 보호가 용이함
Segmentation system - Summary
- 프로그램을 논리 단위로 분할(Segment) / 메모리를 동적으로 분할
- 내부 단편화 문제 없음
- Segment sharing/protection이 용이함
- Paging System 대비 관리 Overhead가 큼
- 필요한 Segment만 메모리 적재하여 활용 (메모리의 효율적 활용)
- Segment mapping overhead
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능
Paging System | Segmentation System |
간단함 | 관리 오버헤드가 큼 |
오버헤드 적음 | |
파티션시 logical한 컨셉이 없다 | 논리적으로 나눔 |
공유하거나 보호에 복잡하다 | 관리나 보호가 간단함 |
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS]10. 가상 메모리 관리 - SW components (0) | 2022.04.25 |
---|---|
[OS] 10. 가상 메모리 관리 - Cost model, HW components (0) | 2022.04.22 |
[OS] 9. Virtual Memory - Paging system (0) | 2022.04.17 |
[OS] 9. Virtual Memory - Non-continuous allocation (0) | 2022.04.15 |
[OS] 8. 메모리 관리 - Variable Partition Multi-programming (0) | 2022.04.13 |