세그먼테이션 기법
: 가상 메모리를 프로세스의 크기에 따라 세그먼트로 분할하여 메모리를 관리하는 기법
장점: 하나의 세그먼트 단위로 통제가 가능하다
단점: 외부 단편화가 발생한다
세그먼테이션 테이블 segmentation table
: 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용한다.
- 세그먼트의 크기를 나타내는 limit과 물리 메모리상의 시작 주소를 나타내는 address가 있다.
- 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 size 대신에 제한을 뜻하는 limit을 사용한다.
- 세그먼테이션 기법에서도 페이징 기법과 동일하게 물리 메모리가 부족할 때는 스왑 영역을 사용한다.
(테이블에 I (invalid)라고 표시되어 있으면 해당 프로세스가 스왑 영역에 있다는 뜻)
세그먼테이션 기법의 주소 변환
1. 가상 주소를 구한다. VA=<S, D>
2. 세그먼테이션 테이블에서 원하는 세그먼트의 시작 주소를 알아낸 후 시작 주소에 D(거리)를 더하여 물리 주소를 구한다.
-> 이때 메모리 관리자는 거리가 세그먼트의 크기보다 큰지 점검하고 만약 크다면 메모리 오류(=트랩)을 출력하고 해당 프로세스를 강제 종료한다.
3. 구한 물리 주소로 접근하여 원하는 데이터를 읽거나 쓴다.
예) 프로세스 A의 32번지에 접근할 때 주소 변환 과정
1. 가상 주소를 구한다 -> 가상 주소 VA=<0, 32>
2. 시작 주소를 알아내고 물리 주소를 구한다 -> 시작 주소 120 + 거리 32 = 물리주소 152
3. 물리 주소 152번지로 접근하여 원하는 데이터를 읽거나 쓴다
* 쉽게 배우는 운영체제 책 참고
'운영체제' 카테고리의 다른 글
[운영체제] 가상메모리 - 스레싱 (0) | 2022.06.28 |
---|---|
[운영체제] 가상 메모리 관리 (요구 페이징, 페이지 교체 알고리즘) (0) | 2022.06.14 |
[운영체제] 가상 메모리, 페이징 기법 (0) | 2022.06.09 |
[운영체제] 물리 메모리 관리 (0) | 2022.06.06 |
[운영체제] 교착상태 (0) | 2022.06.05 |
댓글