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