🐼 λ°±μ•€λ“œ/Server

λ©€ν‹°ν”„λ‘œμ„ΈμŠ€μ™€ λ©€ν‹° μŠ€λ ˆλ“œ

κ³„λž€μ†Œλ…„ 2023. 9. 23. 17:40

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œλŠ” μ•„λž˜λ₯Ό μ°Έκ³ ν•˜μž

https://koreatstm.tistory.com/92

 

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ

ν”„λ‘œμ„ΈμŠ€: μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μžμ›μ„ 할당받은 μž‘μ—…μ˜ λ‹¨μœ„ μŠ€λ ˆλ“œ: ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰ νλ¦„μ˜ λ‹¨μœ„ μžμ„Ένžˆ μ•Œμ•„λ³΄μž 1. ν”„λ‘œμ„ΈμŠ€ μ˜›λ‚ μ—λŠ” κ²Œμž„κ³Ό 인터넷 μ„œμΉ­μ„ ν•¨κ»˜ ν• 

koreatstm.tistory.com

 

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ™€ λ©€ν‹° μŠ€λ ˆλ“œλŠ” ν•œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ μ²˜λ¦¬λ°©μ‹μ΄λ‹€. λ‹¨μˆœνžˆ ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬κ°œ λ„μš°λŠ”κ²ƒμ΄ μ•„λ‹Œ μ–Έμ œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜λŠλƒμ— 따라 λ‹€λ₯Έκ²ƒμœΌλ‘œ μ΄ν•΄ν•΄μ•Όν•œλ‹€.

μ΄λ¦„μ²˜λŸΌ μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€, μŠ€λ ˆλ“œκ°€ λ™μž‘ν•˜λŠ” 것을 μΌμ»«λŠ”λ‹€. λ‹€μ€‘μœΌλ‘œ λŒμ•„κ°μœΌλ‘œμ¨ μ„±λŠ₯ ν–₯μƒμ˜ 효과λ₯Ό 얻을 수 μžˆλ‹€.

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ vs λ©€ν‹° ν”„λ‘œμ„Έμ„œ

ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μƒνƒœλ₯Ό λ§ν•˜κ³ , ν”„λ‘œμ„Έμ„œλŠ” CPU μ½”μ–΄λ₯Ό μΌμ»«λŠ”λ‹€. μ™„μ „ λ‹€λ₯Έ μ˜λ―Έμ΄λ‹€.

λ©€ν‹° ν”„λ‘œμ„Έμ„œλŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ—μ„œ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” 것을 μ˜λ―Έν•˜κ³ , λ©€ν‹° ν”„λ‘œμ„Έμ„œλŠ” μ—¬λŸ¬ 개의 CPU μ½”μ–΄κ°€ ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμ—μ„œ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€

λ‘κ°œ μ΄μƒμ˜ λ‹€μˆ˜ ν”„λ‘œμ„Έμ„œκ°€ ν˜‘λ ₯적으둜 ν•˜λ‚˜ μ΄μƒμ˜ νƒœμŠ€ν¬λ₯Ό λ™μ‹œμ— λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ” 것

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ 내뢀ꡬ쑰λ₯Ό 보면, ν•˜λ‚˜μ˜ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μ—¬λŸ¬ 개의 μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•¨μœΌλ‘œ 닀쀑 ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” ꡬ쑰이닀.

ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰λ˜λŠ” 도쀑에 ν”„λ‘œμ„ΈμŠ€ 생성 μ‹œμŠ€ν…œ μ½œμ„ 톡해 μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ“€μ„ 생성할 수 μž‡λŠ”λ°, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€(Parent Process)라 ν•˜κ³ , λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ μƒμ„±λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό μžμ‹ ν”„λ‘œμ„ΈμŠ€(Child Process)라고 ν•œλ‹€.

μ΄λ•Œ, λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ™€ μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” 각각 κ³ μœ ν•œ Process IDλ₯Ό κ°€μ§€κ³  μžˆλ‹€. λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€λŠ” μžμ‹ ν”„λ‘œμ„ΈμŠ€μ˜ PIDλ₯Ό μ•Œκ³  있으며, 이λ₯Ό 톡해 μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ œμ–΄ν•  수 μžˆλ‹€. λ˜ν•œ, μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ PIDλ₯Ό μ•Œκ³  μžˆμ–΄ 이λ₯Ό 톡해 λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ™€ 톡신이 κ°€λŠ₯ν•˜λ‹€.

