λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“ŒCS/OS

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

by dar0m! 2021. 8. 23.

μš΄μ˜μ²΄μ œμ™€ ν•˜λ“œμ›¨μ–΄ κ°„μ˜ μƒν˜Έλ™μž‘(폴링)

μš΄μ˜μ²΄μ œλŠ” λ ˆμ§€μŠ€ν„°(μƒνƒœ, λͺ…λ Ή, 데이터 λ ˆμ§€μŠ€ν„°)λ₯Ό 읽고 μ“°λŠ” 것을 톡해 ν•˜λ“œμ›¨μ–΄ μž₯치의 λ™μž‘μ„ μ œμ–΄ν•  수 있게 λœλ‹€.

  • μƒνƒœ(Status) : ν•˜λ“œμ›¨μ–΄ μž₯치의 ν˜„μž¬ μƒνƒœλ₯Ό 읽을 수 μžˆλŠ” λ ˆμ§€μŠ€ν„°
  • λͺ…λ Ή(Command) : ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜κ°€ νŠΉμ • λ™μž‘μ„ ν•˜λ„λ‘ μš”μ²­ν•  λ•Œ μ‚¬μš©
  • 데이터(Data) : ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜μ— 데이터λ₯Ό λ³΄λ‚΄κ±°λ‚˜ λ°›κ±°λ‚˜ ν•  λ•Œ μ‚¬μš©

μš΄μ˜μ²΄μ œμ™€ ν•˜λ“œμ›¨μ–΄ μž₯치 간에 폴링을 ν†΅ν•œ μƒν˜Έμž‘μš©μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  1. 폴링(Polling)을 ν•œλ‹€.
    • 폴링(Polling) : μš΄μ˜μ²΄μ œκ°€ ν•˜λ“œμ›¨μ–΄ μž₯치의 μƒνƒœ λ ˆμ§€μŠ€ν„°λ₯Ό 읽음으둜써 λͺ…λ Ήμ˜ μˆ˜μ‹  μ—¬λΆ€λ₯Ό 주기적으둜 ν™•μΈν•˜λŠ” 것이닀.
    • 즉, ν•˜λ“œμ›¨μ–΄μž₯치의 μƒνƒœλ₯Ό μˆ˜μ‹œλ‘œ μ²΄ν¬ν•˜μ—¬ λͺ…령을 받을 수 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 것을 λ§ν•œλ‹€.
  2. μš΄μ˜μ²΄μ œκ°€ 데이터 λ ˆμ§€μŠ€ν„°μ— 데이터λ₯Ό μ „λ‹¬ν•œλ‹€.
  3. μš΄μ˜μ²΄μ œκ°€ λͺ…λ Ή λ ˆμ§€μŠ€ν„°μ— λͺ…령을 κΈ°λ‘ν•œλ‹€.
  4. μš΄μ˜μ²΄μ œλŠ” ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜κ°€ νŠΉμ • λ™μž‘μ„ μ²˜λ¦¬ν•˜μ˜€λŠ”μ§€ 폴링 λ°˜λ³΅λ¬Έμ„ λŒλ©΄μ„œ κΈ°λ‹€λ¦°λ‹€.(성곡/μ‹€νŒ¨ μ½”λ“œλ₯Ό λ°›κ²Œ 됨)

폴링을 ν•˜λŠ” λ™μ•ˆμ—λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUλ₯Ό μ–‘λ„ν•˜μ§€ μ•Šκ³  ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜κ°€ λ™μž‘μ„ μ™„λ£Œν•  λ•ŒκΉŒμ§€ 계속 루프λ₯Ό λŒλ©΄μ„œ ν•˜λ“œμ›¨μ–΄ μƒνƒœλ₯Ό μ²΄ν¬ν•˜κ²Œ λœλ‹€.

→ ν•˜λ“œμ›¨μ–΄ μž₯치의 μ†λ„λŠ” 맀우 느리기 λ•Œλ¬Έμ— CPUλ₯Ό 많이 λ‚­λΉ„ν•˜κ²Œ λœλ‹€.

 

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

CPUκ°€ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  μžˆμ„ λ•Œ, I/O ν•˜λ“œμ›¨μ–΄ λ“±μ˜ μž₯μΉ˜μ— μ˜ˆμ™Έμƒν™©μ΄ λ°œμƒν•˜μ—¬ μ²˜λ¦¬κ°€ ν•„μš”ν•  경우 CPUμ—κ²Œ μ•Œλ € μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것을 λ§ν•œλ‹€.
  • CPU의 정상적인 ν”„λ‘œκ·Έλž¨ 싀행을 λ°©ν•΄ν–ˆλ‹€λŠ” 의미

