๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & Blocking๊ณผ Non-Blocking

2020. 5. 1. 13:21ยท๐Ÿ“ Computer Science/โœ OS

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & Blocking๊ณผ Non-Blocking

 

Blocking/Non-Blocking & Sync/Async

 

1. ๋™๊ธฐ(Synchronous)์™€ ๋น„๋™๊ธฐ(Asynchronous)

  • ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ด๊ณผ ๋™์‹œ์— ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ธฐ๋Œ€๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋™๊ธฐ๋ผ ํ‘œํ˜„ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๋Š” ๋น„๋™๊ธฐ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋™๊ธฐ: ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” Blocking ์ƒํƒœ์ด๋‹ค.
  • ๋น„๋™๊ธฐ: Blocking ๋˜์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ํ์— ๋„ฃ๊ฑฐ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—๊ฒŒ ํ•ด๋‹น task๋ฅผ ์œ„์ž„ํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๊ธฐ๋Œ€๋˜๋Š” ๊ฐ’์ด ๋ฐ”๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

 

2. Blocking๊ณผ Non-Blocking

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๊ฑด๋„ค์ฃผ๋Š” ์œ ๋ฌด์˜ ์ฐจ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

1) Blocking I/O

  • ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ์ปค๋„์—๊ฒŒ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” recvfrom() ํ•จ์ˆ˜ ํ˜ธ์ถœ → ์ปค๋„์ด ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ → ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๋Š” ์ž์‹ ์˜ ์ž‘์—…์„ ์ค‘๋‹จํ•œ ์ฑ„ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์ž‘์—…์ด CPU ์ž์›์„ ๊ฑฐ์˜ ์“ฐ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž์› ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค.

 

์—ฌ๋Ÿฌ Client๊ฐ€ ์ ‘์†ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ Blocking ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ

์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ) ์ค‘์ง€ → ๋‹ค๋ฅธ Client๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘์ง€ํ•˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ ๋ณ„๋„์˜ Clinet Thread๋ฅผ ์ƒ์„ฑ → ์ ‘์†์ž ์ˆ˜๊ฐ€ ๋งค์šฐ ๋งŽ์•„์ง

๊ฒฐ๊ตญ ๋งŽ์•„์ง„ CPU๋กœ ๋ฌธ๋งฅ ๊ตํ™˜ ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜์–ด ๋น„ํšจ์œจ์ ์ธ ๋™์ž‘ ๋ฐฉ์‹์„ ๊ฐ€์ง„๋‹ค.

 

2) Non-Blocking I/O

  • Blocking ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ recvfrom() ํ•จ์ˆ˜ ํ˜ธ์ถœ → ์ปค๋„์€ ๋ฐ”๋กœ recvBuffer๋ฅผ ์ฑ„์›Œ์„œ ๋ณด๋‚ด์ง€ ๋ชปํ•˜๋ฏ€๋กœ "EWOULDBLOCK" ๋ฐ˜ํ™˜ → recvBuffer์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ Buffer๋กœ๋ถ€ํ„ฐ ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ ๊ธธ์ด์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • recvBuffer๋Š” ์ปค๋„์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๋ณต์‚ฌ๋กœ ์ธํ•ด ์ž…์ถœ๋ ฅ๋ณด๋‹ค ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Computer Science/โœ OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๊ต์ฐฉ์ƒํƒœ(Deadlock)
  • ๋™์‹œ์„ฑ(Concurrency)๊ณผ ๋ณ‘๋ ฌ์„ฑ(Parallelism)
  • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”
  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & Blocking๊ณผ Non-Blocking
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”