2013-01-13 5 views
1

저는 32 비트 운영 체제를 개발 중이며 프로그램이 커널에서 세그먼트를 분리 할 수있게하려고합니다.LDT를 설정하는 방법은 무엇입니까?

이렇게하려면 SS를 만들어야하고 DS 레지스터는 실제로 프로그램 스택과 .data 섹션을 가리 킵니다.

필자의 연구에서 로컬 디스크립터 테이블을 설정하는 것으로 생각합니다.

이것은 GDT와 매우 유사하며 LDT가 lldt를 통해로드되었다고 가정합니다.

그러나 세그먼트를 설정하고 나면이 방법을 사용하지 않습니다. 아무도 설명 할 수 있을까요?

답변

1

아니요, 사용자 공간 SS/CS/DS 세그먼트 설명자를 설정하기 위해 별도의 LDT를 설정할 필요가 없습니다.

인터럽트 핸들러에서는 saving registers state, 사용자 공간에서 인터럽트로 들어가려면 프로세스의 커널 공간 SS를 루핑하는 데 CPU가 필요합니다.

0

글쎄, 당신은 인텔 매뉴얼보다 더 나은 튜토리얼을 찾을 수 없습니다. 정말로, Intel 80386 프로그래밍 매뉴얼 (386 매뉴얼은 더 짧고 더 새로운 것보다 더 낫다.)이 필요하다. 또는 Intel 웹 사이트의 IA32 프로그래밍 설명서 그것은 모두 정보를 가지고 있습니다.