톡신이 κ°€λŠ₯할뿐 μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯΄ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λ©°, 독립적인 λ©”λͺ¨λ¦¬ 곡간을 κ°€μ§€κ³  μžˆμ–΄ μ„œλ‘œ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

 

μž₯점 단점
1. 독립성
독립 ꡬ쑰둜 μ•ˆμ „μ„±μ΄ λ†’μœΌλ©°, ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜μ— λ¬Έμ œκ°€ 생겨도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 λΌμΉ˜μ§€ μ•ŠλŠ”λ‹€.
1. Context Switching Overhead

λ©€ν‹° νƒœμŠ€ν‚Ήμ„ κ΅¬μ„±ν•˜λŠ”λ° 핡심 기술인 context switching κ³Όμ •μ—μ„œ μ„±λŠ₯μ €ν•˜κ°€ 올 수 μžˆλ‹€.
이둜 μΈν•œ λΉˆλ²ˆν•œ Context Switching μž‘μ—…μœΌλ‘œ 인해 λΉ„μš© μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 있게 λœλ‹€.반면 μŠ€λ ˆλ“œλ₯Ό μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€ μŠ€μœ„μΉ­ 보닀 κ°€λ²Όμ›Œ 훨씬 λΉ λ₯΄κ³  μ’‹λ‹€.
2. ν™•μž₯μ„±
λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λŠ” 각 ν”„λ‘œμ„ΈμŠ€κ°€ λ…λ¦½μ μ΄λ―€λ‘œ, μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ λͺ¨λ“ˆμ„ μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν• λ•Œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 μ£Όμ§€ μ•ŠλŠ”λ‹€. κ·Έλž˜μ„œ μ‹œμŠ€ν…œμ˜ 규λͺ¨λ₯Ό μ‰½κ²Œ ν™•μž₯ν•  수 μžˆλ‹€.
2. μžμ› 곡유 λΉ„νš¨μœ¨μ„±

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λŠ” 각 ν”„λ‘œμ„ΈμŠ€κ°€ 독립적인 λ©”λͺ¨λ¦¬ 곡간을 κ°€μ§€λ―€λ‘œ, 결과적으둜 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ μ¦κ°€ν•œλ‹€.
만일 각 ν”„λ‘œμ„ΈμŠ€κ°„μ— μžμ› κ³΅μœ κ°€ ν•„μš”ν•  경우 ν”„λ‘œμ„ΈμŠ€ μ‚¬μ΄μ˜ μ–΄λ ΅κ³  λ³΅μž‘ν•œ 톡신 기법인 IPCλ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€.
IPC자체둜 μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜κ²Œ λœλ‹€.

 

λ©€ν‹°μŠ€λ ˆλ“œ

λ©€ν‹° μŠ€λ ˆλ“œλŠ” ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ μ•ˆμ— μ—¬λŸ¬κ°œμ˜ μŠ€λ ˆλ“œκ°€ μžˆλŠ” 것을 λ§ν•œλ‹€. λ”°λΌμ„œ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ—μ„œ 두가지 μ΄μƒμ˜ λ™μž‘μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” ν–‰μœ„κ°€ κ°€λŠ₯ν•΄μ§„λ‹€.

μ›Ή μ„œλ²„λŠ” λŒ€ν‘œμ μΈ λ©€ν‹° μŠ€λ ˆλ“œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄λ‹€. μ‚¬μš©μžκ°€ μ„œλ²„ λ°μ΄ν„°λ² μ΄μŠ€μ— 자료λ₯Ό μš”μ²­ν•˜λŠ” λ™μ•ˆ λΈŒλΌμš°μ €μ˜ λ‹€λ₯Έ κΈ°λŠ₯을 μ΄μš©ν•  수 μžˆλŠ” μ΄μœ λ„ λ°”λ‘œ λ©€ν‹° μŠ€λ ˆλ“œ κΈ°λŠ₯ 덕뢄인 것이닀. 즉, ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œκ°€ μ§€μ—°λ˜λ”λΌλ„, λ‹€λ₯Έ μŠ€λ ˆλ“œλŠ” μž‘μ—…μ„ 지속할 수 있게 λœλ‹€.

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œλ‘œ μžμ›μ„ κ³΅μœ ν•˜λ©°, ν…ŒμŠ€ν¬λ₯Ό λ‚˜λˆ„μ–΄ λ™μ‹œμ— 병렬적(parallel)으둜 μˆ˜ν–‰ν•œλ‹€.

