OS - System Structure & Program Execution 1

๋ฏผ์ฐฌํ™ยท2023๋…„ 10์›” 12์ผ
0

CS - OS(์šด์˜์ฒด์ œ)

๋ชฉ๋ก ๋ณด๊ธฐ
1/6
post-thumbnail

๐Ÿงฉ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ

ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์„ฑ๊ณผ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ํ•˜๋“œ์›จ์–ด์—์„œ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์œ„์˜ ๊ทธ๋ฆผ์ด๋‹ค. ์šด์˜์ฒด์ œ์— ์•ž์„œ์„œ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์ ์ธ ๋ถ€๋ถ„์„ ๋จผ์ € ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•œ ๋ถ€๋ถ„์ด๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์ด ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•œ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด ๊ตฌ์กฐ์ด๋‹ค. CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ์„ ๋ณดํ†ต ์ปดํ“จํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. ๋ณดํ†ต ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ ์ปดํ“จํ„ฐ์™€ I/O device, ์ฆ‰ ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

์ด์ œ ํ•˜๋‚˜ํ•˜๋‚˜ ์œ„์˜ ์‚ฌ์ง„์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ค๋ช…ํ•  ๊ฒƒ์ด๋‹ค.

๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ๊ฒƒ์€ CPU์˜ ์ž‘์—… ๊ณต๊ฐ„ ์ด๋‹ค. ๊ทธ๋ž˜์„œ CPU์—์„œ ๋ฌด์–ธ๊ฐ€ ์ผ์„ ํ•˜๋ ค๋ฉด, ์—ฌ๊ธฐ์„œ CPU์—์„œ ํ•˜๋Š” ์ผ์„ instruction ์ด๋ผ๊ณ  ํ•œ๋‹ค. CPU๋Š” ๋งค ์ˆœ๊ฐ„, ์ •ํ™•ํ•˜๊ฒŒ๋Š” ๋งค clock cycle ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์—์„œ instruction, ์ฆ‰ ๊ธฐ๊ณ„์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ ์‹คํ–‰์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅธ์ชฝ์— I/O device ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๋งˆ์šฐ์Šค์™€ ํ‚ค๋ณด๋“œ์ฒ˜๋Ÿผ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž…๋ ฅํ•˜๋Š” input device ์™€ ํ”„๋ฆฐํ„ฐ์™€ ๋ชจ๋‹ˆํ„ฐ์ฒ˜๋Ÿผ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” output device ๋“ฑ์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ Disk ๋„ ์ผ์ข…์˜ I/O device ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๋ผ๊ณ  ๋ถˆ๋ ค์ง€์ง€๋งŒ Disk ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋กœ ์ฝ์–ด๋“ค์ด๊ธฐ๋„ํ•˜๊ณ , ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Disk ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์— ์ €์žฅํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๊ฐ๊ฐ์˜ I/O device ๋“ค์€ ๊ทธ๊ฒƒ์„ ์ „๋‹ดํ•˜๋Š” ์ž‘์€ CPU๊ฐ™์€ ์กด์žฌ ๋“ค์ด ์žˆ๋‹ค. ๊ทธ๊ฑธ device controller ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฉ”์ธ CPU๊ฐ€ I/O device ๋“ค์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด controller ๋“ค์ด I/O device ๋ฅผ ์œ„ํ•œ ์ž‘์€ CPU๊ฐ™์€ ์—ญํ•  ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

๋ฉ”์ธ CPU ์˜ ์ž‘์—… ๊ณต๊ฐ„์ธ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€ ์žˆ๋“ฏ์ด, ์ด๋Ÿฐ device controller๋„ ๊ฐ๊ฐ์˜ ์ž‘์—…๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ๊ฒƒ์„ local buffer ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

