π‘ λ³Έ λ¬Έμλ 'Blocking vs Non-Blocking'κ³Ό 'Sync vs Async'μ λν΄ μ 리ν΄λμ κΈμ λλ€.
networkμΈμλ μ΄ κ°λ μ μ¬μ©ν λλ μμΌλ, μ΄ λ¬Έμμ κ²½μ° λ€νΈμν¬ μμμ λ§νλ κ°λ μΌλ‘ μ€λͺ νκ³ μμΌλ μ°Έκ³ λ°λλλ€.
Blocking vs Non-Blocking I/O
λ€λ₯Έ μ£Όμ²΄κ° μμ ν λ μμ μ μ μ΄κΆμ΄ μλμ§ μλμ§λ‘ νλ¨ν μ μμ΅λλ€.
- Blocking I/O
- System Callμ΄ λλ λκΉμ§ νλ‘κ·Έλ¨μ λκΈ°ν΄μΌ νκ³ System Callμ΄ μλ£κ° λλ©΄ κ·ΈλμΌ Return ν©λλ€.
- λ€μ λ§νλ©΄, μμ μ μμ μ μ§ννλ€κ° λ€λ₯Έ 주체μ μμ μ΄ μμλλ©΄ λ€λ₯Έ μμ μ΄ λλ λκΉμ§ κΈ°λ€λ Έλ€κ° μμ μ μμ μ μμνλ κ²μ λλ€.
- μ΄λ μ μ΄κΆμ΄ λ€λ₯Έ μμ μ μλ€κ³ ννν μ μμ΅λλ€.
- Non-Blocking I/O:
- System Callμ΄ μλ£λμ§ μμλ λκΈ°νμ§ μκ³ Return ν΄λ²λ¦°λ€.
- λ€μ λ§νμλ©΄, λ€λ₯Έ 주체μ μμ μ κ΄λ ¨μμ΄ μμ μ μμ μ νλ κ²μ λλ€.
- μ΄λ μ μ΄κΆμ΄ μμ μ μμ μ μλ€κ³ ννν μ μμ΅λλ€.
Sync vs Async
κ²°κ³Όλ₯Ό λλ €μ£Όμμ λ μμμ κ²°κ³Όμ κ΄μ¬μ κ°μ§κ³ νλ¨ν©λλ€.
- Sync (Synchronous)
- System Callμ΄ λλ λκΉμ§ κΈ°λ€λ¦¬κ³ κ²°κ³Όλ¬Όμ κ°μ Έμ¨λ€.
- μμ μ λμμ μννκ±°λ, λμμ λλκ±°λ, λλλ λμμ μμν¨μ μλ―Έν©λλ€.
- Async (Asynchronous)
- System Callμ΄ μλ£λμ§ μμλ λμ€μ μλ£κ° λλ©΄ κ·Έλ κ²°κ³Όλ¬Όμ κ°μ Έμ¨λ€.
- μμ, μ’ λ£κ° μΌμΉνμ§ μμΌλ©°, μμ μ΄ λλλ λμμ μμμ νμ§ μμμ μλ―Έν©λλ€.
μ‘°ν©: Blocking vs Non-Blocking & Sync vs Async
Blocking I/O | Non-Blocking I/O | |
Sync | Blocking / Sync | Non-Blocking / Sync |
Async | Blocking / Async | Non-Blocking / Async |
Blocking / Sync
(Blocking)λ€λ₯Έ μμ μ΄ μμλλ λμ λμμ νμ§ μμΌλ©°, (Sync)κ²°κ³Όλ₯Ό λ°ννλ©΄ λ°λ‘ μ²λ¦¬ν©λλ€.
Non-Blocking / Sync
(Non-Blocking)λ€λ₯Έ μμ μ΄ μμ΄λ μμ μ μμ μ λ©μΆμ§ μμΌλ©°, (Sync)κ²°κ³Όλ₯Ό λ°ννλ©΄ λ°λ‘ μ²λ¦¬ν©λλ€. μ΄λ μ£ΌκΈ°μ μΌλ‘ κ²°κ³Όλ₯Ό λ¬Όμ΄λ³΄κ³ λ°ννλ κ³Όμ μ ν΅ν΄ κ²°κ³Όλ₯Ό λ°νν κ²½μ° ν΄λΉ κ²°κ³Όλ₯Ό λ°λ‘ μ²λ¦¬ν©λλ€.
Blocking / Async
(Blocking)λ€λ₯Έ μμ μ΄ μμλλ λμ λμμ νμ§ μμΌλ©°, (Async)κ²°κ³Όλ₯Ό λ°λ‘ μ²λ¦¬νμ§ μμλ λ©λλ€. νμ§λ§ μ΄μ κ°μ΄ μ¬μ©νλ κ²½μ°λ λ§€μ° λλ λλ€(μ λͺ» ꡬννλ€κ³ νννλκ² λ§μμλ μκ² λ€μ). λ°λΌμ Blockingμ κ²½μ° λλΆλΆ Syncλ‘ κ΅¬νν©λλ€.
Non-Blocking / Async
(Non-Blocking)λ€λ₯Έ μμ μ΄ μμ΄λ μμ μ μμ μ λ©μΆμ§ μμΌλ©°, (Async)κ²°κ³Όλ₯Ό λ°ννλ©΄ λ°λ‘ μ²λ¦¬νμ§ μμλ λ©λλ€. λ°λΌμ μμ μ μΌμ΄ λλλ©΄ μ΄νμ μ²λ¦¬ν©λλ€.
μ°¨μ΄μ λΉκ΅
Non-Blocking Vs ASynchronous μ°¨μ΄μ : System Callμ΄ μ¦μ Returnλ λ λ°μ΄ν°μ ν¬ν¨ μ 무
- Asynchronousμ μμ²μ μ²λ¦¬ μλ£μ κ΄κ³μμ΄ μλ΅ν©λλ€. μ΄ν μ΄μ체μ μμ μλ΅ν μ€λΉκ° λλ©΄ μλ΅ν©λλ€.
- Non-Blockingμ μμ²μ μ²λ¦¬ν μ μμΌλ©΄ λ°λ‘ μλ΅νκ³ μλλ©΄ Errorλ₯Ό λ°νν©λλ€.
Blocking Vs Synchronous μ°¨μ΄μ : Wait Queue μ 무
- Blockingμ System Callμ Returnμ κΈ°λ€λ¦¬λ λμ νμλ‘ Wait Queueμ λ¨Έλ λλ€.
- Synchronousμ System Callμ Returnμ κΈ°λ€λ¦¬λ λμ Wait Queueμ λ¨Έλ¬Ό μλ μλ μλ μμ΅λλ€.
λ§λ¬΄λ¦¬
Blocking I/Oμ κ²½μ°,
- Sync: BlockingμΌλ‘ ꡬνν λ μ¬μ©ν©λλ€.
Async: μ¬μ©νμ§ μμ.
Non-Blocking I/Oμ κ²½μ°,
- Sync: Non-Blocking μ€ κ²°κ³Όλ₯Ό λ°μμ λ, λ°λ‘ μ²λ¦¬νλ κ²½μ° μ¬μ©ν©λλ€.
- Async: Non-Blocking μ€ κ²°κ³Όλ₯Ό λ°μμ λ, μμ μ μμ μ μ²λ¦¬ν ν κ²°κ³Όλ₯Ό μ²λ¦¬ν λ μ¬μ©ν©λλ€.
μ°Έκ³
- [10λΆ ν μ½ν‘] π° λ©ν μ Blocking vs Non-Blocking, Sync vs Async: https://www.youtube.com/watch?v=oEIoqGd-Sns
- Synchronous(λκΈ°) Vs Asynchronous(λΉλκΈ°): https://nesoy.github.io/articles/2017-01/Synchronized
'Study: ComputerScience(CS) > CS: Network' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] Socket μμΌ νλ‘κ·Έλλ° (feat. sockaddr_in, IPv4...) (2) | 2022.12.16 |
---|---|
[Network] Message Queue(λ©μμ§ν) μ 리 (0) | 2022.11.26 |
[Network] λ€νΈμν¬ κΈ°λ³Έ κ°λ μ 리 (IP, Route, Subnet...) (1) | 2022.10.08 |
[Network] HTTP vs HTTPS / GET vs POST μ°¨μ΄μ λΉκ΅ (0) | 2022.07.19 |
[Network] RESTful API μλ―Έμ μ€κ³ κ·μΉ (0) | 2022.07.07 |