Carnival7
Change Developer
Carnival7
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ์ž๋ฐ”์˜ ์ •์„
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณ„ tools
      • ํŒŒ์ด์ฌ
      • ์ž๋ฐ”
    • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ
      • ๋ฐฑ์ค€ ๊ฐ•์˜ ๊ธฐ์ดˆํŽธ
      • ๋ฐฑ์ค€ ๊ฐ•์˜ ์—ฐ์ŠตํŽธ
      • ๋ฐฑ์ค€ ๊ฐ•์˜ ๋ฌธ์ œํŽธ
      • ์‚ผ์„ฑ ๊ธฐ์ถœ
      • ๋ฐฑ์ค€ - ์ผ๋ฐ˜
      • ์นด์นด์˜ค ๊ธฐ์ถœ
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ผ๋ฐ˜
      • ์ฝ”ํ…Œ ํ’€์ด Tools
    • CS
      • Network
      • ์šด์˜์ฒด์ œ
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • DB
    • Web_Backend
      • Spring
      • ์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ 
      • ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ
    • DevOps
    • IT ์—…๋ฌด ์ง€์‹
      • ์ธํ”„๋ผ
      • ํด๋ผ์šฐ๋“œ
    • ์ž๊ฒฉ์ฆ
      • AWS - CLF
      • ์ •์ฒ˜๊ธฐ - ์‹ค๊ธฐ
    • ์ƒ๊ฐ ์ •๋ฆฌ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • DMZ
  • code deploy
  • ์Šคํ”„๋ง #์ธํ„ฐ์…‰ํ„ฐ #AOP #ํ•„ํ„ฐ
  • nginx
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ #์‚ผ์„ฑ๊ธฐ์ถœ #๊ตฌํ˜„ #์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ
  • DevOps
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ #๋ฐฑ์ค€๊ฐ•์˜๊ธฐ์ดˆํŽธ #์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ci/cd
  • ์‚ผ์„ฑ๊ธฐ์ถœ #2023 #์ƒ๋ฐ˜๊ธฐ
  • ์Šคํ”„๋ง #AOP
  • ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฌด์ค‘๋‹จ ์›น ์„œ๋น„์Šค
  • ์‚ผ์„ฑ๊ธฐ์ถœ #๋ฐฑ์ค€๊ฐ•์˜๋ฌธ์ œํŽธ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค #์นด์นด์˜ค๊ธฐ์ถœ #๋ ˆ๋ฒจ2
  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ #๋ฑ
  • Github Actions

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Carnival7

Change Developer

CS/์šด์˜์ฒด์ œ

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

2021. 12. 25. 16:40

๐Ÿ“๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

1. Sync VS Async

๋จผ์ € Synchronous์™€ Asynchronous์˜ ์–ด์›์„ ๋ณด์ž. Synchronous์˜ Syn๋Š” together์ด๋ž€ ๋œป์ด๊ณ , chrono๋Š” time์ด๋‹ค. ๋”ฐ๋ผ์„œ Synchronous๋Š” ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋งž์ถ˜๋‹ค๋ผ๋Š” ๋œป์œผ๋กœ ํ•ด์„๋œ๋‹ค. ๋ฐ˜๋ฉด์— Asynchronous๋Š” ์•ž์— A๋ผ๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™์–ด ๋ถ€์ •ํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ๋˜์–ด ์‹œ๊ฐ„์„ ๋งž์ถ”์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Sync์™€ Async๋ฅผ ๋‹ค๋ฃจ๋ ค๋ฉด ์œ„ ์–ด์›์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํ•จ๊ป˜ ํ•˜๋Š” ๋Œ€์ƒ์ด ๋ˆ„๊ตฌ์ธ์ง€, ๊ทธ ๋Œ€์ƒ๋“ค์˜ ์‹œ๊ฐ„์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ์–ด์ง€๋Š”์ง€ ๋‘ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ด์•ผํ•œ๋‹ค.

1.1. Synchronous (๋™๊ธฐ) : ์ž‘์—…์˜ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋œ๋‹ค.

