3.1.1. 과정 ¶
2. 이후 ROM-BIOS는 일련의 CHECK 프로그램을 실행 시킨다. 흔히 보는 하드웨어 CHECK와 메모리 CHECK가 여기에 속한다.
3. 모든 CHECK가 끝나면 ROM-BIOS는 컴퓨터의 부팅 가능한 드라이브를 찾는다. 이 순위는 CMOS 셋업에서 바꿔 줄 수 있다.
3.1.2. 참고 사항 ¶
위와 같은 경우는 플로피에 해당하는 경우이다. 하드드라이브처럼 파티션이 여러개인 경우 MBR 마스터 부트 레코드가 존재하며 멀티 부팅을 위핸 lilo/grub이 올려져 부팅이미지가 있는 파티션을 찾아준다. 플로피와 같은 경우 플로피에 대한 해당 정보를 적어줘야 나중에 플로피 디스크를 DOS에서 읽을 수 있다. 해당 정보는 0번 섹터에 다음과 같은 layer를 적어준다.
offset | field description |
00h | 점프 코드(머쉰코드) |
03h | OEM identification |
0Bh | Bytes per sector |
0Dh | Sectors per cluster |
0Eh | Nums of reserved sectors |
10h | Nums of FATs |
1Eh ~ 1FDh | 실제 로더 코드 |
3.2. 실모드에 관해 ¶
0000h:0000h가 그 예이며 이를 4bit 어긋나게 더해 20bit를 만들어 접근하게 된다.
3.3. 보호모드에 관해 ¶
~cpp 실례:: 어셈을 하다보면 이유없이 이런 코드를 쓰는 경우가 있다. MOV AX,FFFFH MOV DS,AX 으! 그냥 MOV DS,FFFFFH 하면 되지 왜 AX에 넣는 것이야. 지금 사용 FFFFFH란 메모리가 지금 프로세스가 참조할 수 있나 세그먼트의 정당성을 알기 위해서 이다....보호 할 수 있겠지..그럼..
- Descriptor
- GDTR ( GLOBAL DESCRIPTOR TABLE REGISTER )
GDT이다. 하나의 GDT가 존재하며 GDT에는 LDT의 베이스주소를 계산하는 데 쓰인다. GDTR은 48 BIT로 이루어졌으며 GDTR의 32 BIT의 BASE 주소와 16 BIT의 리미트 부분으로 나누어지며 BASE는 GDT의 시작 어드레스를 말하며 리미트는 GDT의 크기를 말한다. GDT가 가지는 최대 디스크립터는 8192이다.
- LDTR ( LOCAL DESCRIPTOR TABLE REGISTER )
- TSS
- IDT