μž₯점 단점
1. 응닡성
μž‘μ—…μ„ λΆ„λ¦¬ν•΄μ„œ μ‹€ν–‰ν•˜λ―€λ‘œ μ‹€μ‹œκ°„μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ 응닡
1. μ•ˆμ •μ„±λ¬Έμ œ
ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ μ•ˆμ—μ„œ μž‘λ™ν•˜λ―€λ‘œ, ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œμ—μ„œ 문제 생기면 전체 ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을 μ€€λ‹€.
2 νš¨μœ¨μ„±
μ†ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄ μŠ€λ ˆλ“œμ™€ λ©”λͺ¨λ¦¬, μžμ›μ„ κ³΅μœ ν•˜μ—¬ 효율적으둜 μ‚¬μš©
2. λ™κΈ°ν™”λ‘œ μΈν•œ μ„±λŠ₯ μ €ν•˜
μŠ€λ ˆλ“œκ°„ λ™κΈ°ν™”λŠ” 데이터 접근을 μ œμ–΄ν•˜κΈ°μœ„ν•œ ν•„μˆ˜μ μΈ κΈ°μˆ μ΄λ‹€.
동기화 μž‘μ—…μ€ μ—¬λŸ¬ μŠ€λ ˆλ“œλ“€μ΄ μžμ›μ— λŒ€ν•œ 접근을 순차적으둜 ν†΅μ œν•˜λŠ” 것이고, 그러면 λ™μ‹œ μ ‘κ·ΌμœΌλ‘œ μΈν•œ λ™μ‹œ μˆ˜μ •κ³Ό 같은 ν˜„μƒμ€ μΌμ–΄λ‚˜μ§€ μ•Šκ²Œ λ˜μ§€λ§Œ,
μ—¬λŸ¬ μŠ€λ ˆλ“œ 접근을 μ œν•œν•˜λŠ” 것이기에 병λͺ© ν˜„μƒμ΄ μΌμ–΄λ‚˜ μ„±λŠ₯이 μ €ν•˜λ  수 μžˆλ‹€.
3. κ²½μ œμ„±
μŠ€λ ˆλ“œμ—λ„ context switching overheadκ°€ μ‘΄μž¬ν•˜μ§€λ§Œ, μƒλŒ€μ μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€ 생성 λΉ„μš©λ³΄λ‹€ μŠ€λ ˆλ“œ μƒμ„±λΉ„μš©μ΄ 적고,
context switching이 ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ λΉ λ₯΄λ‹€.
3. Context Switching Overhead
λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ Context Switching Overheadκ°€ μž‘μ§€λ§Œ κ·Έλž˜λ„ μ˜€λ²„ν—€λ“œ λΉ„μš©μ΄ λ°œμƒν•œλ‹€.
4. 가벼움
ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ 가볍고 생성 및 μ’…λ£Œκ°€ λΉ λ₯΄λ‹€.
4. λ°λ“œλ½(ꡐ착 μƒνƒœ)
λ‹€μˆ˜μ˜ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ μ„œλ‘œ μžμ›μ„ μ μœ ν•˜κ³ , μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ μ„œλ‘œ λŒ€κΈ°ν•˜λ©΄μ„œ λ¬΄ν•œμ • κΈ°λ‹€λ¦¬κ²Œλ˜λŠ” 증상

 

REFERENCE

https://inpa.tistory.com/entry/πŸ‘©%E2%80%8DπŸ’»-multi-process-multi-thread#thankYou

https://brunch.co.kr/@huewu/4

https://beststar-1.tistory.com/24