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