운영체제

[운영체제] 가상메모리 세그먼테이션 기법

체리1001 2022. 6. 11.
세그먼테이션 기법

 

: 가상 메모리를 프로세스의 크기에 따라 세그먼트로 분할하여 메모리를 관리하는 기법

 

장점: 하나의 세그먼트 단위로 통제가 가능하다

단점:  외부 단편화가 발생한다

 

세그먼테이션 테이블 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번지로 접근하여 원하는 데이터를 읽거나 쓴다

 

* 쉽게 배우는 운영체제 책 참고

댓글