Computer Science/πŸ”’ Operating System

[운영체제] 동기/비동기(Sync/Async), λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή(Blocking/Non-Blocking)

J1Yun 2023. 2. 22. 15:25
728x90

동기/비동기? λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή?

동기와 비동기, λΈ”λ‘œν‚Ήκ³Ό λ…ΌλΈ”λ‘œν‚Ήμ˜ κ°œλ…μ€ μœ μ‚¬ν•˜κ²Œ 느껴질 수 μžˆμ§€λ§Œ μ„œλ‘œ λ°”λ‘œλ³΄λŠ” 관점을 λ‹¬λ¦¬ν•˜κ³  μžˆλ‹€.

동기/λΉ„λ™κΈ°λŠ” 일을 μ²˜λ¦¬ν•˜λŠ” μˆœμ„œ(μ‹œμ )와 κ²°κ³Ό(처리)와 κ΄€λ ¨μžˆλŠ” κ°œλ…μœΌλ‘œ 이전 μž‘μ—… μ’…λ£Œμ™€ λ™μ‹œμ— μ‹œμž‘ν•˜λ©΄ 동기, 그렇지 μ•ŠμœΌλ©΄ λΉ„λ™κΈ°λ‘œ κ΅¬λΆ„ν•œλ‹€.

λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ήμ€ μ œμ–΄κΆŒκ³Ό κ΄€λ ¨μžˆλŠ” κ°œλ…μœΌλ‘œ ν•¨μˆ˜ 호좜 μ‹œ μ œμ–΄κΆŒμ΄ λ„˜μ–΄κ°€λ©΄ λΈ”λ‘œν‚Ή, 그렇지 μ•Šκ³  μžμ‹ μ˜ 할일을 μ§€μ†ν•˜λ©΄ λ…ΌλΈ”λ‘œν‚ΉμœΌλ‘œ κ΅¬λΆ„ν•œλ‹€.

 

동기(Synchronous)

  • μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜κ±°λ‚˜ λ™μ‹œμ— λλ‚˜κ±°λ‚˜ λλ‚˜λŠ” λ™μ‹œμ— μ‹œμž‘ν•¨
    • μš”μ²­ μž‘μ—…μ˜ μ’…λ£Œ μ‹œμ κ³Ό λ‚˜λ¨Έμ§€ μž‘μ—… μš”μ²­ μ‹œμž‘ μ‹œμ μ˜ λ™μ‹œμ„±
  • ν˜ΈμΆœν•œ ν•¨μˆ˜μ˜ μž‘μ—… μ™„λ£Œ 응닡이 ν•„μš”ν•΄ μž‘μ—… μ™„λ£Œ μ—¬λΆ€λ₯Ό κ³„μ†ν•΄μ„œ λ¬»κ±°λ‚˜ μ‘닡을 κΈ°λ‹€λ¦Ό
  • ν˜ΈμΆœν•œ ν•¨μˆ˜μ˜ μž‘μ—… μ™„λ£Œ 여뢀에 λŒ€ν•΄ κ³„μ†ν•΄μ„œ 관심을 κ°–μŒ
  • 응닡(리턴값)에 λŒ€ν•΄ μ¦‰κ°μ μœΌλ‘œ 처리

 

비동기(Asynchronous)

  • μš”μ²­ μž‘μ—…μ˜ μ’…λ£Œμ™€ λ‹€λ₯Έ μš”μ²­μ˜ μ‹œμž‘ μ‹œμ μ΄ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©° λλ‚˜λŠ” λ™μ‹œμ— μ‹œμž‘ν•˜μ§€ μ•ŠμŒ
  • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€ν–‰λ§Œ μ‹œν‚¬ 뿐 μž‘μ—…μ˜ μ™„λ£Œ μ—¬λΆ€μ—λŠ” 관심을 갖지 μ•ŠμœΌλ©° μžμ‹ μ˜ μž‘μ—…μ„ κ³„μ†ν•΄μ„œ 이어감
  • 응닡(리턴값)에 λŒ€ν•œ μ²˜λ¦¬λŠ” μ¦‰κ°μ μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ μˆ˜λ„, 이루어지지 μ•Šμ„ μˆ˜λ„ 있음(λ‚˜μ€‘μ— 처리)
  • μš”μ²­ 및 ν•¨μˆ˜ 호좜 μ‹œ 콜백 ν•¨μˆ˜λ₯Ό ν•¨κ»˜ μ „λ‹¬ν•˜κ³ , 응닡이 μ€€λΉ„λ˜λ©΄ ν•¨κ»˜ 보낸 콜백 ν•¨μˆ˜κ°€ 싀행됨

 

