SERVER/Node.js

πŸ“Œλ™μ‹œμ„±κ³Ό 병렬성

μ™„μžβœ¨ 2022. 6. 11. 17:27

πŸ“Œλ™μ‹œμ„±κ³Ό λ³‘λ ¬μ„±μ΄λž€?

λ™μ‹œμ„±κ³Ό λ³‘λ ¬μ„±μ˜ 차이가 μ—†λŠ” κ²ƒμ²˜λŸΌ 보일 μˆ˜λ„ μžˆμ§€λ§Œ, μ΄λŠ” 질문의 λ³Έμ§ˆμ„ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 그듀이 μ–΄λ–»κ²Œ λ‹€λ₯Έμ§€ μ΄ν•΄ν•˜λ €κ³  λ…Έλ ₯ν•©μ‹œλ‹€.

λ™μ‹œμ„±(Concurrency)

λ™μ‹œμ„±

λ™μ‹œμ„±μ€ 적어도 두 개의 μŠ€λ ˆλ“œκ°€ μ§„ν–‰ 쀑일 λ•Œ μ‘΄μž¬ν•˜λŠ” 쑰건이며, 가상 병렬 처리의 ν•œ ν˜•νƒœλ‘œ μ‹œκ°„ λΆ„ν• (time-slicing)을 ν¬ν•¨ν•œλ‹€. μš°λ¦¬κ°€ ν”νžˆ ‘λ™μ‹œ’라고 이야기 ν•˜μ§€λ§Œ 컴퓨터(μ½”μ–΄)λŠ” ν•œλ²ˆμ— ν•˜λ‚˜μ˜ λͺ…λ Ήμ–΄λ§Œ μ²˜λ¦¬ν•  수 μžˆλ‹€. 즉, λ‘κ°œ μ΄μƒμ˜ μ•Œκ³ λ¦¬μ¦˜μ΄ ν•˜λ‚˜μ˜ μ½”μ–΄λ‚΄μ—μ„œ μŠ€λ ˆλ“œκ°„μ— λΉ λ₯΄κ²Œ κ΅μ°¨λ˜λ©΄μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— ‘λ™μ‹œ’라고 λŠλΌλŠ” 것이닀.

 

μœ„μ˜ 그림은 μ‹±κΈ€ μ½”μ–΄λ‚΄μ—μ„œ λ‹€μ€‘μŠ€λ ˆλ“œλ“€μ΄ μ‹€ν–‰λ˜λŠ” λ™μ‹œμ„±μ„ λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€. 참고둜 Thread A와 Thread Bκ°€ ꡐ차되며 μ‹€ν–‰λ˜λŠ” 뢀뢄을 Context Switching(λ¬Έλ§₯κ΅ν™˜)이라고 ν•œλ‹€.

 

νšŒμ‚¬μ›μ„ 예둜 λ“€μ–΄λ³ΌκΉŒμš”? νšŒμ‚¬μ›μ€ μ „ν™”λ₯Ό λ°›κ±°λ‚˜ 업무λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€. μ „ν™”λ₯Ό λ°›μœΌλ©΄ 업무가 μ€‘λ‹¨λ˜κ³ , μ „ν™”κ°€ λλ‚˜μ•Ό 업무λ₯Ό μž¬κ°œν•˜μ£ . 퇴근 μ „κΉŒμ§€ μ΄λŸ¬ν•œ 과정이 λ°˜λ³΅λ©λ‹ˆλ‹€.

병렬성(Parallelism)

병렬성

병렬성은 μž‘μ—…μ΄ λ™μ‹œμ— λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 병렬성을 μ΄μ•ΌκΈ°ν•˜λ €λ©΄ 적어도 2개 μ΄μƒμ˜ μ½”μ–΄κ°€ μžˆμ–΄μ•Ό ν•œλ‹€. 병렬성도 λ™μ‹œμ„±μ„ μ˜λ―Έν•˜μ§€λ§Œ λ™μ‹œμ„±κ³Όμ˜ μ°¨μ΄λŠ” 각 μ½”μ–΄λ‚΄μ˜ μŠ€λ ˆλ“œκ°€ μ‹€μ œλ‘œ λ™μ‹œμ— λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆμŒμ„ λ§ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ λ‘κ°œμ˜ μ•Œκ³ λ¦¬μ¦˜μ΄ μ •ν™•νžˆ 같은 μ‹œμ μ— 싀행될 λ•Œ 이λ₯Ό 병렬적이라고 말할 수 μžˆλ‹€.

 

자, μ‚¬λ¬΄μ‹€λ‘œ λŒμ•„κ°€λ΄…μ‹œλ‹€. 이제 νšŒμ‚¬μ›μ΄ 두 λͺ…이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•œ λͺ…은 μ „ν™”λ₯Ό λ°›κ³  λ‹€λ₯Έ ν•œ λͺ…은 업무λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ νšŒμ‚¬μ›μ΄ 2λͺ… λ°°μΉ˜λ˜μ–΄ μ „ν™” 받기와 업무 진행을 병행할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ •λ¦¬ν•˜μžλ©΄ 병렬성은 λ™μ‹œμ„±μ˜ ν•˜μœ„ μœ ν˜•μž…λ‹ˆλ‹€. μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” 병렬 μž‘μ—…μ„ μ˜¬λ°”λ₯΄κ²Œ ꡬ성해야 ν•˜μ£ .


정리

λ™μ‹œμ„±μ΄λž€

  • μ‹±κΈ€ μ½”μ–΄μ—μ„œ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€κΈ° μœ„ν•œ λ°©μ‹μœΌλ‘œ, λ©€ν‹° νƒœμŠ€ν‚Ήμ„ μœ„ν•΄ μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μ‹€ν–‰λ˜λŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€.

λ³‘λ ¬μ„±μ΄λž€

  • λ©€ν‹° μ½”μ–΄μ—μ„œ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ, ν•œ 개 μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” 각 코어듀이 λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€.

μ°Έκ³ 

https://luminousmen.com/post/concurrency-and-parallelism-are-different
https://www.charlezz.com/?p=44646