μš΄μ˜μ²΄μ œλŠ” λ””λ°”μ΄μŠ€λ₯Ό ν΄λ§ν•˜λŠ” λŒ€μ‹ μ— I/O μš”μ²­ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λΈ”λ‘μ‹œν‚€κ³  CPUλ₯Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μ–‘λ„ν•œλ‹€. μž₯μΉ˜κ°€ 끝마치면 ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚€κ³  CPUλŠ” μš΄μ˜μ²΄μ œκ°€ 미리 μ •μ˜ν•΄ 놓은 μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ 루틴(ISR) λ˜λŠ” μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬(Interrput Handler)λ₯Ό μ‹€ν–‰ν•œλ‹€. μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬λŠ” μž…μΆœλ ₯ μš”μ²­, I/O λŒ€κΈ°μ€‘μΈ ν”„λ‘œμ„ΈμŠ€ 깨우기 등을 ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€κ°€ μž‘μ—…μ„ 계속할 수 μžˆλ„λ‘ ν•œλ‹€.

μ™ΈλΆ€ μΈν„°λŸ½νŠΈ, λ‚΄λΆ€ μΈν„°λŸ½νŠΈ, μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈκ°€ μžˆλ‹€.

  • μ™ΈλΆ€/λ‚΄λΆ€ μΈν„°λŸ½νŠΈλŠ” CPU의 ν•˜λ“œμ›¨μ–΄ μ‹ ν˜Έμ— μ˜ν•΄ λ°œμƒ
  • μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈλŠ” λͺ…λ Ήμ–΄μ˜ μˆ˜ν–‰μ— μ˜ν•΄ λ°œμƒ

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

μž…μΆœλ ₯ μž₯치, 타이밍 μž₯치, 전원 λ“± 외뢀적인 μš”μΈμœΌλ‘œ λ°œμƒ
  1. 타이머 μΈν„°λŸ½νŠΈ : 타이머가 μΌμ •ν•œ μ‹œκ°„ κ°„κ²©μœΌλ‘œ μ€‘μ•™μ²˜λ¦¬μž₯μΉ˜μ—κ²Œ μΈν„°λŸ½νŠΈλ₯Ό μš”μ²­
  2. μž…μΆœλ ₯ μΈν„°λŸ½νŠΈ : 속도가 느린 μž…μΆœλ ₯μž₯μΉ˜κ°€ μž…μΆœλ ₯ μ€€λΉ„κ°€ μ™„λ£Œλ˜μ—ˆμŒμ„ μ•Œλ¦¬κΈ° μœ„ν•΄ μΈν„°λŸ½νŠΈλ₯Ό μš”μ²­

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

Trap이라고 λΆ€λ₯΄λ©°, 잘λͺ»λœ λͺ…λ Ήμ΄λ‚˜ 데이터λ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒ
0으둜 λ‚˜λˆ„κΈ°, μ˜€λ²„ν”Œλ‘œμš°, λͺ…λ Ήμ–΄ 잘λͺ» μ‚¬μš©ν•œ 경우(Exception)
  1. ν•˜λ“œμ›¨μ–΄ κ³ μž₯(Hardware Interrupt)
    • 컴퓨터 κ³ μž₯
    • 데이터 전달 κ³Όμ •μ—μ„œμ˜ λΉ„νŠΈ 였λ₯˜
    • 전원이 λ‚˜κ°„ 경우
  2. μ‹€ν–‰ν•  수 μ—†λŠ” λͺ…λ Ήμ–΄ : κΈ°μ–΅μž₯μΉ˜μ—μ„œ μΈμΆœν•œ λͺ…λ Ήμ–΄μ˜ λΉ„νŠΈ νŒ¨ν„΄μ΄ μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ 경우
  3. λͺ…λ Ήμ–΄ μ‹€ν–‰ 였λ₯˜ : λ‚˜λˆ„κΈ° 0을 ν•˜λŠ” 경우
  4. μ‚¬μš© κΆŒν•œ μœ„λ°° : μ‚¬μš©μžκ°€ 운영체제만 μ‚¬μš©ν•  수 μžˆλŠ” μžμ›μ— μ•‘μ„ΈμŠ€ν•˜λŠ” 경우

μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈ

ν”„λ‘œκ·Έλž¨ 처리 쀑 λͺ…λ Ήμ˜ μš”μ²­μ— μ˜ν•΄ λ°œμƒν•œ 것(SVC μΈν„°λŸ½νŠΈ)
  1. μ‚¬μš©μžκ°€ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚¬ λ•Œ λ°œμƒ : μ†Œν”„νŠΈμ›¨μ–΄ 이용 쀑에 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰μ‹œν‚€λ©΄ μ‹œλΆ„ν•  처리λ₯Ό μœ„ν•΄ μžμ› ν• λ‹Ή λ™μž‘μ΄ μˆ˜ν–‰λœλ‹€.

μΈν„°λŸ½νŠΈ 처리 κ³Όμ •

μš°μ„ , λͺ…λ Ήμ–΄ 사이클은 μΈμΆœ(fetch stage)κ³Ό μ‹€ν–‰(execution stage) λ‘ 가지 단계λ₯Ό λ°˜λ³΅ν•΄μ„œ μˆ˜ν–‰ν•œλ‹€.

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

μ’€ 더 큰 κ°œλ…μœΌλ‘œ μ‚΄νŽ΄λ³Έλ‹€λ©΄ μ•„λž˜μ™€ 같은 그림이 λœλ‹€.

μ£Ό ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ‹€κ°€ μΈν„°λŸ½νŠΈκ°€ λ°œμƒν–ˆλ‹€. ν˜„μž¬ μˆ˜ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ„ λ©ˆμΆ”κ³ , μƒνƒœ λ ˆμ§€μŠ€ν„°μ™€ PC 등을 μŠ€νƒμ— μž μ‹œ μ €μž₯ν•œ 뒀에 μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ λ£¨ν‹΄μœΌλ‘œ κ°„λ‹€. (μž μ‹œ μ €μž₯ν•˜λŠ” μ΄μœ λŠ”, μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ 루틴이 λλ‚œ λ’€ λ‹€μ‹œ μ›λž˜ μž‘μ—…μœΌλ‘œ λŒμ•„μ™€μ•Ό ν•˜κΈ° λ•Œλ¬Έ)

process A μ‹€ν–‰ 쀑 λ””μŠ€ν¬μ—μ„œ μ–΄λ–€ 데이터λ₯Ό μ½μ–΄μ˜€λΌλŠ” λͺ…령을 λ°›μ•˜λ‹€κ³  κ°€μ •ν•΄λ³΄μž.

  1. process AλŠ” system call을 톡해 μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
  2. CPUλŠ” ν˜„μž¬ 진행 쀑인 기계어 μ½”λ“œλ₯Ό μ™„λ£Œν•œλ‹€.
  3. ν˜„μž¬κΉŒμ§€ μˆ˜ν–‰μ€‘μ΄μ—ˆλ˜ μƒνƒœλ₯Ό ν•΄λ‹Ή process의 PCB(Process Control Block)에 μ €μž₯ν•œλ‹€. (μˆ˜ν–‰μ€‘μ΄λ˜ MEMORYμ£Όμ†Œ, λ ˆμ§€μŠ€ν„° κ°’, ν•˜λ“œμ›¨μ–΄ μƒνƒœ λ“±...)
  4. PC(Program Counter, IP)에 λ‹€μŒμ— μ‹€ν–‰ν•  λͺ…λ Ήμ˜ μ£Όμ†Œλ₯Ό μ €μž₯ν•œλ‹€.
  5. μΈν„°λŸ½νŠΈ 벑터λ₯Ό 읽고 ISR μ£Όμ†Œκ°’μ„ μ–»μ–΄ ISR(Interrupt Service Routine)둜 μ ν”„ν•˜μ—¬ 루틴을 μ‹€ν–‰ν•œλ‹€.
  6. ν•΄λ‹Ή μ½”λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€.
  7. ν•΄λ‹Ή 일을 λ‹€ μ²˜λ¦¬ν•˜λ©΄, λŒ€ν”Όμ‹œν‚¨ λ ˆμ§€μŠ€ν„°λ₯Ό λ³΅μ›ν•œλ‹€.
  8. ISR의 끝에 IRET λͺ…령어에 μ˜ν•΄ μΈν„°λŸ½νŠΈκ°€ ν•΄μ œ λœλ‹€.
    • IRET : Intel μ•„ν‚€ν…μ²˜μ˜ μ–΄μ…ˆλΈ”λ¦¬ λͺ…λ Ήμ–΄ 쀑 ν•˜λ‚˜λ‘œ 'μΈν„°λŸ½νŠΈ 처리 μ‹œμ— λͺ¨λ“  처리λ₯Ό μ™„λ£Œν•˜κ³  λ‹€μ‹œ νƒœμŠ€ν¬λ‘œ 볡ꡬ'ν•˜λŠ” λͺ…λ Ήμ–΄
  9. IRET λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰λ˜λ©΄, λŒ€ν”Όμ‹œν‚¨ PC 값을 λ³΅μ›ν•˜μ—¬ 이전 μ‹€ν–‰ μœ„μΉ˜λ‘œ λ³΅μ›ν•œλ‹€.
  • μΈν„°λŸ½νŠΈ λ²ˆν˜ΈλŠ” μ˜ˆμ™Έμƒν™© μΈν„°λŸ½νŠΈλ₯Ό μ œμ™Έν•˜κ³  μš΄μ˜μ²΄μ œκ°€ κ²°μ •ν•œλ‹€. λ¦¬λˆ…μŠ€μ—μ„œ μΈν„°λŸ½νŠΈ λ²ˆν˜ΈλŠ” μ•„λž˜μ™€ κ°™λ‹€.
    • 0 ~ 31 : μ˜ˆμ™Έμƒν™© μΈν„°λŸ½νŠΈ
    • 32 ~ 47 : ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈ
    • 128 : μ‹œμŠ€ν…œ 콜

 