๋™๊ธฐ๋Š” ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ๋Œ€์ƒ(ํ•จ์ˆ˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ)์ด ์„œ๋กœ ์‹œ๊ฐ„์„ ๋งž์ถฐ ํ–‰๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ž‘์—…์ด ๋๋‚˜์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜, ์ง€์†์ ์œผ๋กœ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์—๊ฒŒ ํ™•์ธ ์š”์ฒญ์„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์–ด๋–ค ๋Œ€์ƒ A์™€ B๊ฐ€ ์žˆ์„ ๋•Œ ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.28.54.png

A์™€ B๊ฐ€ ์‹œ์ž‘ ์‹œ๊ฐ„ ๋˜๋Š” ์ข…๋ฃŒ ์‹œ๊ฐ„์ด ์ผ์น˜ํ•˜๋ฉด ๋™๊ธฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

  • A, B ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ (์˜ˆ๋ฅผ ๋“ค๋ฉด ์ž๋ฐ”์—์„œ CyclicBarrier)

  • ๋ฉ”์„œ๋“œ ๋ฆฌํ„ด ์‹œ๊ฐ„(A)๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ์‹œ๊ฐ„(B)์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.29.22.png

A๊ฐ€ ๋๋‚˜๋Š” ์‹œ๊ฐ„๊ณผ B๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ฐ™์œผ๋ฉด ๋™๊ธฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž๋ฐ”์—์„œ synchronized์™€ BlockingQueue๊ฐ€ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์ด๋‹ค.

1.2. Asynchronous (๋น„๋™๊ธฐ) : ์ž‘์—…์˜ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋น„๋™๊ธฐ๋Š” ๋™๊ธฐ์™€ ๋ฐ˜๋Œ€๋กœ ๋Œ€์ƒ์ด ์„œ๋กœ ์‹œ๊ฐ„์„ ๋งž์ถ”์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์—๊ฒŒ ์ž‘์—…์„ ๋งก๊ฒจ๋†“๊ณ  ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค

2. Blocking VS Non-Blocking

๋ธ”๋กํ‚น/๋…ผ๋ธ”๋กํ‚น์„ ๋™๊ธฐ/๋น„๋™๊ธฐ์™€ ๊ฐ™์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ์ด๋Š” ์„œ๋กœ ๊ด€์ ์ด ๋‹ค๋ฅด๋‹ค. ๋ธ”๋กํ‚น/๋…ผ๋ธ”๋กํ‚น์€ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‚˜๋ˆˆ๋‹ค. ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ์€ ๋Œ€ํ‘œ์ ์œผ๋กœ IO, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๋™๊ธฐํ™”๊ฐ€ ์žˆ๋‹ค.

2.1. Blocking : ์ž‘์—…์˜ ๋ฉˆ์ถค, ๋Œ€๊ธฐ(wait)

Blocking์€ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ IO๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ IO์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์ฆ‰์„์—์„œ ์™„๋ฃŒ ํ†ต์ง€๋ฅผ ๋ฐ›๋Š”๋‹ค. ์ด ๋•Œ ์ž‘์—…์ด ๋ฉˆ์ถ”๋Š” ๋™์•ˆ ๋‹ค๋ฅธ์ž‘์—…์ด ๋ผ์–ด๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ด๋ณด์ž. ๋งŽ์€ Blocking ๋ฐฉ์‹์˜ ์‚ฌ๋ก€์—์„œ ๋‹ค๋ฅธ ์ž‘์—…์˜ interrupt๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Blocking์„ ๋™๊ธฐํ™”(์ˆœ์ฐจ์ฒ˜๋ฆฌ)๋ชจ๋ธ๋กœ ์ƒ๊ฐํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด๋‹ค. ๋‹จ์ˆœํžˆ ์ƒ๊ฐํ•ด์„œ Blocking์€ ๊ทธ์ € ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค๋Š” ์˜๋ฏธ์ผ ๋ฟ์ด๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-14 แ„‹แ…ฉแ„’แ…ฎ 4.54.14.png

  • Blocking I/O Model

User Process(application)๋Š” ์ปค๋„(OS)์—๊ฒŒ I/O ์ž‘์—…์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•ด์•ผ ํ•œ๋‹ค.

  1. I/O ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด User Level์— ์žˆ๋˜ application์ด ์‹œ์Šคํ…œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.(system call) ์ด ๋•Œ context-switching์ด ๋ฐœ์ƒํ•œ๋‹ค.

  2. Kerner Level์— ํ•ด๋‹น I/O์ž‘์—…์ด ๊ธ‘๋‚˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ๋•Œ๊ฐ€ ๋˜์„œ์•ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์˜ ์Šค๋ ˆ๋“œ์— ๊ฑธ๋ ธ๋˜ block์ด ํ’€๋ฆฐ๋‹ค.

