ํฌ์ŠคํŠธ

๐ŸŒ‘ Interrupt

๐Ÿ’ซ Interrupt ์ธํ„ฐ๋ŸฝํŠธ


์ฐธ๊ณ  0
์ฐธ๊ณ  1

(๊ฐ€๋กœ์ฑ„๊ธฐ, ์ฒ˜๋ฆฌ ์ค‘๊ฐ„์— ๋ฐฉํ•ด/์ค‘๋‹จ๋˜๊ณ  ๋‹ค๋ฅธ ์ผ์„ ์ž ์‹œ ์ฒ˜๋ฆฌ, ํฐ ํ‹€์—์„œ ๋ดค์„ ๋•Œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ์€ ๋ณ€ํ•จ ์—†์Œ)

  • #CPU์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ ์ž…์ถœ๋ ฅ ํ•˜๋“œ์›จ์–ด ๋“ฑ์˜ ์žฅ์น˜์— ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ์— CPU์—๊ฒŒ ์•Œ๋ ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • CPU์— ์ „๋‹ฌ๋˜๋Š” ์‚ฌ์ „ ์‹ ํ˜ธ Event Signal
  • ์‚ฌ๊ฑด ์‹ ํ˜ธ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ๊ฐ๊ฐ์˜ ์ „์šฉ ํšŒ์„ ์œผ๋กœ ์ „๋‹ฌ๋จ (Source I.E. ํ‚ค๋ณด๋“œ ๋งˆ์šฐ์Šค ๋“ฑ)
    • Vectored Interrupt
  • ์ „์šฉ ํšŒ์„ ์ด ์—†๋Š” ๊ฒฝ์šฐ, ์–ด๋–ค ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•จ
    • Interrupt Polling(Polling Interrupt)
  • ISR, Interrupt Service Routine Or Interrupt Handler

๐Ÿ’ซ์ธํ„ฐ๋ŸฝํŠธ ์šฐ์„  ์ˆœ์œ„ Interrupt Priority


  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋™์‹œ์— ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋Œ€์‘ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•จ
  • ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•œ ๋Œ€์‘ ์ฒ˜๋ฆฌ ๋„์ค‘, ๋˜ ๋‹ค๋ฅธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ทธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ณด๋ฅ˜ ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ง€๊ธˆ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•จ
    • ์ƒˆ๋กœ ๋ฐœ์ƒํ•œ ์ธํ„ฐ๋ŸฝํŠธ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋” ๋†’์œผ๋ฉด ์ง„ํ–‰ ์ค‘์ด๋˜ ๋Œ€์‘ ์ฒ˜๋ฆฌ๋ฅผ ์ž ์‹œ ์œ ๋ณดํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ ํ›„ ์žฌ๊ฐœํ•จ

๐Ÿ’ซ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด Interrupt Cycle


CPU๊ฐ€ ์ธํ„ฐ๋ ™ํŠธ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌ(์กฐ์‚ฌ)ํ•˜๋Š” ์‹œ๊ธฐ๋ฅผ ๋งํ•œ๋‹ค.

4๋‹จ๊ณ„์˜ ๊ธฐ๊ณ„/๋ช…๋ น ์‚ฌ์ดํด์„ ๋งˆ์น  ๋•Œ๋งˆ๋‹ค, ๋‹ค์‹œ๋งํ•ด ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋งˆ์น  ๋•Œ๋งˆ๋‹ค, ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์กฐ์‚ฌํ•œ๋‹ค.
๊ฒฐ๊ตญ ๊ธฐ๊ณ„/๋ช…๋ น ์‚ฌ์ดํด์€, ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด์„ ํฌํ•จํ•˜์—ฌ ์ด 5๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ซ์ธํ„ฐ๋ŸฝํŠธ ์œ ํ˜•


  • ๋””๋ฐ”์ด์Šค ์ธํ„ฐ๋ŸฝํŠธ Device Interrupt
    • ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋“ฑ CPU ์™ธ๋ถ€ ์ฃผ๋ณ€ ๊ธฐ๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ
      • ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ HW Interrupt ๋ผ๊ณ ๋„ ํ•จ
  • ์˜ค๋ฅ˜ ์ธํ„ฐ๋ŸฝํŠธ Error Interrupt
    • CPU๊ฐ€ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ
    • ์ž˜๋ชป๋œ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๋ฅผ ๋งŒ๋‚˜๊ฑฐ๋‚˜ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋“ฑ์˜ ์—ฐ์‚ฐ ๋ถˆ๊ฐ€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒ
      • ์˜ˆ์ƒํ•˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜ ๋ฐœ์ƒ์ด๋ž€ ๋œป์—์„œ ์˜ˆ์™ธ Exception๋ผ๊ณ  ํ•จ
  • ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ SW Interrupt
    • ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๊ณ„ ๋ช…๋ น์–ด, ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ๋ฐœ์ƒ๋œ ์ธํ„ฐ๋ŸฝํŠธ
    • ์ธํ„ฐ๋ŸฝํŠธ ๋Œ€์‘ ์ฒ˜๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜, ์‹œ์Šคํ…œ ์ฝœ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—์„œ ์šด์˜์ฒด์ œ๋กœ ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
      • ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ธ์œ„์ ์œผ๋กœ ํŠน๋ณ„ํ•œ ๋ถ€๋ถ„์œผ๋กœ ๋น ์ ธ๋“ค๊ฒŒ ํ•˜๋ฏ€๋กœ ํŠธ๋žฉ Trap ์ด๋ผ๊ณ ๋„ ํ•จ

๐Ÿ’ซ != Polling ํด๋ง


์ธํ„ฐ๋ŸฝํŠธ๋Š” ํด๋ง๊ณผ ๋‹ค๋ฅด๋‹ค.

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

Polling (ํด๋ง)

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.