폴링 vs μΈν„°λŸ½νŠΈ

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

  • 폴링 : ν”„λ‘œμ„ΈμŠ€ 1이 μ‹€ν–‰ 쀑에 Diskλ‘œλΆ€ν„° I/O μš”μ²­μ΄ λ°œμƒν•˜λ©΄, μš΄μ˜μ²΄μ œλŠ” I/O μš”μ²­μ΄ μ™„λ£Œλ λ•ŒκΉŒμ§€ 반볡적으둜 ν΄λ§ν•œλ‹€.(p). λ””μŠ€ν¬κ°€ I/O μš”μ²­μ˜ 처리λ₯Ό μ™„λ£Œν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€ 1이 λ‹€μ‹œ λ™μž‘ν•œλ‹€.
  • μΈν„°λŸ½νŠΈ : ν”„λ‘œμ„ΈμŠ€ 1이 μ‹€ν–‰ 쀑에 μžˆλ‹€κ°€ Diskλ‘œλΆ€ν„° I/O μš”μ²­μ„ λ°›μœΌλ©΄, μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” λ™μ•ˆμ— μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€ 2λ₯Ό CPUμ—μ„œ μ‹€ν–‰μ‹œν‚€κ²Œ λœλ‹€. ν”„λ‘œμ„ΈμŠ€ 1에 λŒ€ν•œ λ””μŠ€ν¬ μš”μ²­μ΄ μ™„λ£Œκ°€ 되면 μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œμΌœ μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€ 1을 λ‹€μ‹œ CPUμ—μ„œ μ‹€ν–‰μ‹œν‚¨λ‹€.

이처럼 μΈν„°λŸ½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄ CPU μ—°μ‚°κ³Ό I/O μž₯치 μž‘μ—…μ„ μ€‘μ²©μ‹œμΌœ μˆ˜ν–‰ν•  수 있게 λœλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 폴링보닀 CPU μ‚¬μš©λ₯ μ„ 높일 수 μžˆλ‹€.

  • ν•˜μ§€λ§Œ 무쑰건 폴링보닀 μ’‹λ‹€κ³  ν•  μˆ˜λŠ” μ—†λ‹€.
    • 예λ₯Ό λ“€μ–΄, 단 ν•œλ²ˆμ˜ 폴링으둜만 끝날 μ •λ„μ˜ λΉ λ₯Έ ν•˜λ“œμ›¨μ–΄ μž₯치라면 μΈν„°λŸ½νŠΈλ³΄λ‹€ 폴링이 더 효율적이라고 ν•  수 μžˆλ‹€.
    • μΈν„°λŸ½νŠΈλ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 ν˜„μž¬ 싀행쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ λ¬Έλ§₯κ΅ν™˜(Context Switching)ν•˜κ²Œ 되고 이 λ•Œ λ§Žμ€ λΉ„μš©μ΄ 수반되기 λ•Œλ¬Έμ΄λ‹€.
    • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λΉ λ₯Έ ν•˜λ“œμ›¨μ–΄ μž₯치라면 ν΄λ§μ΄ 더 효율적이고 λŠλ¦° ν•˜λ“œμ›¨μ–΄ μž₯치라면 μΈν„°λŸ½νŠΈκ°€ 더 효율적이라고 ν•  수 μžˆλ‹€.