CPU์— ๋น„ํ•ด์„œ I/O device๋Š” ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด CPU์˜ ์—ญํ•  ์€ ๋ฌด์—‡์ผ๊นŒ. ์œ„์—์„œ๋„ ๊ฐ€๋ณ๊ฒŒ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๋งค ํด๋Ÿญ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์—์„œ instruction์„ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ทธ๋Ÿฌ๊ณ  ๋‚˜๋ฉด ๋‹ค์Œ ํด๋Ÿญ์— ๋‹ค์Œ instruction์„ ์ฝ๊ณ , ์ด๋Ÿฐ ์ž‘์—…์ด CPU์˜ ์šด๋ช…์ด๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ์ด์ œ CPU ์•ˆ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ณด๋‹ค ๋” ๋น ๋ฅด๋ฉด์„œ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ๊ณต๊ฐ„ ๋“ค์ด ์žˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ด์ œ register ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  mode bit ์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ CPU์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์šด์˜์ฒด์ œ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ๊ฒƒ ์ด๋‹ค. interrupt line ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด CPU๋Š” ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” instruction๋งŒ ์‹คํ–‰ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ‚ค๋ณด๋“œ์—์„œ ์–ด๋–ค ์ž…๋ ฅ์ด ๋“ค์–ด์™”๋‹ค๋˜์ง€ ๋˜๋Š” Disk์—์„œ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์ฝ์–ด์™€์•ผํ•œ๋‹ค๋ฉด ์ด๋Ÿฐ๊ฒƒ์„ CPU๊ฐ€ ์•Œ๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด interrupt line ์ด ์กด์žฌํ•œ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ๋“ค์–ด๋ณด๋ฉด, ๋งŒ์•ฝ Disk์—์„œ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์ฝ์–ด์˜ค๋ผ๋Š” ์š”์ฒญ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ. ๋งŒ์•ฝ CPU๊ฐ€ instruction ์„ ์ญ‰ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ํ”„๋กœ๊ทธ๋žจ A๊ฐ€ Disk ์—์„œ ์ •๋ณด๋ฅผ ์ฝ์–ด์™€์•ผํ•œ๋‹ค ๊ทธ๋Ÿฌ๋ฉด CPU๊ฐ€ ์ง์ ‘ Disk๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Disk controller ์—๊ฒŒ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””์„œ ์ฝ์–ด์˜ค๋ผ๊ณ  ์ผ์„ ์‹œํ‚จ๋‹ค( ์—ฌ๊ธฐ์„œ ์ผ์„ ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ ์ผ์„ ์‹œํ‚ค๋Š” instruction ์„ ๋ณด๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ) ๊ทธ๋Ÿฌ๋ฉด Disk๋Š” ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€ ์ž์‹ ์˜ local buffer ์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜์—์„œ ์กฐ๊ธˆ ๋” ์ด์–ด๊ฐ€๊ฒ ๋‹ค.์—ฌ๊ธฐ์„œ Disk์˜ ์ฒ˜๋ฆฌ ์†๋„๋Š” CPU ๋ณด๋‹ค ํ˜„์ €ํžˆ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด CPU๊ฐ€ ๋†€๊ณ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋‚ญ๋น„๋‹ค. ๊ทธ๋ž˜์„œ CPU๋Š” ๋ณดํ†ต์€ ์ญ‰ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ๋งŒ ํ•˜๋ฉด์„œ ์‹คํ–‰๋˜๋‹ค๊ฐ€ I/O ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋ฉด ๊ทธ๊ฒƒ์€ device controller์—๊ฒŒ ๋งก๊ฒจ๋†“๊ณ  CPU๋Š” ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์ ‘๊ทผ์„ ๊ณ„์† ํ•˜๋ฉด์„œ instruction์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ CPU๋Š” ๋น ๋ฅธ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์™”๋‹ค๊ฐ”๋‹คํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉด ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” CPU๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ณ  interactiveํ•˜๊ฒŒ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ A๊ฐ€ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋„๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ์ค‘๊ฐ„์— ๋‹ค๋ฅธ I/O ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ณ  ๊ณ„์† CPU ๋งŒ ์“ฐ๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋žจ์— CPU ๊ฐ€ ๋„˜์–ด๊ฐ€๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์ง€๋„ ์•Š๊ณ  ๊ทธ๋ ‡๋‹ค๊ณ  I/O๋ฅผ ํ•˜์ง€๋„ ์•Š๊ณ  ๊ณ„์† CPU ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด CPU ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปดํ“จํ„ฐ ์•ˆ์—๋Š” timer ๋ผ๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‘๊ณ  ์žˆ๋‹ค.

