<쉽게 배우는 운영체제> 교재를 참고하였습니다.
세그먼테이션 기법의 구현
세그먼테이션 기법
- 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용
세그먼테이션 테이블segmentation table
- 세그먼트의 크기를 나타내는 limit와 물리 메모리상의 시작 주소를 나타내는 address가 있음
- 프로세스 크기에 따라 메모리를 분할하기 때문에 매핑 테이블에 크기 정보를 포함
- 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안 되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 size 대신 제한을 뜻하는 limit를 사용
- 세그먼테이션 기법에서도 물리 메모리가 부족할 때 스왑 영역을 사용
- 크기가 100B인 프로세스 D(세그먼트 3)가 스왑 영역에 있고, 세그먼테이션 테이블의 address에 I(invalid)라고 표시되어 있음
- 메모리를 프로세스 단위로 관리함으로써 페이지 테이블이 작고 단순함 (장점)
- 물리메모리의 외부 단편화로 인해 관리 복잡함
세그먼테이션 기법의 주소 변환
프로세스 A의 32번지에 접근할 때 주소 변환 과정
프로세스 A=세그먼트 0, 프로세스 B=세그먼트 1, 프로세스 C=세그먼트 2
① 가상 주소를 구함 (VA=<0, 32>) S=0, D=32 여기서 S는 세그먼트 번호, D는 세그먼트 시작지점에서 해당 주소까지의 거리
② 세그먼테이션 테이블에서 세그먼트 0의 시작 주소를 알아낸 후 시작 주소 120에 거리 32를 더하여 물리 주소 152번지를 구함 (이때 메모리 관리자는 거리가 세그먼트의 크기보다 큰지 점검하고 만약 크다면 메모리 오류를 출력하고 해당 프로세스를 강제종료하며, 크지 않다면 물리 주소를 구함)
③ 물리 주소 152번지에 접근하여 원하는 데이터를 읽거나 씀
- 세그먼테이션 테이블의 limit는 메모리 보호 역할
- 트랩은 자신의 영역을 벗어나는 주소에 접근하거나 숫자를 0으로 나누는 것과 같이 의도치 않은 인터럽트를 말함
- 트랩이 발생하면 운영체제는 사용자에게 세그먼테이션 오류 (segmentation fault) 메시지를 보냄.
'전공 > 운영체제' 카테고리의 다른 글
[심화]Ch08. 가상 메모리의 기초_05)캐시 매핑 기법 (0) | 2023.06.11 |
---|---|
Ch08. 가상 메모리의 기초_04)세그먼테이션-페이징 혼용 기법 (1) | 2023.06.10 |
Ch08. 가상 메모리의 기초_02)페이징 기법(2) (0) | 2023.06.08 |
Ch08. 가상 메모리의 기초_02)페이징 기법(1) (1) | 2023.06.08 |
Ch08. 가상 메모리의 기초_01)가상 메모리의 개요 (0) | 2023.05.21 |
댓글