본문 바로가기

OS

(2)
10장. 64비트 모드로 전환 Ⅰ. 프로세서의 제조사와 IA-32e 지원 여부 검사 CPUID 명령어를 이용하여, 프로세서 제조사를 확인하는 방법과 IA-32e 모드를 지원하는지 확인하는 방법에 대해 살펴본다. 1. CPUID를 사용하여, 프로세서 정보 확인 방법 CPUID는 EAX 레지스터에 설정된 값에 따라 해당 정보를 조회하며, 범용 레지스터 EAX, EBX, ECX, EDX를 통해 결과를 넘겨준다. CPUID 명령어 실행했을 때, 반환되는 정보는 프로세서가 생산된 제조자(인텔, AMD 등)에 따르지만, 여러 프로세서 간의 호환을 위해 공통적인 필드를 가지고 있다. EAX 값 0x00000000 일 경우, 기본 CPUID 정보를 조회한다. EAX 값 0x80000001 일 경우, 확장 기능 CPUID 정보를 조회한다. 2. 프로..
9장. 페이징 기능을 활성화하여, 64비트 전환 준비 해당 과정부터는 자세한 설명을 적지 않을 예정이다. 적을 시간에 한 글자라도 더 보는 것이 좋을 것 같아서, 간단히 기록만 해둔다. Ⅰ. 페이지 테이블 생성과 페이징 기능 활성화 1. 페이지 엔트리를 위한 자료구조 정의 매크로 정의 페이지 테이블은 각 엔트리의 집합이므로, 페이지 엔트리를 나타내는 자료구조를 먼저 정의한다. 아래는 8바이트 크기의 페이지 엔트리 자료구조를 정의한 것이다. typedef struct pageTableEntryStruct{ DWORD dwAttributeAndLowerBaseAddress; DWORD dwUpperBaseAddressAndEXB; } PWL4TENTRY, PDPTENTRY, PDENTRY, PTENTRY; 페이지 엔트리 속성 필드를 매크로로 정의한 것이다. /..