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.0271 sec