기계가 전원을 켰을 때 커널을 실행하는 방법을 이해하려고합니다. 내가 수집 한 것부터 부팅 할 때 보호 모드로 전환하여 페이지 디렉토리와 페이지 테이블 및 세그먼트 화 기능이 해제 된보다 일반적인 가상 메모리 계획으로 전환하더라도 주소 지정이 가능한 메모리에 액세스 할 수 있습니다. .CR0에서 PE 플래그를 설정하면 보호 모드가 어떻게 설정됩니까?
- 글로벌 디스크립터 테이블 (GDT)를 설정하고
- 는 PE 플래그/비트의를 설정
lgdt
명령을 사용하여로드 : 는이 3 일을 수행해야하는 보호 모드로 전환 할 것 제어는 CR0 (즉. 값 1)를 활성화하기 위해
- 내가 translat하는의 논리에 대해 궁금
ljmp
와 멀리뛰기를 실행 등록 세그먼트 레지스터와 명령어 포인터를 gdt와 함께 사용하기위한 인덱스와 오프셋에 넣는 것. 이 논리는 하드웨어로 수행됩니까? 그렇다면 어떤 하드웨어와 왜 프로세스의 일부인 ljmp
의 실행이 있습니까? CR0의 PE 플래그를 설정하여 보호 모드 (ljmp
없음)를 사용하도록 설정하는 것이 가장 좋은 이유는 무엇입니까?
[인텔 ® 64 및 IA-32 아키텍처 소프트웨어 개발자 설명서] (http://www.ibm.com/software/infocenter/)에서 텍스트 패턴 '보호 모드'를 검색하지 않은 이유가 궁금합니다. intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) 그리고 연구 노력은 무엇이며 왜 묻고 있습니까? 해결하려는 문제는 무엇입니까? BTW : 비슷한 질문에 대한 답이 빈번하다는 것을 알고 계셨습니까? http://wiki.osdev.org를 읽으시겠습니까? – xmojmr
@ xmojmr 인텔의 개발자 설명서에서 검색했지만 원하는 정보를 찾을 수 없습니다. 실제 모드에서 보호 모드로 전환하는 방법을 이해하려고합니다. 나는 osdev wiki에 대해 몰랐다. 그래서 다음 번에 나는 이와 같은 질문을 할 것이다. –