View

[OS] μΈν„°λŸ½νŠΈ(Interrupt)

μ±…μ½λŠ” 감자 2022. 8. 30. 21:35
λ°˜μ‘ν˜•

μΈν„°λŸ½νŠΈ

πŸ’‘ μΈν„°λŸ½νŠΈ (Interrupt)

: CPUκ°€ νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 도쀑에 κΈ‰ν•˜κ²Œ λ‹€λ₯Έ 일을 μ²˜λ¦¬ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” κΈ°λŠ₯

λŒ€λΆ€λΆ„μ˜ μ»΄ν“¨ν„°λŠ” ν•œ 개의 CPUλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ ν•œ μˆœκ°„μ—λŠ” ν•˜λ‚˜μ˜ 일 밖에 μ²˜λ¦¬ν•  수 μ—†λ‹€.

λ”°λΌμ„œ ,μ–΄λ–€ 일을 μ²˜λ¦¬ν•˜λŠ” 도쀑에 μš°μ„  μˆœμœ„κ°€ κΈ‰ν•œ 일을 μ²˜λ¦¬ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ λŒ€μ²˜ν•  수 μžˆλŠ” λ°©μ•ˆ ν•„μš”ν•˜λ‹€ → μΈν„°λŸ½νŠΈ


πŸ’‘ μΈν„°λŸ½νŠΈ (Interrupt) ν•„μš”ν•œ 이유

μ„ μ ν˜• μŠ€μΌ€μ€„λŸ¬λ₯Ό 예둜 λ“€λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ Running 쀑에 μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄ μ€‘λ‹¨λ˜κ²Œ λœλ‹€.

→ μ΄μœ λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ κ΅μ²΄ν•˜κΈ° μœ„ν•¨μœΌλ‘œ, κ·Έλ ‡κ²Œ ν•˜κΈ° μœ„ν•΄μ„œλŠ” μŠ€μΌ€μ€„λŸ¬μ˜ μ½”λ“œκ°€ μ‹€ν–‰μ΄λ˜μ„œ ν˜„μž¬ 진행쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘μ§€μ‹œν‚¬ 수 μžˆμ–΄μ•Ό ν•œλ‹€. μ™œλƒν•˜λ©΄ μŠ€μΌ€μ€„λŸ¬λ„ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ΄λ‹ˆκΉŒ !!

κ·ΈλŸ¬λ‚˜ ν”„λ‘œμ„ΈμŠ€κ°€ 슀슀둜 κ²°μ •ν•˜λŠ”κ²ƒμ€ 진행 쀑에 I/Oμž₯치 ν˜Ήμ€ λ‹€λ₯Έ μž‘μ—…μ„ 진행해야 ν•΄μ„œ Block μƒνƒœκ°€ λ˜λŠ”κ²ƒκ³Ό ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜μ„œ Exitμƒνƒœκ°€ λ˜λŠ” 것이닀.=. 즉, Running μƒνƒœμ—μ„œλŠ” μŠ€μΌ€μ€„λŸ¬μ—μ˜ν•΄ κ°•μ œλ‘œ Readyμƒνƒœκ°€ λ˜λŠ” 것일뿐, ν”„λ‘œμ„ΈμŠ€κ°€ 슀슀둜 μ€‘λ‹¨ν•˜λŠ”κ²ƒμ΄ μ•„λ‹ˆλΌ μŠ€μΌ€μ€„λŸ¬κ°€ κ°•μ œλ‘œ 쀑단을 μ‹œν‚€λŠ” 것이고 μΈν„°λŸ½νŠΈλŠ” μ΄λŸ¬ν•œ λΆ€λΆ„μ—μ„œ ν•„μš”ν•œ κΈ°λŠ₯이닀.

*μ„ μ ν˜• 기법: ν”„λ‘œμ„ΈμŠ€ running 쀑에 μŠ€μΌ€μ₯΄λŸ¬κ°€ 이λ₯Ό μ€‘λ‹¨μ‹œν‚€κ³  λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ ꡐ체 κ°€λŠ₯


πŸ’‘μΈν„°λŸ½νŠΈ μš°μ„ μˆœμœ„

μ΄λ ‡κ²Œ μΈν„°λŸ½νŠΈκ°€ ν•œ κ°œμ”©λ§Œ μ‹€ν–‰λ˜λ©΄ μ°Έ μ’‹κ² μ§€λ§Œ μ—¬λŸ¬ μΈν„°λŸ½νŠΈκ°€ λ™μ‹œμ— λ°œμƒν•˜λŠ” κ²½μš°λŠ” 많이 μ‘΄μž¬ν•œλ‹€. 이 λ•Œ ν•œ 개의 CPU인 상황이라면 λ™μ‹œμ— μ—¬λŸ¬ 개의 μΈν„°λŸ½νŠΈκ°€ λ°œμƒν•œλ‹€λ©΄ μš°μ„  μˆœμœ„λ₯Ό μ •ν•΄μ„œ 순차적으둜 μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€. 이λ₯Ό μΈν„°λŸ½νŠΈ μš°μ„  μˆœμœ„λΌ ν•˜κ³  이런 μš°μ„  μˆœμœ„λŠ” μ•„λž˜μ™€ 같이 μ€‘μš”ν•˜κ³  μ‹¬κ°ν•œ μΈν„°λŸ½νŠΈκ°€ μš°μ„ μ μœΌλ‘œ μ²˜λ¦¬λ˜μ–΄μ•Ό ν•œλ‹€.

  1. 전원 κ³΅κΈ‰μ˜ 이상
  2. CPU의 기계적인 였λ₯˜
  3. μ™ΈλΆ€ μ‹ ν˜Έμ— μ˜ν•œ μΈν„°λŸ½νŠΈ
  4. μž…μΆœλ ₯ 전솑 μš”μ²­ 및 전솑 μ™„λ£Œ, 전솑 였λ₯˜
  5. ν”„λ‘œκ·Έλž¨ 검사 μΈν„°λŸ½νŠΈ
  6. μˆ˜νΌλ°”μ΄μ € 호좜(SVC μΈν„°λŸ½νŠΈ)

