1. Process

2. Thread

3. Process vs Thread

4. Process의 단점

1. Process

1-1) Process

컴퓨터가 μ–΄λ–€ 일을 ν•˜λŠ” 과정을 ν”„λ‘œμ„ΈμŠ€λΌκ³  뢀름.

μš΄μ˜μ²΄μ œκ°€ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό 돌리기 λ•Œλ¬Έμ—

μ΄λ ‡κ²Œ λ©€ν‹°μΊμŠ€νŒ…μ΄ 됨.

1-2) Process Image

Untitled

β†’ ν”„λ‘œμ„ΈμŠ€λŠ” μš”λ¦¬μ‚¬μ΄κ³  λŒ€λŸ‰μ£Όλ¬Έμ΄ λ“€μ–΄μ˜€λŠ” 이 μ‹λ‹Ήμ—μ„œ λŠμž„μ—†μ΄ λ§Œλ“€μ–΄λ‚΄λŠ”

β†’ μš”λ¦¬ 메뉴 ν•˜λ‚˜κ°€ ν•˜λ‚˜κ°€ ν”„λ‘œμ„ΈμŠ€ μž„.

β†’ μ»΄ν“¨ν„°λŠ” ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μžμ›μ„ λΆ„ν• ν•΄μ„œ 할당함.

1-3) ν”„λ‘œμ„ΈμŠ€λ₯Ό λŒλ¦¬λŠ” μž‘μ—…

λ™μ‹œμ , 병렬적, λ˜λŠ” 이 λ‘˜μ˜ ν˜Όν•©μœΌλ‘œ 이뀄짐.

1-3)-1. λ™μ‹œμ„±

λ™μ‹œμ„± ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜κ°€ 이거 μ‘°κΈˆν•˜κ³  μ €κ±° μ‘°κΈˆν•˜κ³ 

μ—¬λŸ¬ μž‘μ—…μ„ λŒμ•„κ°€λ©΄μ„œ 일뢀뢄씩 μ§„ν–‰ν•˜λŠ” κ±°μž„.

이런 진행 쀑인 μž‘μ—…μ„ λ°”κΎΈλŠ” 게

Context Switching이라고 뢀름

여기에도 λ‹€μ–‘ν•œ 방식과 μ•Œκ³ λ¦¬μ¦˜μ΄ μ“°μž„.

이 과정이 λΉ λ₯΄κ²Œ λŒμ•„κ°€λ‹€λ³΄λ‹ˆ μ‚¬λžŒλ“€μ—κ²ŒλŠ”

이 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ 마치 λ™μ‹œμ— μ§„ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λŠλΌλŠ” κ±°μž„.

Untitled

1-2)-2. 병렬성

ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜μ— μ½”μ–΄ μ—¬λŸ¬ κ°œκ°€ λ‹¬λ €μ„œ 각각 λ™μ‹œμ— μž‘μ—…λ“€μ„ μˆ˜ν–‰ν•˜λŠ” κ±°μž„.

λ“€μ–Ό μ½”μ–΄(x2), μΏΌλ“œμ½”μ–΄(x4), μ˜₯타코어(x8) 이런 λͺ…칭이 λΆ™λŠ” λ©€ν‹° μ½”μ–΄ ν”„λ‘œμ„Έμ„œκ°€ 달린

μ»΄ν“¨ν„°μ—μ„œ ν•  수 μžˆλŠ” 방식.

CPU의 속도가 λ°œμ—΄ λ“± 물리적 μ œμ•½ λ•Œλ¬Έμ— μ˜ˆμ „λ§ŒνΌ λΉ λ₯΄κ²Œ λ°œμ „ν•˜μ§€ λͺ»ν•˜μž

κ·Έ λŒ€μ•ˆμœΌλ‘œ μ½”μ–΄λ₯Ό μ—¬λŸ¬ 개 λ‹¬μ•„μ„œ μž‘μ—…μ„ λΆ„λ‹΄ν•  수 μžˆλ„λ‘ λ§Œλ“  κ±°μž„.

Untitled

2. Thread

2-1) Thread

λΈŒλΌμš°μ € μ—­μ‹œ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ΄κ³  이게 λŒλ©΄μ„œ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ§„ν–‰λ˜κ³  있음.

그런데 이 λΈŒλΌμš°μ €κ°€ 일을 ν•  λ•Œλ„ κ²Œμž„μ„ λ‹€μš΄ λ°›λŠ” λ™μ‹œμ— λ‹€λ₯Έ νŽ˜μ΄μ§€λ“€μ„ λŒμ•„λ‹€λ‹ 수 μžˆμ–΄μ•Ό ν•˜κ³ 