โ†’blocking I/O ๋ฌธ์ œ์ ?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์•„๋ฌด๋Ÿฐ ๋™์ž‘๋„ ์•ˆํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ปค๋„์—์„œ I/O์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋А๋ผ block๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ ์ด๋‹ค.

  • Synchronous(๋™๊ธฐ) VS Blocking

Synchronous

์ž‘์—…์„ ์š”์ฒญํ•œ ํ›„ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ I/O ์ž‘์—…์— ๋Œ€ํ•œ readiness๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ํŠน์ • I/O ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋˜์—‡๋Š”์ง€์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

โ†’ ์‹œ์Šคํ…œ ๋ฐ˜ํ™˜์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋Œ€๊ธฐ ํ์— ๋จธ๋ฌด๋Š” ๊ฒƒ์ด ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด synchronous

Blcoking

I/O๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค. ๋๋‚˜๊ธฐ ์ „์—๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ปค๋„์ด ์ž‘์์„ ์™„๋ฃŒํ•˜๊ธฐ ์ „๊นŒ์ง€ ์œ ์ € ํ”„๋กœใ…”์“ฐ๋Š” ์ž‘์—…์„ ์ค‘๋‹จํ•œ ์ฑ„ ๋Œ€๊ธฐํ•ด์•ผํ•œ๋‹ค.

โ†’์‹œ์Šคํ…œ ๋ฐ˜ํ™˜์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋Œ€๊ธฐ ํ์— ๋จธ๋ฌด๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ด๋ฉด blocking

2.2. Non-Blocking

Non-Blocking์€ Blocking๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์ด ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ IO๋ฅผ ์š”์ฒญํ•œ ํ›„ IO์ฒ˜๋ฆฌ ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฐ”๋กœ ์ž์‹ ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Non-Blocking ์ด๋ž€ ์ž‘์—…์˜ ์™„๋ฃŒ๋ฅผ ๋‚˜์ค‘์— ํ†ต์ง€๋ฐ›๋Š” ๊ฐœ๋…์ด๋‹ค. ์ž‘์—…์˜ ์‹œ์ž‘ ์ดํ›„ ์™„๋ฃŒ์‹œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์™„๋ฃŒ์‹œํ‚จ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-14 แ„‹แ…ฉแ„’แ…ฎ 5.50.53.png

  1. Non-blocking I/O Model

์•ž์„œ ์„ค๋ช…ํ•œ Blocking I/O ๋ฐฉ์‹์€ ์š”์ฒญํ•œ I/O์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋„์ด ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์ „๊นŒ์ง€ ์œ ์ € ํ”„๋กœ์„ธ์Šค๋Š” ์ž‘์—…์„ ์ค‘๋‹จํ•œ ์ฑ„ ๋Œ€๊ธฐ ํ•ด์•ผํ•œ๋‹ค. I/O์ž‘์—…์€ CPU์ž์›์„ ๊ฑฐ์˜ ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— blocking๋ฐฉ๋ฒ•์€ CPU์ž์› ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค.

โ†’non-blocking๋ฐฉ์‹์€ I/O์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ ์œ ์ € ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„ˆ๋  ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด(System Call) ์ปค๋„์—์„œ ํ•จ์ˆ˜์˜ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ์ƒ๊ด€์—†์ด ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฐ๊ณผ๋Š” ๋ฐ˜ํ™˜ ์ˆœ๊ฐ„์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค)

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์‚ฌ์ด์ฆˆ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ถ•์ ์ด ๋๋‚ฌ์„ ๋•Œ ๋ฐ˜ํ™˜๋˜์–ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•œ ์‚ฌ์ด์ฆˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ตฌํ˜„ ๋ฐฉ์‹์˜ ๋ฌธ์ œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋”ฐ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด ์›ํ•˜๋Š” ์‚ฌ์ด์ฆˆ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ๊ณ„์† ํ™•์ธํ•ด์ค˜์•ผํ•œ๋‹ค.(polling) ์ด ๊ณผ์ •์—์„œ ์ˆ˜๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ์ผ์–ด๋‚  ๊ฒฝ์šฐ, cPU์— ์ ์ง€ ์•Š์€ ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ๋Š” I/O Model์ด๋‹ค.

