<세그먼테이션(Segmentation)>

프로그램을 들여다보면 주(Main)프로그램, 프로시저, 함수, 전역 또는 지역변수와 호출 시 사용되는 스택 등으로 논리적으로 하나하나의 단위를 세그먼트라 한다.


세그먼트 단위대로 사상하고 적재하는 기법이 세그먼테이션이다. 세그먼트 개수만큼의 엔트리를 가지는 세그먼트 테이블이 있다. 가상주소는 세그먼트 번호(s)와 세그먼트 내에서의 위치값(d)로 표현한다. 존재 비트의 값에 따라 유효한 디스크 주소와 메모리 주소를 갖는 필드들이 있다. 페이징과 다른 점은 메모리 주소 필드에 적혀 있는 값이 실주소이다. 세그먼트의 길이(Length)가 적혀 있는 필드가 있는데 이것은 세그먼트의 크기가 서로 다름으로 인해 필요한 조치를 위해 사용한다.

읽기, 쓰기, 실행, 추가와 같은 작업을 각 비트를 1또는 0으로 지정하고 해당 세그먼트에 대해 제어할 수 있는데 이런 비트들을 접근 제어 키라 부른다.

 



 

<세그먼트의 보호(Protection)와 공유(Sharing)>


1. 보호

실주소를 위해 더해지는 위치 값(d)이 세그먼트의 길이 값을 초과하면, 트랩을 통해 프로세스의 실행을 중지시켜 사용자 간의 메모리 보호가 가능하다.

접근 제어 키를 사용하여 세그먼트 별로 허용되는 작업을 제어하여, 사용자의 잘못된 접근으로부터 보호될 수 있다.

2. 공유

엔트리에서 같은 주소 값을 가지도록 한다.

공유해야 할 프로시저가 커서 몇 개의 페이지로 나누어진다면, 이 페이지들의 엔트리는 공유하는 프로세스들의 페이지 테이블에서 모두 같은 위치에 있어야 하고 이것은 테이블의 구성을 힘들게 만들 것이다. 또한, 페이지 크기와 정확하게 맞지 않을 경우, 공유할 필요 없는 (또는, 공유해서는 안 되는) 부분이 공유 페이지에 포함될 수도 있다.


[세그먼트의 장점]

논리적 단위란 것은 단위별로 수정하고 다시 컴파일해서 쓸수 있음

프로그램의 일부의 변경 때문에 전부를 다시 링크하고 로딩하지 않아도 됨




Copyright2014 By 휴먼사이언스 

posted by 경원구