DevKim

[OS] ์žฅ์น˜ ๊ฐ„ ์†๋„ ์ฐจ ๊ฐœ์„ 2 - ์ธํ„ฐ๋ŸฝํŠธ(interrupt) ๋ฐฉ์‹, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ณธ๋ฌธ

์šด์˜์ฒด์ œ

[OS] ์žฅ์น˜ ๊ฐ„ ์†๋„ ์ฐจ ๊ฐœ์„ 2 - ์ธํ„ฐ๋ŸฝํŠธ(interrupt) ๋ฐฉ์‹, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

on_doing 2021. 7. 20. 23:19
728x90

๐Ÿƒ 01. ์ธํ„ฐ๋ŸฝํŠธ interrupt ๐Ÿƒ


์˜ค๋Š˜๋‚ ์—๋Š” ์ปดํ“จํ„ฐ์—๋Š” ๋งŽ์€ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,

CPU๊ฐ€ ๋ชจ๋“  ์ž…์ถœ๋ ฅ์— ๊ด€์—ฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ž‘์—… ํšจ์œจ์ด ํ˜„์ €ํ•˜๊ฒŒ ๋–จ์–ด์ง€๊ฒŒ๋œ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์ด๋‹ค.

์š”๋ฆฌ์‚ฌ๊ฐ€ ์ฃผ๋ฐฉ ๋ณด์กฐ๋ฅผ ๋‘๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

 

[ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์  ]

CPU์˜ ์ž‘์—…๊ณผ ์ €์žฅ์žฅ์น˜์˜ ๋ฐ์ดํ„ฐ ์ด๋™์„ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•จ์œผ๋กœ์จ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

[ ๋™์ž‘ ๊ณผ์ • ]

1. CPU๊ฐ€ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ž…์ถœ๋ ฅ ๋ช…๋ น์„ ๋ณด๋ƒ„

2. ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๋Š” ๋ช…๋ น๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ๋‹ค๋†“๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์žฅ์น˜๋กœ ์˜ฎ๊น€

3. ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์™„๋ฃŒ๋˜๋ฉด ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๋Š” CPU์—๊ฒŒ ์™„๋ฃŒ์‹ ํ˜ธ (์ธํ„ฐ๋ŸฝํŠธ)๋ฅผ ๋ณด๋ƒ„

4. ์ด๋•Œ CPU๋Š” ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ช…๋ น์„ ๋ณด๋‚ด๊ณ  ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋‹ค๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐ›์œผ๋ฉด ํ•˜๋˜ ์ผ์„ ์ค‘๋‹จํ•˜๊ณ  ์˜ฎ๊ฒจ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

[ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ]

- ๋ช…๋ น์„ ๋ฐ›์€ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๋Š” CPU๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ๋‹ค ๋†“์•„์•ผํ•˜๋Š”๋ฐ,

๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๋งŒ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ž‘์—… ๊ณต๊ฐ„์ด๋ผ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์ด ํ•„์š”ํ•œ๋ฐ,

์ด๋•Œ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ '์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ (DMA)' ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์œ„ํ•œ ์ œ์–ด๊ธฐ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด, ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ œ์–ด๊ธฐ๊ฐ€

์‹œ์Šคํ…œ ๋ฒ„์Šค์™€ ์ž…์ถœ๋ ฅ ๋ฒ„์Šค์˜ ์‚ฌ์ด์—์„œ ์–‘์ชฝ์œผ๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.

 

[ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ์ถœ๋ ฅ ]

- ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ CPU๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์„ž์—ฌ์žˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด CPU๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๊ณผ ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ์ • ๊ณต๊ฐ„์„ ์ž…์ถœ๋ ฅ์— ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•์„ '๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ์ž…์ถœ๋ ฅ (Memory mapped I/O) '์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

[ ์‚ฌ์ดํด ํ›”์น˜๊ธฐ ]

CPU์™€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ, CPU์˜ ์ž‘์—…์†๋„๊ฐ€ ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ์†๋„๋ณด๋‹ค ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ์–‘๋ณดํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ CPU ์ž…์žฅ์—์„œ๋Š” ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์‚ฌ์ดํด(์ˆœ์„œ)์„ ํ›”์ณ๊ฐ„ ๊ฒƒ์ด๋ฏ€๋กœ ์‚ฌ์ดํด ํ›”์น˜๊ธฐ๋ผ๊ณ  ์ผ์ปซ๋Š”๋‹ค. 

 

[ ์ถ”๊ฐ€์ ์œผ๋กœ ]

- CPU๋Š” ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ผ์„ ๋™์‹œ์— ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ ์ธํ„ฐ๋ŸฝํŠธ vector๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์žˆ๋‹ค ( ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋„˜์—ˆ์„ ๋•Œ..๋“ฑ)