즉, μ»¨νŠΈλ‘€λŸ¬κ°€ μž…λ ₯을 λ°›μ•„λ“€μ΄λŠ” 방법(μš°μ„ μˆœμœ„ νŒλ³„λ°©λ²•)μ—λŠ” 두가지가 μžˆλ‹€.

  • 폴링 방식
    • μ‚¬μš©μžκ°€ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•΄ μž…λ ₯ ν•€μ˜ 값을 계속 읽어 λ³€ν™”λ₯Ό μ•Œμ•„λ‚΄λŠ” 방식
    • μΈν„°λŸ½νŠΈ μš”μ²­ ν”Œλž˜κ·Έλ₯Ό μ°¨λ‘€λ‘œ λΉ„κ΅ν•˜μ—¬ μš°μ„ μˆœμœ„κ°€ κ°€μž₯ 높은 μΈν„°λŸ½νŠΈ μžμ›μ„ μ°Ύμ•„ 이에 λ§žλŠ” μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ 루틴을 μˆ˜ν–‰ν•œλ‹€. (ν•˜λ“œμ›¨μ–΄μ— λΉ„ν•΄ 속도 느림)
  • μΈν„°λŸ½νŠΈ 방식
    • MCU(마이크둜 컨트둀러 μœ λ‹›, Micro Controller Unit, 컴퓨터)μžμ²΄κ°€ ν•˜λ“œμ›¨μ–΄μ μœΌλ‘œ λ³€ν™”λ₯Ό μ²΄ν¬ν•˜μ—¬ λ³€ν™” μ‹œμ—λ§Œ μΌμ •ν•œ λ™μž‘μ„ ν•˜λŠ” 방식
      • Daisy Chain
      • 병렬 μš°μ„ μˆœμœ„ λΆ€μ—¬

μΈν„°λŸ½νŠΈ 방식은 ν•˜λ“œμ›¨μ–΄λ‘œ 지원을 λ°›μ•„μ•Ό ν•˜λŠ” μ œμ•½μ΄ μžˆμ§€λ§Œ, 폴링에 λΉ„ν•΄ μ‹ μ†ν•˜κ²Œ λŒ€μ‘ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ μ‹€μ‹œκ°„ λŒ€μ‘μ΄ ν•„μš”ν•  λ•ŒλŠ” ν•„μˆ˜μ μΈ κΈ°λŠ₯이닀.

즉, μΈν„°λŸ½νŠΈλŠ” λ°œμƒμ‹œκΈ°λ₯Ό μ˜ˆμΈ‘ν•˜κΈ° νž˜λ“  κ²½μš°μ— μ»¨νŠΈλ‘€λŸ¬κ°€ κ°€μž₯ λΉ λ₯΄κ²Œ λŒ€μ‘ν•  수 μžˆλŠ” 방법이닀.

 

동기/비동기 κ΄€μ μ—μ„œ λ‚˜λˆ λ³Έ μΈν„°λŸ½νŠΈ

 

μΈν„°λŸ½νŠΈ(interrupt), μ˜ˆμ™Έ(exception), 트랩(trap)의 비ꡐ - Easy is Perfect

μ—¬λŸ¬ 가지 λΈ”λ‘œκ·Έλ₯Ό μ°Ύμ•„ 보던 쀑에 쒋은 μžλ£Œκ°€ μžˆμ–΄μ„œ κ°„κ²°ν•˜κ²Œ ν•˜μ—¬ ν¬μŠ€νŒ…ν•˜μ—¬ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€. - μΈν„°λŸ½νŠΈ (μΈν„°λŸ½νŠΈμ—λŠ” 비동기와 동기가 μžˆλ‹€. λΉ„λ™κΈ°λŠ” interrupt, λ™κΈ°λŠ” exception) > Asynchron

melonicedlatte.com

 

μ°Έκ³ 

λŒ“κΈ€