E D R , A S I H C RSS

InsideCPU

1. Inside CPU


CAUTION :: ๊ฒ€ฆ•˜๊ธฐ •Š๊ณ  “ฐธ ๋ถ€๋ถ„ด žˆŠต๋‹ˆ๋‹ค. ˆ˜ ••ด ฃผ‹œ๋ฉด ๊ฐ‚ฌ•˜๊ฒ Šต๋‹ˆ๋‹ค


2. DOC ๋ฒ„ „


VER 0.2

3. ๋ชฉ 


CPU — ๋Œ€•ด ๋ณด๋‹ค ๊นŠด ด•ด•˜๊ณ  ‹ถ€ ๋งˆŒ— ๋ฌธ„œ๋ฅผ ž‘„•˜๊ฒŒ ๋˜—ˆŠต๋‹ˆ๋‹ค.

*

3.1. ๋ถ€Œ…— ๊ด€•ด


3.1.1. ๊ณผ •


1. ฒ˜Œ ปด“จ„ฐ๋ฅผ ‚ค๋ฉด ฐธกฐ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ F000:FFF0ด๋ผ๋Š” ๋ถ€๋ถ„ด๋‹ค. —ฌ๊ธฐ„œ CPU๋Š” ROM-BIOS๋ฅผ  žฌ•˜๊ฒŒ ๋˜๊ณ   œ–ด๊ถŒด ROM-BIOS˜ ”„๋กœ๊ทธ๋žจœผ๋กœ ๋„˜–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.
2. ด›„ ROM-BIOS๋Š” ผ๋ จ˜ CHECK ”„๋กœ๊ทธ๋žจ„ ‹ค–‰ ‹œ‚จ๋‹ค. ”žˆ ๋ณด๋Š” •˜๋“œ›–ด CHECK™€ ๋ฉ”๋ชจ๋ฆฌ CHECK๊ฐ€ —ฌ๊ธฐ— †•œ๋‹ค.
3. ๋ชจ๋“  CHECK๊ฐ€ ๋๋‚˜๋ฉด ROM-BIOS๋Š” ปด“จ„˜ ๋ถ€Œ… ๊ฐ€๋Šฅ•œ ๋“œ๋ผด๋ธŒ๋ฅผ ฐพ๋Š”๋‹ค. ด ˆœœ„๋Š” CMOS …‹—…—„œ ๋ฐ”๊ฟ” „ ˆ˜ žˆ๋‹ค.

:: ฐธ๊ณ  —ฌ๊ธฐ„œ ๋ถ€Œ… ๊ฐ€๋Šฅ•œ ๋“œ๋ผด๋ธŒ๋Š” sector 0 ๋ฒˆง€— „„— ๋งˆง€๋ง‰ ฝ”๋“œ๊ฐ€ AA55hธ ๋“œ๋ผด๋ธŒ๋ฅผ ๋ง•œ๋‹ค.

4. ๋ถ€Œ… ๊ฐ€๋Šฅ•œ ๋“œ๋ผด๋ธŒ˜ 0๋ฒˆ „„ฐ๋ฅผ ฝ–ด ๋“ค—ฌ 0000:7C00 —  žฌ ‹œ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CS๋ฅผ 0000:7C00 œผ๋กœ ˜ฎ๊ธด๋‹ค.

5. ๊ทธ๋Ÿผ ๋กœ๋” ”„๋กœ๊ทธ๋žจด  žฌ ๋œ ƒƒœด๋‹ค. ด๊ฒƒœผ๋กœ ๋ถ€Œ…€ ๋ด๋‹ค. ด›„ ๋ถ€„ฐ๋Š” ๋กœ๋”๊ฐ€ ž‘—…„ ‹ค–‰•œ๋‹ค.

3.1.2. ฐธ๊ณ  ‚ฌ•ญ


