일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 오브젝트
- async
- struct
- Swift
- COLOR
- 동시성
- Linked List
- UserDefaults
- decode
- 인프런
- 100 days of SwiftUI
- Codable
- 알고리즘
- 프로세스 스케줄링
- 앨런
- IOS
- Apple Developer Academy
- deadlock
- 상호배제
- 동기화
- scrollview
- 데드락
- @state
- Algorithm
- core data
- 가상 메모리
- forEach
- 비동기
- 운영체제
- SwiftUI
Archives
- Today
- Total
기어가더라도 제대로
[운영체제-김덕수 교수님] 가상 메모리(4/5) - 세그멘테이션 시스템 본문
- Paging system
- 물리적으로 프레임을 나누는 시스템
- Segmentation system
- 논리적으로 block을 나누는 시스템
- Hybrid system
Segmentation System
- 프로그램을 논리적 block 으로 분할 (segment)
- block 의 크기가 서로 다를 수 있음
- 예) stack, head, main procedure, shared lib, Etc.
- 특징
- 메모리를 미리 분할 하지 않음
- VPM과 유사
- Segment sharing/ protection 이 용이함
- Address mapping 및 메모리 관리의 overhead가 큼
- No internal fragmentation
- External fragmentation 발생 가능
- 메모리를 미리 분할 하지 않음
- 논리적인 분할
- segment-1,2,3 의 크기는 각각 다를 수 있다.
- 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 length 를 기록하는 열
- 권한을 세그먼트마다 따로 적어 놓는다.
- main memory 에 a(s) 를 찾아서 들어가는 것까지는 유사한데, length 의 개념이 추가된 것이니까 새롭게 이해해야할 부분이 있다.
- a(s) + d 의 값이 실제로 사용할 메모리의 주소가 되는 것이고,
- L(s) 는 해당 세그먼트의 크기를 나타낸다.
세그먼트 시스템에서 실제 메모리 주소 찾는 순서
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 > l(s)),
segment overflow exception 처리 모듈을 호출
3. 허가되지 않은 연산일 경우(protection bit field 검사),
segment protection exception 처리 모듈을 호출
4. 실제 주소 r 계산(r = a(s) + d)
5. r 로 메모리에 접근
- Memory management
- VPM 과 유사
- segment 적재 시, 크기에 맞추어 분할 후 적재
- VPM 과 유사
- Segment sharing / protection
- 논리적으로 분할되어 있어, 공유 및 보호가 용이함
요약
- 프로그램을 논리 단위로 분할(segment) / 메모리를 동적으로 분할
- 내부 단편화 문제 없음
- segment sharing / protection 이 용이함
- Paging system 대비 관리 overhead 가 큼
- 필요한 segment 만 메모리에 적재하여 사용
- 메모리의 효율적 활용
- Segment mapping overhead
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능
- Paging system 이 갖는 단점과 유사
Paging vs. Segmentation
Paging system | Segmentation system |
Simple, Low overhead | High management overhead |
No logical concept for partitioning | Logical concept for partitioning |
Complex page sharing mechanism | Simple and easy sharing mechanism |
이 둘을 합치는 "공학적 방법(퓨전)"을 도입하는 것이 필요해 보인다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제-김덕수 교수님] 가상 메모리 관리(1/6) - 비용 모델, 하드웨어 요소 (0) | 2022.08.12 |
---|---|
[운영체제-김덕수 교수님] 가상메모리(5/5) - 하이브리드 시스템 (0) | 2022.08.12 |
[운영체제-김덕수 교수님] 가상 메모리(3/5) - 페이징 시스템의 메모리 관리 (0) | 2022.08.12 |
[운영체제-김덕수 교수님] 가상 메모리(2/5) - 페이징 시스템 (0) | 2022.08.10 |
[운영체제-김덕수 교수님] 가상 메모리(1/5) - 비연속 메모리 할당 (0) | 2022.08.10 |
Comments