유투브 μ˜μƒμ˜ 데이터λ₯Ό λ°›μ•„μ˜€λ©΄μ„œ 받아진 λ°μ΄ν„°λ‘œ μ˜μƒμ„ μ‹€ν–‰ν•  μˆ˜λ„ μžˆμ–΄μ•Ό 함.

ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œλ„ μ—¬λŸ¬ 갈래의 μž‘μ—…λ“€μ΄ λ™μ‹œμ— 진행될 ν•„μš”κ°€ μžˆλŠ” κ±°μž„.

이 갈래λ₯Ό μ“°λ ˆλ“œλΌκ³  뢀름

2-2) Thread Image

Untitled

2-2) Thread

햄버거λ₯Ό λ§Œλ“œλŠ” ν”„λ‘œμ„ΈμŠ€μ—λŠ” νŒ¨ν‹°λ₯Ό κ΅½λŠ” μŠ€λ ˆλ“œκ°€ μ§„ν–‰λ˜λŠ” λ™μ•ˆ

빡에 야채λ₯Ό μ–Ήκ³  μ†ŒμŠ€λ₯Ό λΏŒλ¦¬λŠ” μŠ€λ ˆλ“œλ„ 진행될 수 있음.

ν•œ λ©”λ‰΄μ˜ μŠ€λ ˆλ“œλ“€μ€ 같은 μ‘°λ¦¬λŒ€μ—μ„œ 진행 됨.

κ²°λ‘  : νŒ¨ν‹°λŠ” λ‹€λ₯Έ μ‘°λ¦¬λŒ€μ—μ„œ μ•Όμ±„λŠ” 또 λ‹€λ₯Έ μ‘°λ¦¬λŒ€μ—μ„œ μ§„ν–‰λœλ‹€λ©΄

같은 μ‘°λ¦¬λŒ€μ—μ„œ μž‘μ—…ν•˜λŠ” 것보닀 μΌν•˜κΈ°κ°€ 훨씬 νž˜λ“¦

3. Thread vs Process

3-1) Process

ν”„λ‘œμ„ΈμŠ€λ“€μ€ μ»΄ν“¨ν„°μ˜ μžμ›μ„ λΆ„ν• ν•΄μ„œ 씀.

3-2) Process Image

Untitled

3-2) Thread

μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ 주어진 전체 μžμ›μ„ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” κ±°μž„.

3-4) Thread Image

Untitled

4. Process의 단점

4-1) 이유

ν”„λ‘œμ„ΈμŠ€ μ•ˆμ— κ³΅μœ λ˜λŠ” λ³€μˆ˜μ— μŠ€λ ˆλ“œ 두 κ°œκ°€ λ™μ‹œμ— 손을 λŒ„λ‹€λ©΄

μ»΄ν“¨ν„°μ—μ„œλŠ” Errorκ°€ 됨. μ–΄λ–€ λ²„νŠΌμ„ λˆ„λ₯Ό λ•Œλ§ˆλ‹€ μˆ«μžκ°€ 1μ”© μ¦κ°€ν•˜κ³ 

μŠ€λ ˆλ“œ λ‘˜μ΄ 이 λ²„νŠΌμ„ μ—΄λ²ˆμ”© λˆ„λ₯Έλ‹€λ©΄ 결과물은 20이 λ˜μ–΄μ•Ό ν•˜λŠ”λ°,

그보닀 적은 μˆ«μžκ°€ λ‚˜μ™€λ²„λ¦Ό.

κ·Έλž˜μ„œ λ‘˜μ΄ λ²„νŠΌμ„ λ™μ‹œμ— λˆ„λ₯΄λŠ” κ²½μš°μ—λŠ” μˆ«μžκ°€ 1만 μ˜¬λΌκ°€κΈ° λ•Œλ¬Έμž„.

4-2) 상황

이런 상황을 μ˜ˆμƒν•˜κ³  방지해야 ν•˜κΈ° λ•Œλ¬Έμ— μ“°λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨λ“€μ€

μ½”λ“œλ₯Ό μ§œκΈ°λ„, 디버깅을 ν•΄μ„œ 였λ₯˜λ₯Ό μ°Ύμ•„λ‚΄κ³  원인을 λ°νžˆκΈ°λ„ ꡉμž₯히 κΉŒλ‹€λ‘œμ›€.

4-3) 해결방법

이λ₯Ό ν•΄κ²°ν•˜λŠ” λ„κ΅¬λ‚˜ ν”„λ‘œκ·Έλž¨ 방식이 μ˜€λŠ˜λ‚ μ˜ κ°œλ°œμžλ“€μ„ 많이 도와주고 있음.

도ꡬ 및 ν”„λ‘œκ·Έλž¨ : Closure, Lambda, Actor, Functional Programming