timer ๋ผ๋Š” ํ•˜๋“œ์›จ์–ด์˜ ์—ญํ• ์€ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ ์ปดํ“จํ„ฐ๋ฅผ ์ผฐ์„ ๋•Œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ CPU๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ๊ทธ ํ”„๋กœ๊ทธ๋žจ์— CPU๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค. ์ด ๋•Œ ๊ทธ๋ƒฅ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ timer ์— ๊ฐ’์„ ์„ธํŒ…ํ•œ ๋‹ค์Œ์— ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์— CPU ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค. ์ดํ›„ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ๋…์ ์ ์œผ๋กœ CPU ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ timer ์— ํ• ๋‹น๋œ ์‹œ๊ฐ„์ด ๋˜๋ฉด timer ๊ฐ€ CPU์—๊ฒŒ interrupt๋ฅผ ๊ฑด๋‹ค. CPU๋Š” instruction์ด ํ•˜๋‚˜ ๋๋‚˜๋ฉด ๋งค๋ฒˆ interrupt line์„ ์ฒดํฌํ•œ๋‹ค. interrupt ๋“ค์–ด์˜จ๊ฒŒ ์—†์œผ๋ฉด ๋‹ค์Œ instruction ์‹คํ–‰ํ•˜๊ณ  ์ด ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋งŒ์•ฝ timer๊ฐ€ interrupt๋ฅผ ๊ฑธ๋ฉด CPU๊ฐ€ ํ•˜๋˜๊ฒƒ์„ ์ž ๊น ๋ฉˆ์ถ”๊ณ  CPU์˜ ์ œ์–ด๊ถŒ์ด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—์„œ ์šด์˜์ฒด์ œ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์šด์˜์ฒด์ œ๊ฐ€ ์ œ์–ด๊ถŒ์„ ์–ป๊ฒŒ ๋˜๋ฉด, interrupt ๊ฐ€ ๊ฑธ๋ฆฐ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ CPU ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค. ๊ทธ๋ƒฅ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ญ์‹œ timer ์— ๊ฐ’์„ ์„ธํŒ…ํ•˜๊ณ  ๋„˜๊ฒจ์ค€๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ timer๋Š” CPU์˜ time sharing์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์ธ ๊ฒƒ์ด๋‹ค.

