λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

Async Programming vs Parallel Programming

728x90
λ°˜μ‘ν˜•

πŸ”΄ Context Switch

- 사전적 μ •μ˜ :  CPUκ°€ ν˜„μž¬ μž‘μ—… 쀑인 ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ λ„˜μ–΄κ°ˆ λ•Œ μ§€κΈˆκΉŒμ§€μ˜ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , μƒˆ ν”„λ‘œμ„ΈμŠ€μ˜ μ €μž₯된 μƒνƒœλ₯Ό λ‹€μ‹œ μ μž¬ν•˜λŠ” μž‘μ—…μ„ Context Switch(λ¬Έλ§₯ κ΅ν™˜)이라 ν•œλ‹€.

μ‹±κΈ€ thread 일 λ•Œ cpuκ°€ 3개의 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  μžˆλ‹€κ³  ν•˜λ©΄, μ•„μ£Ό μž κΉλ™μ•ˆ 1개λ₯Ό μ‹€ν–‰ν•˜κ³ , λ©ˆμΆ”κ³ , λ‹€λ₯Έ 1개λ₯Ό μ‹€ν–‰ν•˜κ³  λ©ˆμΆ”κ³ λ₯Ό ν•˜λ‹€λ³΄λ©΄ μ‚¬λžŒμ˜ λˆˆμ—λŠ” 3개의 ν”„λ‘œκ·Έλž¨μ΄ λ™μ‹œμ— λŒμ•„κ°€λŠ” κ²ƒμ²˜λŸΌ 보이게 λ§Œλ“€μ–΄ μ£ΌλŠ” κΈ°λŠ₯이닀.

🟣 async 와 parallel => concurrency

μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” λ°©λ²•μœΌλ‘œ, 이 두 가지 κ°œλ…μ€ μ„œλ‘œ λ‹€λ₯Έ λͺ©μ κ³Ό 기법을 μ‚¬μš©ν•˜μ§€λ§Œ λ™μ‹œμ„±μ„ μ‹€ν˜„ν•œλ‹€λŠ” 곡톡점이 μžˆλ‹€.

🟠 Async Programming

- 비동기 ν”„λ‘œκ·Έλž˜λ°

μž‘μ—…μ„ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•˜κ³ , ν•΄λ‹Ή μž‘μ—…μ΄ μ™„λ£Œλ˜λŠ” 것을 기닀리지 μ•Šκ³ , λ‹€μŒ μž‘μ—…μœΌλ‘œ 진행할 수 μžˆλŠ” 방식.

I/O μž‘μ—…, λ„€νŠΈμ›Œν¬ 톡신, μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ 같이 λŒ€κΈ° μ‹œκ°„μ΄ κΈΈκ±°λ‚˜ κ²°κ³Όλ₯Ό μ¦‰μ‹œ 얻을 수 μ—†λŠ” κ²½μš°μ— μ‚¬μš©ν•œλ‹€.
이 경우, μž‘μ—… μ™„λ£Œλ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ λ‹€λ₯Έ μž‘μ—…μ„ 계속 μ²˜λ¦¬κ°€ κ°€λŠ₯해지기에 전체 ν”„λ‘œκ·Έλž˜μ˜ μ„±λŠ₯이 ν–₯μƒλœλ‹€.
ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 흐름을 μ°¨λ‹¨ν•˜μ§€ μ•Šκ³  μž‘μ—…μ„ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μˆ˜ν–‰ν•œλ‹€.

js에선 promise, νŒŒμ΄μ¬μ—μ„  asyncio 라이브러리 κ°€ μžˆλ‹€.

🟑 Parallel Programming

- 병렬 ν”„λ‘œκ·Έλž˜λ°

μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€ λ˜λŠ” μŠ€λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방식이닀.
μž‘μ—…μ΄ λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰λ  수 있고, μ„œλ‘œ κ°„μ„­ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— μ ν•©ν•˜λ‹€.

A와 B λΌλŠ” μž‘μ—…μ΄ μžˆμ„ λ•Œ, μ–΄λ–€ μˆœμ„œλ‘œ execute λ˜λŠ” 지 λͺ¨λ₯΄κΈ°μ—, λ²„κ·Έμ—†λŠ” μ½”λ“œ μ§œκΈ°κ°€ νž˜λ“€κ³ , 디버그도 νž˜λ“€μ–΄μ§„λ‹€.

🟒 차이점

비동기 ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ˜ λ°˜μ‘μ„± ν–₯상을, 병렬 ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μ‹œκ°„ 단좕 및 λ¦¬μ†ŒμŠ€ μ΅œμ ν™”λ₯Ό λͺ©ν‘œλ‘œ ν•œλ‹€.

비동기 ν”„λ‘œκ·Έλž˜λ°μ€ μž‘μ—…μ˜ 독립적인 싀행을 관리, 병렬 ν”„λ‘œκ·Έλž˜λ°μ€ μž‘μ—…μ„ λ™μ‹œμ— μ‹€ν–‰.

/ 비동기 병렬
λͺ©μ  ν”„λ‘œκ·Έλž¨ λ°˜μ‘μ„± ν–₯상 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œκ°„ 단좕 / λ¦¬μ†ŒμŠ€ μ΅œμ ν™”
λ™μ‹œμ„± μž‘μ—…μ˜ 독립적인 μ‹€ν–‰ μž‘μ—…μ„ λ™μ‹œμ— μ‹€ν–‰
μžμ› ν™œμš© 단일 ν”„λ‘œμ„Έμ„œ 및 μ½”μ–΄μ—μ„œ μ΅œμ ν™” μ—¬λŸ¬ ν”„λ‘œμ„Έμ„œ 및 코어에 λΆ„μ‚° 및 μ‹€ν–‰

🟀 결둠

병렬 ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨ μ„±λŠ₯적인 츑면에선 쒋을 수 μžˆμœΌλ‚˜, κ°œλ°œμžμ—κ² νž˜λ“€μ–΄μ§„λ‹€. ν”Όν•  수 있으면 ν”Όν•˜λŠ” 게 μ’‹μ§€λ§Œ

병렬 ν”„λ‘œκ·Έλž˜λ°μ΄ κΌ­ ν•„μš”ν•œ μˆœκ°„λ„ μžˆλ‹€.

728x90
λ°˜μ‘ν˜•


Calendar
Β«   2024/09   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
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
Archives
Visits
Today
Yesterday