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