๐Ÿƒ 02. ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๐Ÿƒ


[ ์„œ๋ก  ]

CPU์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

CPU์˜ ํด๋ก์„ ๋†’์ด๊ฑฐ๋‚˜, ์บ์‹œ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜..

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ฒƒ๋“ค์€ ํ˜„์žฌ ๊ธฐ์ˆ ๋กœ์ฌ ๋ฐœ์—ด๋ฌธ์ œ์™€ ๋น„์šฉ๋ฌธ์ œ๊ฐ€ ์•ผ๊ธฐ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ํ˜„์žฌ๋Š”, CPU ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ค๊ธฐ์œ„ํ•ด

#1. CPU์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ฝ”์–ด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค๊ฑฐ๋‚˜

#2. ๋™์‹œ์— ์‹คํ–‰๊ฐ€๋Šฅํ•œ ๋ช…๋ น์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

[ ๊ฐœ๋… ]

- ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ž‘์—…์˜ ๋Šฅ๋ฅ ์„ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

- ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ช…๋ น์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” '๋ณ‘๋ ฌ์ฒ˜๋ฆฌ'๋Š” ์ฝ”์–ด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ CPU๋Š” ๋ฌผ๋ก ์ด๊ณ 

์ฝ”์–ด๊ฐ€ ํ•˜๋‚˜์ธ CPU์—์„œ๋„ ์ž‘๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.

(ex. ๋…ธํŠธ๋ถ์˜ ๋“€์–ผ์ฝ”์–ด, ์ฟผ๋“œ์ฝ”์–ด๋ž€ ์šฉ์–ด๊ฐ€ ๋ฐ”๋กœ CPU์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”์–ด๊ฐ€ 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ 2,4๊ฐœ๋ผ๋Š” ๋œป์ด๋‹ค)

 

[ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ ]

1. ์ƒํ˜ธ ์˜์กด์„ฑ์ด ์—†์–ด์•ผํ•œ๋‹ค.

- ์•ž์˜ ์ผ์ด ๋’ค์— ์ผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค,

 

2. ๊ฐ ๋‹จ๊ณ„์˜ ์‹œ๊ฐ„์„ ์ผ์ •ํ•˜๊ฒŒ ๋งž์ถฐ์•ผ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ์›๋งŒํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง„๋‹ค.

- ๊ฐ ๋‹จ๊ณ„์˜ ์‹œ๊ฐ„์ด ๋‘˜์‘ฅ๋‚ ์‘ฅ์ด๋ผ๋ฉด,

์•ž์˜ ์ž‘์—…์ด ๋จผ์ € ๋๋‚˜๋”๋ผ๋„ ๊ฐ€์žฅ ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋‹จ๊ณ„์—์„œ '๋ณ‘๋ชฉ ํ˜„์ƒ'์ด ๋ฐœ์ƒํ•œ๋‹ค.

- ์ฆ‰, ์ง„ํ–‰์ด ์ „๋ฐ˜์ ์œผ๋กœ ๋ฐ€๋ ค์„œ ์ „์ฒด ์ž‘์—… ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚œ๋‹ค.

 

3. ์ „์ฒด ์ž‘์—… ์‹œ๊ฐ„์„ ๋ช‡ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆŒ์ง€ ์ž˜ ๋”ฐ์ ธ๋ณด์•„์•ผํ•œ๋‹ค.

- ์ž‘์—…์„ ๋„ˆ๋ฌด ๋งŽ์€ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๋ฉด,

๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์ž‘์—…์„ ์ด๋™ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ž‘์—…์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๊ฑธ๋ ค์„œ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

- ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ณดํ†ต ๊นŠ์ด๋ฅผ 10~20์ •๋„๋กœ ํ•œ๋‹ค๊ณ ํ•œ๋‹ค.

 

[ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• ] 

01. ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋ฒ•

- ํ•œ ์ฃผ๋ฐฉ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ณถ์Œ๋ฐฅ์„ ๋™์‹œ์— ๋งŒ๋“œ๋Š” ๊ฒƒ

= ํ•˜๋‚˜์˜ ์ฝ”์–ด์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค๋ ˆ๋“œ(thread)๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ

= ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋ฒ•

 

* ์Šค๋ ˆ๋“œ(thread) : CPU๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์˜ ๋‹จ์œ„

* ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ

 

02. ์Šˆํผ์Šค์นผ๋ผ ๊ธฐ๋ฒ•

- ํ•œ ์ฃผ๋ฐฉ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๋ฆฌ ์‹œ์„ค์„ ๊ฐ–์ถ”๊ณ  ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”๋ฆฌ๋ฅผ ๋™์‹œ์— ํ•˜๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•

= ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฝ”์–ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ

728x90
Comments