œ„— ๋กœ๋”๋Š” 1„„ฐ(512KB) ๋ฐ–ด ๋˜ง€ •Š๋Š”๋‹ค. ด๋Š” ž‘€ ”„๋กœ๊ทธ๋žจ ๋ฐ–ด ‹ค–‰ •  ˆ˜ —†๊ณ  ๋ฉ”๋ชจ๋ฆฌ˜ œ„น˜๊ฐ€ 0000:7C00œผ๋กœ ๋ถˆ•ˆ•œ œ„น˜ด๋‹ค. ๋Œ€๋ถ€๋ถ„˜ ปค๋„˜ ๊ฒฝšฐ ด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ„„˜–ด„œ๋Š” ฌ๊ธฐ๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฐ”๋กœ ปค๋„„ ๋กœ๋”ฉ•  ๊ฒฝšฐ ๋กœ๋”˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ žก•„ ๋จน๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜„œ ๋ณด†ต Kernel๋กœ๋”๋Š” ž‹ „ ๋ณด๋‹ค ๋จผ ๊ณณ˜ •ˆ „•œ ๊ณณœผ๋กœ ด๋™‹œ‚ค๊ณ  ปค๋„„ ๋กœ๋”ฉ•˜๊ฒŒ ๋œ๋‹ค.
œ„™€ ๊ฐ™€ ๊ฒฝšฐ๋Š” ”Œ๋กœ”ผ— •ด๋‹น•˜๋Š” ๊ฒฝšฐด๋‹ค. •˜๋“œ๋“œ๋ผด๋ธŒฒ˜๋Ÿผ ŒŒ‹ฐ…˜ด —ฌ๋Ÿฌ๊ฐœธ ๊ฒฝšฐ 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 ‹ค œ ๋กœ๋” ฝ”๋“œ

Œ...—ฌ๊ธฐ๊นŒง€๋งŒ..๊ท€ฐฎ•„„œ ๋ชป  ๊ฒ ๋‹ค.. ๋ณด†ต ”Œ๋กœ”ผ˜ 0๋ฒˆ „„ฐ๋ฅผ write•˜๊ธฐ œ„•ด rawrite.exe๋ž€ ”„๋กœ๊ทธ๋žจ„ “ด๋‹ค. ”Œ๋กœ”ผ˜ ๋ฐดƒ€๋ฅผ –ป๊ธฐ œ„•ด BIOS˜ ธ„ฐ๋ŸฝŠธ๋ฃจ‹ด„ ‚ฌšฉ•œ๋‹ค. ด๋ฅผ œ„•œ ธ„ฐ๋ŸฝŠธ๋Š” INT 13h๊ฐ€ ๋œ๋‹ค.

3.2. ‹ค๋ชจ๋“œ— ๊ด€•ด


‹ค๋ชจ๋“œ๋Š” ปด“จ„ฐ๋ฅผ ‚ค๋ฉด •ญƒ ‹ค๋ชจ๋“œ๊ฐ€ ๋œ๋‹ค. ด๋Š” •˜œ„ CPU— ๋Œ€•œ ˜ธ™˜  •…œผ๋กœ ๋งŒ๋“ค–ด„ ๊ฒƒด๋ฉฐ —ด๋ผ ๋น ๋ฅด๊ฒŒ ›€งด๋Š” (Žœ‹ฐ—„ด๋Ÿญ) 8086ด๋ผ๊ณ  ๋ณด๋ฉด  ๋‹น•  ๊ฒƒด๋‹ค. ๋˜•œ ‹ค๋ชจ๋“œ—„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ –ด๋“œ๋ ˆ‹ ๋ฐฉ๋ฒ•ด 8086๊ณผ ๋™ผ•œ 20bit˜ –ด๋“œ๋ ˆŠค ๋น„Šธ๋ฅผ ๊ฐ€ง€๊ณ  žˆœผ๋ฉฐ ฆ‰ 1MB ˜  ‘๊ทผ๋งŒ„ —ˆšฉ•œ๋‹ค. ๋˜•œ 640KB˜ base๋กœ  ‘๊ทผ•˜๊ณ  384KB๋Š” extends๋กœ  ‘๊ทผ•ด•ผ •˜๋ฉฐ œ„˜ ๋ฉ”๋ชจ๋ฆฌ—๋Š” ROM-BIOS™€ Video Memory๊ฐ€ žˆ๋‹ค. 1MB๋ฅผ  ‘๊ทผ•˜๊ธฐ œ„•ด„œ๋Š” 16bit˜ „ธ๊ทธ๋จผŠธ™€ 16bit˜ ˜ค”„…‹œผ๋กœ ๊ตฌ„๋œ ๋ฌผ๋ฆฌ   ‘๊ทผด žˆ๋‹ค.
0000h:0000h๊ฐ€ ๊ทธ ˜ˆด๋ฉฐ ด๋ฅผ 4bit –ด๊ธ‹๋‚˜๊ฒŒ ๋”•ด 20bit๋ฅผ ๋งŒ๋“ค–ด  ‘๊ทผ•˜๊ฒŒ ๋œ๋‹ค.