λΈ”λ‘œν‚Ή(Blocking)

  • A ν•¨μˆ˜κ°€ B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ AλŠ” Bμ—κ²Œ μ œμ–΄κΆŒμ„ λ„˜κ²¨μ£Όκ³ , BλŠ” μžμ‹ μ˜ μž‘μ—…μ΄ 끝날 λ•ŒκΉŒμ§€ μ œμ–΄κΆŒμ„ 가지고 있음
  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜μ˜ 싀행이 끝날 λ•ŒκΉŒμ§€ λ©ˆμΆ”κ³  κΈ°λ‹€λ¦Ό
  • B ν•¨μˆ˜κ°€ μˆ˜ν–‰μ„ μ™„λ£Œν•΄μ„œ μ œμ–΄κΆŒμ„ λ‹€μ‹œ Aν•¨μˆ˜μ—κ²Œ λ„˜κ²¨μ£Όλ©΄ A ν•¨μˆ˜λŠ” μžμ‹ μ˜ μž‘μ—…μ„ λ‹€μ‹œ μ‹€ν–‰

 

λ…ΌλΈ”λ‘œν‚Ή(Non-Blocking)

  • A ν•¨μˆ˜κ°€ B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μ œμ–΄κΆŒμ€ λ„˜μ–΄κ°€μ§€ μ•Šμ€ 채 B ν•¨μˆ˜κ°€ μ‹€ν–‰
    • ν•¨μˆ˜ 호좜 μ‹œ μ œμ–΄κΆŒμ΄ Bν•¨μˆ˜μ—κ²Œ λ„˜μ–΄κ°€μ§€λ§Œ λ°”λ‘œ A ν•¨μˆ˜μ—κ²Œ λ„˜μ–΄κ°„λ‹€κ³  λ³΄λŠ” λ ˆνΌλŸ°μŠ€λ„ μžˆμ§€λ§Œ μ–΄μ°Œλλ“  핡심은 호좜된 ν•¨μˆ˜κ°€ μ‹€ν–‰ 쀑일 λ•Œλ„ μ œμ–΄κΆŒμ„ 가지고 μžˆλ‹€λŠ” μ‚¬μ‹€μž„
  • A ν•¨μˆ˜λŠ” μ—¬μ „νžˆ μ œμ–΄κΆŒμ„ 가지고 μžˆμœΌλ―€λ‘œ B ν•¨μˆ˜μ˜ μ‹€ν–‰/μ’…λ£Œ 여뢀와 관계없이 κ³„μ†ν•΄μ„œ μžμ‹ μ˜ μž‘μ—… μˆ˜ν–‰

 

 

동기/비동기 + λΈ”λ‘œν‚Ή/λ…ΈλΈ”λ‘œν‚Ή μ‘°ν•©

 

1) Sync-Blocking

  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©° μ œμ–΄κΆŒμ„ λ„˜κ²¨μ£Όκ³ (λΈ”λ‘œν‚Ή), ν•¨μˆ˜ B의 리턴값을 κΈ°λ‹€λ¦Ό(동기)
  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜μ˜ 리턴값과 μ œμ–΄κΆŒμ„ 기닀리며 아무것도 ν•˜μ§€ μ•ŠμŒ

 

2) Sync-Nonblocking

  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©° μ œμ–΄κΆŒμ„ λ„˜κΈ°μ§€ μ•Šκ³  μžμ‹ μ˜ μž‘μ—…μ„ 계속 μˆ˜ν–‰ν•¨(λ…ΌλΈ”λ‘œν‚Ή)
  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜μ˜ 리턴값이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— μžμ‹ μ˜ μž‘μ—… μ‹€ν–‰ 쀑간쀑간 B ν•¨μˆ˜μ˜ μ’…λ£Œ μ—¬λΆ€λ₯Ό λ¬Όμ–΄μ„œ 확인함(동기)
  • λŒ€ν‘œμ  예) Polling

 

3) Async-Nonblocking

  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©° μ œμ–΄κΆŒμ„ λ„˜κΈ°μ§€ μ•Šκ³  μžμ‹ μ˜ μž‘μ—…μ„ 계속 μˆ˜ν–‰ν•¨(λ…ΌλΈ”λ‘œν‚Ή)
  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜ 호좜 μ‹œ 콜백 ν•¨μˆ˜λ₯Ό λ„˜κ²¨μ£Όλ©° B ν•¨μˆ˜μ˜ μ’…λ£Œ 여뢀에 관심을 갖지 μ•ŠμŒ(동기)
  • B ν•¨μˆ˜λŠ” μžμ‹ μ˜ μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ A ν•¨μˆ˜κ°€ μ€€ 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰(동기)

 

4) Async-Blocking

  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©° B ν•¨μˆ˜μ˜ μ’…λ£Œ 즉, 리턴값에 신경쓰지 μ•ŠμœΌλ©° 콜백 ν•¨μˆ˜ λ§Œμ„ 보냄(비동기)
  • A ν•¨μˆ˜λŠ” B ν•¨μˆ˜μ˜ μž‘μ—…μ— 관심이 μ—†μ§€λ§Œ μ œμ–΄κΆŒμ„ λ„˜κ²¨ B ν•¨μˆ˜κ°€ μ’…λ£Œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦Ό(λΈ”λ‘œν‚Ή)
728x90