이 포스팅은 한국기술교육대학 김덕수 교수님의 강의를 참고하여 작성했습니다.
이전 포스팅에서는 Paging method의 공유와 보안에 대해서 다루며 해당 method에 대한 정리를 했다.
Paging method는 프로그램(프로세스)의 논리적 구조 고려하지 않아서 Page sharing/protection이 복잡해진다는 것을 확인했다.
이번 포스팅에서는 Segmentation system을 다뤄본다.
Paging system의 한계점을 어떻게 보안하는지에 대해 다루겠다.
#1 Segmentation system
프로그램(프로세스)을 논리적 block으로 분할(segment)
- Block의 크기가 서로 다를 수 있음
특징 :
- 메모리를 미리 분할 하지 않음 (VPM과 유사)
- Segment sharing/protection 용이 함
- Address mapping 및 메모리 관리의 overgead가 큼 (복잡하다)
- No internal fragmentatino (External fragmentation 발생 가능, 서로 다른 크기의 빈 공간 발생)
Address mapping
virtual address : v = (s , d)
- s : segment number
- d : displacement in a segment
Segment Map Table (SMT)
Address mapping mechanism
- Paging system과 유사
PMT와 다른것 :
segment length : 크기 기록
protection bits (R/W/X/A) : 함수, 데이터에 대한 프로세스가 가지는 권한
"paging system에서는 블록이 나뉘어 있을 수 있어서 관리가 복잡했다.
하지만 segment system에서는 논리적으로 메모리가 할당되어 관리에 용이하다."
Address mapping (direct mapping)
1. 프로세스의 SMT가 저장되어 있는 주소 b에 접근
2. SMT에서 segment s의 entry 찾음
- s의 entry 위치 = b + s * entrySize
3. 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
(1) 존재 비트가 0인 경우,
// missing segment fault
swap device로부터 해당 segment를 메모리로 적재
SMT를 갱신
(2) 변위(d)가 segment 길이보다 큰 경우 (d > ls),
segment overflow exception 처리 모듈을 호출
(3) 허가되지 않은 연산일 경우 (protection bit field 검사),
segment protection exception 처리 모듈을 호출
4. 실제 주소 r 계산 (r = as + d)
5. r로 메모리에 접근
#2 Memory management
VPM과 유사
- Segment 적재 시, 크기에 맞추어 분할 후 적재
Segment sharing/protection
- 논리적으로 분할되어 있어, 공유 및 보호가 용이함
#3 정리
1. 프로그램을 논리 단위로 분할 (segment)
/ 메모리를 동적으로 분할
- 내부 단편화 문제 없음
- Segment sharing/protection 용이
- Paging system 대비 관리 overhead 큼
유동적이다 > 관리에 어렵다.
2. 필요한 segment만 메모리에 적재하여 사용
- 메모리의 효율적 활용
3. Segment mapping overhead (Paging system과 유사)
- (SMT 저장을 위한) 메모리 공간및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능
#4 Paging vs Segmentation
Paging system | Segmentation system |
Simple | High management overhead |
Low overhead | - |
No logical concept for partitioning | Logical concept for partitioning |
Complex page sharing mechanism | Simple and easy sharing mechanism |
긴 글 읽어주셔서 감사드립니다.
22.12.02
'TIL (Today I Learned) > 컴퓨터 시스템(CS)' 카테고리의 다른 글
[CS] CS:APP #9 (1) | 2022.12.06 |
---|---|
[CS] 가상 메모리 Hybrid system #5 (0) | 2022.12.02 |
[CS] 가상 메모리 Memory Management #3 (0) | 2022.12.01 |
[CS] 가상 메모리 Paging System #2 (0) | 2022.12.01 |
[CS] 가상 메모리 VItual Storage (Memory) #1 (0) | 2022.12.01 |
댓글