3.3. ๋ณด˜ธ๋ชจ๋“œ— ๊ด€•ด


๋ณด˜ธ๋ชจ๋“œ๋ž€ 80286๋ถ€„ šฉ๋œ •˜๋“œ›–ด  ง€›ด๋‹ค. ด๋Š” ๋‹ค๋ฅธ CPU—๋„(๋‹ค๋ฅธ ด๋ฆ„œผ๋กœ) กดžฌ•˜๋ฉฐ šด˜ฒด œ—๊ฒŒ •ˆ „•œ ƒœŠคฌ ๊ด€๋ฆฌ™€ ๋ณด๋‹ค ๋น ๋ฅธ Context Switching „  šฉ•  ˆ˜ žˆ๋‹ค. ด๋ฅผ œ„•ด ๋ช‡๋ช‡˜ assemble ฝ”๋“œ๊ฐ€ ถ”๊ฐ€ ๋˜—ˆœผ๋ฉฐ 80386 ๋ถ€„ฐ๋Š” ฝ”๋“œ๊ฐ€ ™•žฅ๋˜–ด ๋ณด๋‹ค ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ –ด๋“œ๋ ˆŠค •  ˆ˜ žˆ๊ฒŒ ๋˜—ˆ๋‹ค.


™œ ๋ณด˜ธ ๋ชจ๋“œ๊ฐ€ •„š”•œ๊ฐ€


๋ณด˜ธ๋ชจ๋“œ๊ฐ€ —†„ ๊ฒฝšฐ ปค๋„€ ž‹ „ ง€‚ค๊ธฐ œ„•œ •˜๋“œ›–ด  ๋ฐฉ๋ฒ•„ žƒ๊ฒŒ ๋œ๋‹ค. ๋งŒ•ฝ ผ๋ฐ˜ œ  € –ด”Œ๋ฆฌผ€ด…˜—„œ •„๋ฌด๋Ÿฐ  œ•ฝ—†ด ปค๋„˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ—  ‘๊ทผ•  ˆ˜ žˆ๋‹ค๋ฉด ... œผ..ƒ๊ฐ๋งŒ•ด๋„ ๋”ฐ•˜๋‹ค.
~cpp 
 
‹ค๋ก€:: –ด…ˆ„ •˜๋‹ค๋ณด๋ฉด ดœ —†ด ด๋Ÿฐ ฝ”๋“œ๋ฅผ “ฐ๋Š” ๊ฒฝšฐ๊ฐ€ žˆ๋‹ค.
 
       MOV AX,FFFFH
       MOV DS,AX
 
œผ! ๊ทธ๋ƒฅ MOV DS,FFFFFH •˜๋ฉด ๋˜ง€ ™œ AX— ๋„ฃ๋Š” ๊ฒƒด•ผ. ง€๊ธˆ ‚ฌšฉ FFFFFH๋ž€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ง€๊ธˆ ”„๋กœ„Šค๊ฐ€ ฐธกฐ•  ˆ˜ žˆ๋‚˜
„ธ๊ทธ๋จผŠธ˜  •๋‹น„„ •Œ๊ธฐ œ„•ด„œ ด๋‹ค....๋ณด˜ธ •  ˆ˜ žˆ๊ฒ ง€..๊ทธ๋Ÿผ..
 

ด๋ฅผ œ„•ด ๊ฐ๊ฐ˜ –ด๋“œ๋ ˆŠค  ‘๊ทผ— privilege level„ ๋‘—ˆ๊ณ  ด๋ฅผ ๊ฐ๊ฐ˜ Application—  šฉ‹œผฐ๋‹ค. ๋ณด˜ธ๋ชจ๋“œ˜ ๊ฒฝšฐ ๋ฉ€‹ฐƒœŠค‚น„ ง€›•˜๊ธฐ œ„•œ ๋ฐฉ๋ฒ•ด๋‹ค. ด๋Š” ง€† ด๊ณ  ๋ฐ˜๋ณต œผ๋กœ ผ–ด๋‚˜๋Š” Context Switching „ •˜๋“œ›–ด ธ ๋ฐฉ๋ฒ•œผ๋กœ ๋งŒ๋“ค–ด †Œ”„Šธ›–ด ธ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋น ๋ฅธ Context Switching„ †ต•ด •˜๋“œ›–ด˜ šจœจ„„ ๋†’˜€๋‹ค. ๋ณด˜ธ๋ชจ๋“œ๋ฅผ œ„•œ ๋ ˆง€Šค„™€ ๋ฐฉ๋ฒ•๋“ค..

  • Descriptor