πŸ’‘ λ‚΄λΆ€ μΈν„°λŸ½νŠΈμ™€ μ™ΈλΆ€ μΈν„°λŸ½νŠΈ

ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈμ™€ μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈ 두가지 경우둜 λ‚˜λˆ„λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ, μ—¬κΈ°μ„œλŠ” λ‚΄μ™ΈλΆ€λ₯Ό μ†Œκ°œν•˜κ² λ‹€.

μ™ΈλΆ€ μΈν„°λŸ½νŠΈ

: μž…μΆœλ ₯ μž₯치, 전원 λ“±μ˜ 외뢀적인 μš”μΈμ— μ˜ν•΄ λ°œμƒν•˜λŠ” μΈν„°λŸ½νŠΈ

  • 전원 이상 μΈν„°λŸ½νŠΈ: μ •μ „μ΄λ‚˜ 전원이 이상이 μžˆλŠ” 경우
  • 기계 κ³ μž₯ μΈν„°λŸ½νŠΈ: CPUλ“±μ˜ κΈ°λŠ₯적인 λ™μž‘ 였λ₯˜κ°€ λ°œμƒν•œ 경우
  • μž…μΆœλ ₯ μΈν„°λŸ½νŠΈ(I/O Interrupt): μž…μΆœλ ₯의 μ’…λ£Œ λ“±μ˜ 이유둜 CPU의 μˆ˜ν–‰μ„ μš”μ²­ν•˜λŠ” μΈν„°λŸ½νŠΈ. → ν‚€λ³΄λ“œ, 마우슀, μ €μž₯μž₯치, ν”„λ¦°ν„° λ“±λ“±

λ‚΄λΆ€ μΈν„°λŸ½νŠΈ

: 잘λͺ»λœ λͺ…λ Ήμ΄λ‚˜ 데이터λ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒν•˜λŠ” μΈν„°λŸ½νŠΈ

  • 0으둜 λ‚˜λˆ„λŠ” 경우
  • μ˜€λ²„ν”Œλ‘œμš° λ˜λŠ” μ–Έλ”ν”Œλ‘œμš°κ°€ λ°œμƒν•œ 경우
  • ν”„λ‘œκ·Έλž¨ μƒμ˜ 였λ₯˜
  • ν”„λ‘œκ·Έλž¨μ—μ„œ ν•¨μˆ˜ λ“± λͺ…λ Ήμ–΄λ₯Ό 잘λͺ» μ‚¬μš©ν•œ 경우
  • μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈ: CPUκ°€ μΈμŠ€νŠΈλŸ­μ…˜μ„ μˆ˜ν–‰ν•˜λŠ” 도쀑에 μΌμ–΄λ‚˜λŠ” μΈν„°λŸ½νŠΈ

πŸ’‘ μΈν„°λŸ½νŠΈ μ²˜λ¦¬κ³Όμ •

μœ„ 그림이 μ‹œμ‚¬ν•˜λŠ” λ°”λŠ” λ‹€μŒκ³Ό κ°™λ‹€. μš°μ„ , λͺ…λ Ήμ–΄ 사이클은 인좜(fetch stage)
κ³Ό μ‹€ν–‰(execution stage) 두 가지 단계λ₯Ό λ°˜λ³΅ν•΄μ„œ μˆ˜ν–‰ν•œλ‹€.

그런데 μΈν„°λŸ½νŠΈ μš”μ²­μ΄ λ“€μ–΄μ™”λ‹€κ³  ν•΄μ„œ λ°”λ‘œ 이λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, λͺ…λ Ήμ–΄ N의 μ‹€ν–‰ 단계λ₯Ό λ§ˆμ³μ•Ό ν•œλ‹€. λͺ…λ Ήμ–΄μ˜ 싀행단계λ₯Ό 마칠 λ•Œλ§ˆλ‹€ μ€‘μ•™μ²˜λ¦¬μž₯μΉ˜λŠ” λ°˜λ³΅μ μœΌλ‘œμΈν„°λŸ½νŠΈ μš”μ²­μ΄ μžˆλŠ”μ§€ κ³„μ†ν•΄μ„œ ν™•μΈν•œλ‹€. μΈν„°λŸ½νŠΈ μš”μ²­μ΄ μžˆμ–΄μ•Ό μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ 단계λ₯Ό μ§„ν–‰ν•œλ‹€.


μ°Έκ³ 1: https://whatisthenext.tistory.com/147
μ°Έκ³ 2: https://velog.io/@hyun0310woo/7.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

λ°˜μ‘ν˜•
Share Link
reply
λ°˜μ‘ν˜•
Β«   2024/09   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30