์œ„์˜ ์˜ˆ์‹œ (Disk์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฝ์–ด์˜ค๋ผ๋Š” ์š”์ฒญ๊ณผ ๊ฐ™์€ I/O ์ž‘์—…)์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž๋ฉด, ๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ์ด I/O ์ž‘์—…์„ ํ•„์š”๋กœํ•˜๋ฉด ์ž์ง„ํ•ด์„œ CPU ๋ฅผ ์šด์˜์ฒด์ œ์— ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ ์šด์˜์ฒด์ œ๊ฐ€ ํ•ด๋‹น ์ž‘์—…์„ I/O controller์— ์‹œํ‚ค๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์‚ฌ์šฉ์žํ”„๋กœ๊ทธ๋žจ์€ ์ง์ ‘ I/O device ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. I/O device ์— ์ ‘๊ทผํ•˜๋Š” ๋ชจ๋“  instruction์€ ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
I/O controller ๊ฐ€ ์š”์ฒญํ•œ ์ž‘์—…์ด ๋๋‚˜๋ฉด device controller๊ฐ€ CPU ์—๊ฒŒ interrupt๋ฅผ ๊ฑธ๊ฒŒ ๋œ๋‹ค. ์ด ๋‹น์‹œ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ํ†ตํ•ด ์‹คํ–‰์ด ๋˜๊ณ  ์žˆ์—ˆ๊ฒ ์ง€๋งŒ, interrupt๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ž๋™์œผ๋กœ CPU ์ œ์–ด๊ถŒ์ด ์šด์˜์ฒด์ œ์—๊ฒŒ ๋„˜์–ด๊ฐ„๋‹ค. interrupt๋ฅผ ๋ฐ›์€ CPU๊ฐ€ ์ด์ œ interrupt์˜ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ ์•„๊นŒ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด ์š”์ฒญํ–ˆ๋˜ I/O ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ด์ œ Disk์—์„œ ์ฝ์–ด์˜จ ๊ฐ’์„ ์š”์ฒญํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์นดํ”ผ๋ฅผ ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ interrupt๋‹นํ•œ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.

๐Ÿงฉ Mode bit

  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์ž˜๋ชป๋œ ์ˆ˜ํ–‰์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์šด์˜์ฒด์ œ์— ํ”ผํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ ์žฅ์น˜
  • Mode bit์„ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ ์˜ operation ์ง€์›
    • 1 ์‚ฌ์šฉ์ž๋ชจ๋“œ : ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰
    • 0 ๋ชจ๋‹ˆํ„ฐ๋ชจ๋“œ : OS์ฝ”๋“œ ์ˆ˜ํ–‰
  • ๋ณด์•ˆ์„ ํ•ด์น  ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‹ˆํ„ฐ๋ชจ๋“œ ์—์„œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ํŠน๊ถŒ๋ช…๋ น ์œผ๋กœ ๊ทœ์ •
  • Interrupt๋‚˜ Exception ๋ฐœ์ƒ ์‹œ ํ•˜๋“œ์›จ์–ด๊ฐ€ mode bit ์„ 0 ์œผ๋กœ ๋ฐ”๊ฟˆ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ๋„˜๊ธฐ๊ธฐ ์ „์— mode bit์„ 1๋กœ ๋ฐ”๊ฟˆ

์œ„์—์„œ ๋งํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ชจ๋“œ๋Š” ์ปค๋„๋ชจ๋“œ, ์‹œ์Šคํ…œ๋ชจ๋“œ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ CPU์—์„œ instruction์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ๋งํ•œ๋‹ค. mode bit์ด 0์ผ๋•Œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๊ฑฐ์˜ ๋ชจ๋“  instruction์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค(I/O device์ ‘๊ทผ ๋“ฑ๋“ฑ). ํ•˜์ง€๋งŒ 1์ผ๋•Œ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋ผ์„œ ์ œํ•œ๋œ instruction๋งŒ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿงฉ Timer

  • ์ •ํ•ด์ง„ ์‹œ๊ฐ„์ด ํ๋ฅธ ๋’ค ์šด์˜์ฒด์ œ์—๊ฒŒ ์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ€๋„๋ก ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด
  • ํƒ€์ด๋จธ๋Š” ๋งค ํด๋Ÿญ ํ‹ฑ ๋•Œ๋งˆ๋‹ค 1์”ฉ ๊ฐ์†Œ
  • ํƒ€์ด๋จธ ๊ฐ’์ด 0์ด ๋˜๋ฉด ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
  • CPU๋ฅผ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์ด ๋…์ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ
  • time sharing์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฆฌ ์ด์šฉ๋จ
  • ํƒ€์ด๋จธ๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์‚ฌ์šฉ

