OS

[OS] 2์žฅ ์ฃผ์š” ๊ฐœ๋…. Interrupt์™€ DMA ์ด๋ž€?

minjgziii 2023. 3. 18. 22:25

๐Ÿ“Œ DMA(Direct Memory Access)

DMA์— ๋Œ€ํ•ด ์•Œ๊ธฐ ์ „,

์ผ๋‹จ ์›์น™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์— ์˜ํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์žฅ์น˜์ด๋‹ค.

 

๋”ฐ๋ผ์„œ, ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด CPU์—๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ CPU๊ฐ€ ์ผ์„ ๋Œ€ํ–‰ํ•˜๋Š” ์‹์œผ๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—ฐ์‚ฐ์ด CPU์— ์˜ํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์ง€๋ฉด ์ฃผ๋ณ€ ์žฅ์น˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์›ํ•  ๋•Œ๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด CPU์˜ ์—…๋ฌด๊ฐ€ ๋ฐฉํ•ด๋ฅผ ๋ฐ›๊ฒŒ ๋ผ CPU ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

 

์ด๋Ÿฌํ•œ ๋น„ํšจ์œจ์„ฑ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด CPU ์ด์™ธ์— ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์žฅ์น˜๋ฅผ ๋‘์—ˆ๋Š”๋ฐ,

์ด๊ฒƒ์ด ๋ฐ”๋กœ DMA(Direct Memoey Access)์ด๋‹ค.

 

 

DMA (Direct Memoey Access)

- ์ผ์ข…์˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ์„œ,  CPU๊ฐ€ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์š”์ฒญ์— ์˜ํ•ด ์ž์ฃผ interrupt ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์คŒ 

CPU ์ด์™ธ์— ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์žฅ์น˜

- ๋ฐ”์ดํŠธ๋‹น ํ•˜๋‚˜์˜ interrupt๊ฐ€ ์•„๋‹Œ, block๋‹น ํ•˜๋‚˜์˜ interrupt

- ํ›จ์”ฌ ํšจ์œจ์ 

 


๐Ÿ“Œ Interrupt

โž CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ, ์ž…์ถœ๋ ฅ ํ•˜๋“œ์›จ์–ด ๋“ฑ์˜ ์žฅ์น˜์— ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— CPU์—๊ฒŒ ์•Œ๋ ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ

- ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ผ์ด ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ, ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์›๋ž˜ ๋™์ž‘์œผ๋กœ ๋Œ์•„์˜ด

 

 

 

โœ‹ ๊ทธ๋ž˜์„œ Interrupt, ์™œ ํ•˜๋Š”๋ฐ?  

โž ์ž…์ถœ๋ ฅ ์—ฐ์‚ฐ์ด CPU ๋ช…๋ น ์ˆ˜ํ–‰ ์†๋„๋ณด๋‹ค ํ˜„์ €ํžˆ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ!

์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž…์ถœ๋ ฅ ์—ฐ์‚ฐ์„ CPU๊ฐ€ ๋งค๋ฒˆ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ, ์–ผ๋งˆ๋‚˜ ๋น„ํšจ์œจ์ ์ธ๊ฐ€!

๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ CPU์—๊ฒŒ ๋‹ค๋ฅธ ์ผ์„ ์‹œํ‚จ๋‹ค.

์ž…์ถœ๋ ฅ ์ง์›์ด ์ž์‹ ์˜ ์—…๋ฌด๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ๋•Œ, CPU ์„ ๋ฐฐ๋‹˜์—๊ฒŒ ์ž‘์—… ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆฌ๋ผ๊ณ  ์ผ๋Ÿฌ๋‘์–ด CPU๊ฐ€ ๋‹ค์‹œ ํ•ด๋‹น ์ž‘์—…์„ ์ด์–ด์„œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. (CPU๋Š” ์ผํ•˜๊ณ  ์ผํ•˜๊ณ  ๋˜ ์ผํ•˜๊ณ ,,)

 

์—ฌ๊ธฐ์„œ, ์ž…์ถœ๋ ฅ ์ง์›์ด CPU ์„ ๋ฐฐ๋‹˜์—๊ฒŒ ์ž‘์—… ์™„๋ฃŒ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ์ธํ„ฐ๋ŸฝํŠธ์ด๋‹ค.

 

 


 

โœ’๏ธ Interrupt Mechanism

โ–ช๏ธ Interrupt ๋ฐœ์ƒ ์‹œ,

- ํ˜„์žฌ ๋ช…๋ น์ด ์™„๋ฃŒ๋œ ํ›„, ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์ง€ (ํ˜„์žฌ ํ•˜๋˜ ์ผ๊นŒ์ง€๋งŒ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ์ง€๊ธˆ์˜ ์ •๋ณด๋“ค์„ memory์— ์ €์žฅ)

- ์ค‘๋‹จ๋œ ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ

- IRQ ๋ฒˆํ˜ธ ๋ฐ Interrupt ๋ฒกํ„ฐ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ISR(Interrupt Service Routine)์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ด

 

โ–ช๏ธ Interrupt๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ,

- ๋“ค์–ด์˜ค๋Š” Interrupt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์—ฌ Interrupt ์†์‹ค์„ ๋ฐฉ์ง€ํ•จ

 

โ–ช๏ธ ISR ์‹คํ–‰ ํ›„,

- ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ค‘๋‹จ๋œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋Œ์•„์˜ด

 

โœ‹ ์ž ๊น, ์—ฌ๊ธฐ์„œ ISR์ด๋ž€?

ISR(Interrupt Service Routine)

- ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ(Interrupt Handler)๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ

- ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ ‘์ˆ˜๋˜๋ฉด ๊ฐ๊ฐ์˜ ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€์‘ํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ๋ฃจํ‹ด(์ปค๋„์ด ์‹คํ–‰)

ex) ํ‚ค๋ณด๋“œ ์žํŒ์„ ๋ˆŒ๋Ÿฌ ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด์— ํ•ด๋‹นํ•˜๋Š” ISR์ด ์‹คํ–‰๋จ

 

โœ’๏ธ Interrupt Timeline

 

 

์ฐธ๊ณ ์‚ฌ์ดํŠธ

https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

 

[OS๊ธฐ์ดˆ] ์ธํ„ฐ๋ŸฝํŠธ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ

์ฃผ๋ณ€์žฅ์น˜์™€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋Š” CPU๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ์ธํ„ฐ๋ŸฝํŠธ๋ผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๊ด€๋ฆฌ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ธํ„ฐ๋ŸฝํŠธ, ์™œ ํ•˜๋Š”๊ฑฐ์š”? ๊ทธ ์ด์œ ๋Š” ์ž…์ถœ๋ ฅ ์—ฐ์‚ฐ์ด CPU ๋ช…๋ น ์ˆ˜ํ–‰์†๋„๋ณด๋‹ค ํ˜„์ €ํžˆ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด

velog.io

https://velog.io/@sparkbosing/DMA

 

DMA

์šด์˜ ์ฒด์ œ์™€ ์ •๋ณด ๊ธฐ์ˆ ์˜ ์›๋ฆฌ๋Š” ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.์›์น™์ ์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์— ์˜ํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CPU์—๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ

velog.io