blocking

application ์‹คํ–‰ ์‹œ ์šด์˜์ฒด์ œ ๋Œ€๊ธฐ ํ์— ๋“ค์–ด๊ฐ€๋ฉด์„œ ์š”์ฒญ์— ๋Œ€ํ•œ system call์ด ์™„๋ฃŒ ๋œ ํ›„์— ์‘๋‹ต์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ blocking

non-blocking

application์ด ์‹คํ–‰ ์‹œ ์šด์˜์ฒด์ œ ๋Œ€๊ธฐ ํ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ์‹คํ–‰ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋ฐ”๋กœ ์‘๋‹ต์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ non-blocking

๋™๊ธฐํ™”

๊ณต์œ  ์ž์›์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์ง€๋ชปํ•˜๊ฒŒ ์‹คํ–‰์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•

๋™๊ธฐํ™”๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์„ ๊ณต์œ ํ•˜๋ ค๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์—์„œ ๋‚˜ํƒ€๋‚œ๋‹ค.

๋™๊ธฐ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ์ง€๋งŒ ๋‹ค์Œ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

๋น„๋™๊ธฐํ™”

๋ณ‘๋ ฌ์ ์œผ๋กœ ํ…Œ์Šคํฌ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹

eg)์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์›น์„ ๋งŒ๋“ ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๊นŒ์ง€ ์›น์ด ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผํ•œ๋‹ค.(AJAX,setTimeout)

ํ”„๋กœ์„ธ์Šค

์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ โ†’ ๋””์Šคํฌ์— ์žˆ๋˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜์—ฌ ์šด์˜์ฒด์ œ์˜ ์ œ์–ด๋ฅผ ๋ฐ›๋Š” ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค.(์ž์‹ ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์ด ์žˆ์Œ)

eg)์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ํ•œ๊ฐœ ์—ด์—ˆ๋‹ค. == ํ”„๋กœ์„ธ์Šค ํ•œ๊ฐœ ์ƒ์„ฑ

์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ 2๊ฐœ ์—ด์—ˆ๋‹ค. == ํ”„๋กœ์„ธ์Šค 2๊ฐœ ์ƒ์„ฑ

๋™๊ธฐ์™€/๋น„๋™๊ธฐ

2+

๋™๊ธฐSyn(together)chrono(time)us : ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋งž์ถ˜๋‹ค.

๋น„๋™๊ธฐ Asynchronous : ์‹œ๊ฐ„์„ ๋งž์ถ”์ง€ ์•Š๋Š”๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.41.28.png

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.41.37.png

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.44.16.png

โ€”>์ผ๋ฐ˜์ ์œผ๋กœ C๋ถ€ํ„ฐ ์‹คํ–‰

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.49.35.png

๋น„๋™๊ธฐ๋Š” return๊ฐ’ ๋ฐ›์€์‹œ๊ฐ„๊ณผ ํ˜ธ์ถœํ•˜๋Š”์‹œ๊ฐ„์ด ๊ฐ™์•„์ ธ์„œ ๋น„๋™๊ธฐ๋ผ ํ•  ์ˆ˜ ์—†๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-11-07 แ„‹แ…ฉแ„’แ…ฎ 7.51.21.png

์ถœ์ฒ˜ : https://jins-dev.tistory.com/entry/๋™๊ธฐSynchronous-์ž‘์—…๊ณผ-๋น„๋™๊ธฐAsynchronous-์ž‘์—…-๊ทธ๋ฆฌ๊ณ -๋ธ”๋ฝBlocking-๊ณผ-๋„Œ๋ธ”๋ฝNonBlocking-์˜-๊ฐœ๋…

https://velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx

'CS > ์šด์˜์ฒด์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ  (0) 2024.07.12
3. ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น๊ณผ PCB์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ  (0) 2024.07.12
2. ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ  (0) 2024.07.12
1. ์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ  (0) 2024.07.12
์บ์‹œ  (0) 2021.11.21
    'CS/์šด์˜์ฒด์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • 3. ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น๊ณผ PCB์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ
    • 2. ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ
    • 1. ์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ
    • ์บ์‹œ
    Carnival7
    Carnival7

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