λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Computer Science/운영체제

λ™μ‹œμ„± (Concurrency)κ³Ό 병렬성 (Parallelism)

by Jay Din 2023. 5. 22.
728x90
λ°˜μ‘ν˜•
λ°˜μ‘ν˜•

 

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

  • ν•˜λ‚˜μ˜ μ½”μ–΄μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ λ²ˆκ°ˆμ•„κ°€λ©° μ‹€ν–‰
  • λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μž„
  • μ‹±κΈ€ μ½”μ–΄, λ©€ν‹° μ½”μ–΄μ—μ„œ λͺ¨λ‘ κ΅¬ν˜„ κ°€λŠ₯
  • 논리적인 κ°œλ…

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°μ€ λ™μ‹œμ— μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.
눈으둜 λ³΄κΈ°μ—λŠ” λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ,
μ‹œλΆ„ν• (Interleaving) 기법을 ν™œμš©ν•˜μ—¬ CPUκ°€ μž‘μ—…λ§ˆλ‹€ μ‹œκ°„μ„ λΆ„ν• ν•΄μ„œ μ μ ˆν•˜κ²Œ λ¬Έλ§₯ κ΅ν™˜(context switching) ν•œλ‹€.
λ•Œλ¬Έμ—, λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것이닀.
λ™μ‹œμ„±μ€ κ΅¬ν˜„ν•˜λŠ” 것도 λ””λ²„κ·Έν•˜λŠ” 것도 μ–΄λ ΅λ‹€.

λ™μ‹œμ„±μ˜ 핡심 λͺ©ν‘œλŠ” 유휴 μ‹œκ°„(idle time)을 μ΅œμ†Œν™”ν•˜λŠ” 것이닀.
* 유휴 μ‹œκ°„μ΄λž€(idle time)?
컴퓨터가 μž‘λ™ κ°€λŠ₯ν•œλ°λ„ μž‘μ—…μ„ ν•˜μ§€ μ•ŠλŠ” μ‹œκ°„μ„ μ˜λ―Έν•œλ‹€.

Task 1 κ³Ό Task 2 λ₯Ό μͺΌκ°œμ–΄ λ²ˆκ°ˆμ•„κ°€λ©° μˆ˜ν–‰ν•˜μ—¬ μ‚¬μš©μž μž…μž₯에선 두 μž‘μ—…μ΄ λ™μ‹œμ— μΌμ–΄λ‚˜λŠ” κ²ƒμ²˜λŸΌ λŠκ»΄μ§€κ²Œ λœλ‹€.
κ²°κ³Όμ μœΌλ‘œλŠ” 두 μž‘μ—…μ΄ λ™μ‹œμ— μˆ˜ν–‰λ˜λŠ” 것이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—,
10λΆ„ + 10λΆ„, 총 20뢄이 μ†Œμš”λœλ‹€. (Context Switching κ³ λ €ν•˜μ§€ μ•Šμ€ λ‹¨νŽΈμ μΈ μ˜ˆμ œμ΄λ‹€.)

병렬성 (Parallelism)

  • λ©€ν‹° μ½”μ–΄μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό λ™μ‹œμ— μ‹€ν–‰
  • μ‹€μ œλ‘œ λ™μ‹œμ— μ—¬λŸ¬ μž‘μ—…μ΄ 처리 됨
  • λ©€ν‹° μ½”μ–΄μ—μ„œλ§Œ κ΅¬ν˜„ κ°€λŠ₯
  • 물리적인 κ°œλ…

병렬성은 λ™μΌν•œ μ‹œκ°„μ— 독립적인 μž‘μ—…μ„ μ‹€ν–‰ν•  수 μžˆμŒμ„ μ˜λ―Έν•œλ‹€.
λ™μ‹œμ„±κ³ΌλŠ” 달리 μ—¬λŸ¬ μž‘μ—…μ„ λ‹€λ₯Έ μ½”μ–΄, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€, λ³„λ„μ˜ 컴퓨터 λ“±μ—μ„œ λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆλ‹€.

κ·Έλž˜μ„œ 병렬 μ²˜λ¦¬κ°€ μ„±λŠ₯ ν–₯상에 ν•„μˆ˜μ μ΄λΌκ³ λ„ ν•œλ‹€.

병렬성은 μžμ›(CPU μ½”μ–΄)의 μž…μž₯μ—μ„œ μžκΈ°λŠ” 자기 ν•  일 1개만 ν•˜λŠ” 것이닀.
λ”°λΌμ„œ, μžμ›(CPU μ½”μ–΄)이 μ—¬λŸ¬ 개일 λ•Œ κ°€λŠ₯ν•˜λ‹€.

Task 1 κ³Ό Task 2 κ°€ λ³‘λ ¬μ μœΌλ‘œ λ™μ‹œμ— μˆ˜ν–‰λœλ‹€. μ΄λŠ” 'λ©€ν‹°μ½”μ–΄' μ‹œμŠ€ν…œμ—μ„œ κ°€λŠ₯ν•œ 이야기이닀.

μ½”μ–΄ 각각이 Task 1, Task 2 λ₯Ό 맑아 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ©΄, μ™„μ „νžˆ λ™μ‹œμ— μˆ˜ν–‰λ˜λŠ” 것이닀.
λ”°λΌμ„œ, 각각 Task κ°€ 10뢄씩이라면, μ΅œμ’…μ μœΌλ‘œ 10뢄이 μ†Œμš”λ˜λŠ” 것이닀. 이 경우 Context Switching 이 μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.

 

λ™μ‹œμ„±κ³Ό 병렬성을 κ³΅λΆ€ν•œ 이유

μ•ˆλ“œλ‘œμ΄λ“œλ₯Ό κ³΅λΆ€ν•˜λ‹€ 보면 Tread와 Coroutine을 λ§Œλ‚˜κ²Œ λœλ‹€.
Tread와 Coroutine은 'λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°' μ„ μœ„ν•œ κΈ°μˆ μ΄λ‹€.
'λ™μ‹œμ„±'을 보μž₯ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ 두 κΈ°μˆ μ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ™μ‹œμ„±κ³Ό λ³‘λ ¬μ„±μ˜ μ΄ν•΄λŠ” ν•„μˆ˜μ΄λ‹€.

λ˜ν•œ, 운영체제의 Mutil Processλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ™μ‹œμ„±κ³Ό 병렬성을 μ•Œμ•„μ•Όν•œλ‹€.

 

λ°˜μ‘ν˜•

μ°Έκ³ 

https://velog.io/@haero_kim/Thread-vs-Coroutine-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EA%B8%B0#%EB%8F%99%EC%8B%9C%EC%84%B1-vs-%EB%B3%91%EB%A0%AC%EC%84%B1

https://yeonyeon.tistory.com/270

 

728x90
λ°˜μ‘ν˜•