DrawingProcess
λ“œν”„ DrawingProcess
DrawingProcess
전체 방문자
였늘
μ–΄μ œ
Β«   2025/06   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
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
  • λΆ„λ₯˜ 전체보기 (964)
    • Profile & Branding (22)
      • Career (15)
    • IT Trends (254)
      • Conference, Faire (Experien.. (31)
      • News (187)
      • Youtube (19)
      • TED (8)
      • Web Page (2)
      • IT: Etc... (6)
    • Contents (97)
      • Book (66)
      • Lecture (31)
    • Project Process (94)
      • Ideation (0)
      • Study Report (34)
      • Challenge & Award (22)
      • 1Day1Process (5)
      • Making (5)
      • KRC-FTC (Team TC(5031, 5048.. (10)
      • GCP (GlobalCitizenProject) (15)
    • Study: ComputerScience(CS) (72)
      • CS: Basic (9)
      • CS: Database(SQL) (5)
      • CS: Network (14)
      • CS: OperatingSystem (3)
      • CS: Linux (39)
      • CS: Etc... (2)
    • Study: Software(SW) (95)
      • SW: Language (29)
      • SW: Algorithms (1)
      • SW: DataStructure & DesignP.. (1)
      • SW: Opensource (15)
      • SW: Error Bug Fix (43)
      • SW: Etc... (6)
    • Study: Artificial Intellige.. (149)
      • AI: Research (1)
      • AI: 2D Vision(Det, Seg, Tra.. (35)
      • AI: 3D Vision (70)
      • AI: MultiModal (3)
      • AI: SLAM (0)
      • AI: Light Weight(LW) (3)
      • AI: Data Pipeline (7)
      • AI: Machine Learning(ML) (1)
    • Study: Robotics(Robot) (33)
      • Robot: ROS(Robot Operating .. (9)
      • Robot: Positioning (8)
      • Robot: Planning & Control (7)
    • Study: DeveloperTools(DevTo.. (83)
      • DevTool: Git (12)
      • DevTool: CMake (13)
      • DevTool: NoSQL(Elastic, Mon.. (25)
      • DevTool: Container (17)
      • DevTool: IDE (11)
      • DevTool: CloudComputing (4)
    • 인생을 μ‚΄λ©΄μ„œ (64)
      • λ‚˜μ˜ μ·¨λ―Έλ“€ (7)
      • λ‚˜μ˜ 생각듀 (42)
      • 여행을 λ– λ‚˜μž~ (10)
      • 뢄기별 회고 (5)

개발자 λͺ…μ–Έ

β€œ λ§€μ£Ό λͺ©μš”μΌλ§ˆλ‹€ 당신이 항상 ν•˜λ˜λŒ€λ‘œ μ‹ λ°œλˆμ„ 묢으면 μ‹ λ°œμ΄ ν­λ°œν•œλ‹€κ³  생각해보라.
컴퓨터λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 이런 일이 항상 μΌμ–΄λ‚˜λŠ”λ°λ„ 아무도 λΆˆν‰ν•  생각을 μ•ˆ ν•œλ‹€. ”

- Jef Raskin

λ§₯의 아버지 - μ• ν”Œμ»΄ν“¨ν„°μ˜ λ§€ν‚¨ν† μ‹œ ν”„λ‘œμ νŠΈλ₯Ό 주도

인기 κΈ€

졜근 κΈ€

졜근 λŒ“κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
DrawingProcess

λ“œν”„ DrawingProcess

[Network] Blocking vs Non-Blocking & Sync vs Async 비ꡐ 정리
Study: ComputerScience(CS)/CS: Network

[Network] Blocking vs Non-Blocking & Sync vs Async 비ꡐ 정리

2022. 9. 25. 09:30
λ°˜μ‘ν˜•
πŸ’‘ λ³Έ λ¬Έμ„œλŠ” '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
    'Study: ComputerScience(CS)/CS: Network' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Network] Message Queue(λ©”μ‹œμ§€ν) 정리
    • [Network] λ„€νŠΈμ›Œν¬ κΈ°λ³Έ κ°œλ… 정리 (IP, Route, Subnet...)
    • [Network] HTTP vs HTTPS / GET vs POST 차이점 비ꡐ
    • [Network] RESTful API μ˜λ―Έμ™€ 섀계 κ·œμΉ™
    DrawingProcess
    DrawingProcess
    과정을 그리자!

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”