세그멘테이션은 사진속에서와같이 논리주소를 선형주소로 바꾸는 과정이다.
가장먼저 세그먼트 셀렉터를 통과하게 되는데
세그먼트 셀렉터는 세그먼트를 가르키는것이 아니라 디스크립터 테이블에서 세그먼트 디스크립터를 가르킨다
위 그림에서처럼 셀렉터는 16비트이며 0-1비트는 세그먼트의 권한을 가르키며 2-3비트는 디스크립터가 gdt에 있는지 ldt에 있는지를 가르킨다
3-15비트는 테이블을 가르키는 인덱스로 사용된다
사실 세그먼트 셀렉터는 세그먼트 레지스터에 속해있다
세그먼트 레지스터는
사진과같이 보이는 부분과 보이지않는 부분으로 나뉘며 여기서 보이는 부분이 세그먼트 셀렉터로써 이곳으로 새롭게 로드가되면 세그먼트 디스
크립터를 참조하여 base address, limit 등등을 보이지않는 부분에 로드한다.
세그먼트 셀렉터는 단순히 16비트로서 세그먼트에 대한 많은정보를 포함하고 있지않다 그렇기 때문에 세그먼트에대한 정보를 담고있는 구조체
체가 필요한데
이것이바로 세그먼트 디스크립터이다
베이스주소 타입등등 정보를 담고있다 이를통하여 세그먼트의 베이스 주소를얻어 오프셋과 더하여 선형주소를 얻게된다.
개념글 공지로
으앙 어려워ㅜ 패스
운영체제 시간에도 페이징이랑 세그멘테이션이 엄청 복잡하던데 ㄷㄷ
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.
정확히 7년전에보던거넹.. 아직도기억나는게 신기