๋””Šคฌ๋ฆฝ„ฐ๋Š” „ธ๊ทธ๋จผŠธ—  ‘๊ทผ„ œ„•œ  •๋ณด๋ฅผ ๋‹ด๊ณ  žˆ๋‹ค.

BASE,G,X,0,?,LIMITE,P,DPL,1,TYPE -> SEGMENT DESCRIPTOR FILED EXAMPLE

ค‘š”•œ ๊ฒƒ DPL๋ž€ „ธ๊ทธ๋จผŠธ—  ‘๊ทผ ๊ฐ€๋Šฅ•œ ๋ ˆ๋ฒจ„ ๋ง•œ๋‹ค.

  • GDTR ( GLOBAL DESCRIPTOR TABLE REGISTER )
GDTR€ GDT (Global Descriptor Table)„  •˜•˜๊ธฐ œ„•œ ๋ ˆง€Šค„ด๋‹ค. GDT˜ šฉ๋„๋Š” ๋ฌด—‡ธ๊ฐ€? ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋Š” –ด๋– •œ ƒœŠคฌ๋ผ๋„  ‘๊ทผ ๊ฐ€๋Šฅ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ง•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ด๋ฅผ  •˜•˜๋Š” ๋ ˆง€Šค„ฐ๊ฐ€
GDTด๋‹ค. •˜๋‚˜˜ GDT๊ฐ€ กดžฌ•˜๋ฉฐ GDT—๋Š” LDT˜ ๋ฒ ดŠคฃผ†Œ๋ฅผ ๊ณ„‚ฐ•˜๋Š” ๋ฐ “ฐธ๋‹ค. GDTR€ 48 BIT๋กœ ด๋ฃจ–ดกŒœผ๋ฉฐ GDTR˜ 32 BIT˜ BASE ฃผ†Œ™€ 16 BIT˜ ๋ฆฌ๋ฏธŠธ ๋ถ€๋ถ„œผ๋กœ ๋‚˜๋ˆ„–ดง€๋ฉฐ BASE๋Š” GDT˜ ‹œž‘ –ด๋“œ๋ ˆŠค๋ฅผ ๋ง•˜๋ฉฐ ๋ฆฌ๋ฏธŠธ๋Š” GDT˜ ฌ๊ธฐ๋ฅผ ๋ง•œ๋‹ค. GDT๊ฐ€ ๊ฐ€ง€๋Š” ตœ๋Œ€ ๋””Šคฌ๋ฆฝ„ฐ๋Š” 8192ด๋‹ค.

  • LDTR ( LOCAL DESCRIPTOR TABLE REGISTER )
LDTR€ 16 BIT˜ ๋ ˆง€Šค„ด๊ณ  13 BIT๊ฐ€ …€๋ ‰„ด๋‹ค.

  • TSS
  • IDT

3.4. ธ„ฐ๋ŸฝŠธ „œ๋น„Šค— ๊ด€•ด


3.5. EXAMPLE 1. LINUX


3.6. EXAMPLE 2. uC-OS II


4. INT 13H - From BIOS -


๋ฐ”ด˜คŠค๋กœ •˜๋“œ™€ ”Œ๋กœ”ผ๋ฅผ  œ–ด•  •„š”๊ฐ€ žˆ๋‹ค. ด๋Š” ๋ถ€Œ… ๊ณผ •—„œ ปค๋„„ Šน • ๋ฉ”๋ชจ๋ฆฌ— ˜ฌ๋ฆฌ๋Š” ๋ฐ ‚ฌšฉ๋œ๋‹ค. •„ด ‚ฌšฉ ๋œ๋‹ค. MBR๋ฅผ ๋ณต๊ตฌ•˜๋Š” ๋ฐ๋„ ๊ฐ€๋” ‚ฌšฉ๋œ๋‹ค.

5. ๋ฉ”๋ชจ๋ฆฌ ‚ฌดˆ ๊ตฌ•˜๊ธฐ

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:27
Processing time 0.0256 sec