๐Ÿงฉ Device Controller

  • I/O device controller
    • ํ•ด๋‹น I/O ์žฅ์น˜์œ ํ˜•์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์ข…์˜ ์ž‘์€ CPU
    • ์ œ์–ด ์ •๋ณด๋ฅผ ์œ„ํ•ด control register, status register๋ฅผ ๊ฐ€์ง
    • local buffer๋ฅผ ๊ฐ€์ง (์ผ์ข…์˜ data register)
  • I/O๋Š” ์‹ค์ œ device์™€ local buffer ์‚ฌ์ด์— ์ผ์–ด๋‚จ
  • Device Controller๋Š” I/O๊ฐ€ ๋๋‚ฌ์„ ๊ฒฝ์šฐ interrupt๋กœ CPU์— ๊ทธ ์‚ฌ์‹ค์„ ์•Œ๋ฆผ

๐Ÿงฉ DMA controller

  • CPU์™€ ๋ณ„๊ฐœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์น˜

๋„ˆ๋ฌด ๋งŽ์€ I/O ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ๊ทธ๋งŒํผ ๋งŽ์€ interrupt๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๊ณ , ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด CPU๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด DMA controller๋ผ๋Š” ๋ณ„๋„์˜ ์žฅ์น˜๋ฅผ ๋‘”๋‹ค. DMA controller๋„ CPU์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์™œ ์กด์žฌํ•˜๋ƒ๊ณ  ํ•˜๋ฉด CPU๊ฐ€ ๋„ˆ๋ฌด๋งŽ์€ I/O ์ž‘์—…์ด ์ƒ๊ธฐ๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด DMA Controller๊ฐ€ CPU๋Œ€์‹ ์— I/O ์ž‘์—…์ด ์ด๋ฃจ์–ด์ ธ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด์€ local buffer์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณต์‚ฌํ•˜๋Š” ์ผ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ CPU์™€ DMA๊ฐ€ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ memory controller๋ผ๋Š” ์žฅ์น˜๋ฅผ ๋‘”๋‹ค.

๐Ÿงฉ ์ž…์ถœ๋ ฅ(I/O) ์˜ ์ˆ˜ํ–‰

  • ๋ชจ๋“  ์ž…์ถœ๋ ฅ ๋ช…๋ น์€ ํŠน๊ถŒ๋ช…๋ น
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ I/O๋ฅผ ํ•˜๋Š”๊ฐ€?
    • ์‹œ์Šคํ…œ์ฝœ
      • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ์—๊ฒŒ I/O๋ฅผ ์š”์ฒญ
    • trap์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ์˜ ํŠน์ • ์œ„์น˜๋กœ ์ด๋™
    • ์ œ์–ด๊ถŒ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ์ด๋™
    • ์˜ฌ๋ฐ”๋ฅธ I/O ์š”์ฒญ์ธ์ง€ ํ™•์ธ ํ›„ I/O ์ˆ˜ํ–‰
    • I/O ์™„๋ฃŒ ์‹œ ์ œ์–ด๊ถŒ์„ ์‹œ์Šคํ…œ ์ฝœ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์˜ฎ๊น€

    ๐Ÿงฉ ์ธํ„ฐ๋ŸฝํŠธ(Interrupt)

  • ์ธํ„ฐ๋ŸฝํŠธ
    • ์ธํ„ฐ๋ŸฝํŠธ ๋‹นํ•œ ์‹œ์ ์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ program counter๋ฅผ saveํ•œ ํ›„ CPU์˜ ์ œ์–ด๋ฅผ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์— ๋„˜๊ธด๋‹ค.
  • Interrupt(๋„“์€ ์˜๋ฏธ)
    • Interrupt(ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ) : ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚จ ์ธํ„ฐ๋ŸฝํŠธ
    • Trap (์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ) :
      • Exception: ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•œ ๊ฒฝ์šฐ
      • System call : ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
  • ์ธํ„ฐ๋ŸฝํŠธ ๊ด€๋ จ ์šฉ์–ด
    • ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ : ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ
    • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด(์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ) : ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„ ํ•จ์ˆ˜
profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊ฟ‰๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€