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

κ°œλ°œκ³΅λΆ€/CSπŸ’»

CS κ°•μ˜ 4. μ“°λ ˆλ“œμ™€ μ“°λ ˆλ“œν’€

728x90

좜처 : 내일배움캠프

 

Summary : μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄ μ‹€ν–‰λ˜λŠ” μ‹€ν–‰ λ‹¨μœ„λ‘œ, μ“°λ ˆλ“œ 풀은 μ“°λ ˆλ“œλ₯Ό 미리 μƒμ„±ν•˜κ³  μž‘μ—… μ²˜λ¦¬μ— μ‚¬μš©λ˜λŠ” μ“°λ ˆλ“œμ˜ 개수λ₯Ό μ œν•œν•œλ‹€. κ·Έ μ“°λ ˆλ“œλ‘œ μž‘μ—… 큐에 μžˆλŠ” μž‘μ—…μ„ ν•˜λ‚˜μ”© μ²˜λ¦¬ν•œλ‹€. μ“°λ ˆλ“œ ν’€μ˜ μž₯점은 μ“°λ ˆλ“œλ₯Ό 생성/μˆ˜κ±°ν•  λ•Œ λΉ„μš©μ΄ 듀지 μ•Šκ³  μ“°λ ˆλ“œ 풀을 미리 λ§Œλ“€μ–΄ 두기 λ•Œλ¬Έμ— μ†Œμš”λ˜λŠ” μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€λ₯Ό μ΅œμ ν™”ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ μ“°λ ˆλ“œ 풀에 μ“°λ ˆλ“œλ₯Ό λ„ˆλ¬΄ 많이 μƒμ„±ν•˜κ³  μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ‘œ 이어진닀

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

0 - 1. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 주체 : ν”„λ‘œμ„ΈμŠ€

(ex : ν•˜λ‚˜μ˜ 건물(컴퓨터)μ—μ„œ λ‹€μ–‘ν•œ κ°€κ²Œ(ν”„λ‘œμ„ΈμŠ€)κ°€ 있고, 각 κ°€κ²Œμ—λŠ” 주문을 μ²˜λ¦¬ν•˜λŠ” 직원(μ“°λ ˆλ“œ)κ°€ μžˆλ‹€)

- 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ°°μ •λœ 곡간과 λ©”λͺ¨λ¦¬κ°€ μžˆλ‹€

0 - 2. μž‘μ—… 처리 주체 : μ“°λ ˆλ“œ

ex : μΉ΄μΉ΄μ˜€ν†‘ μ•ˆ 메세지 λ°œμ†‘ μ“°λ ˆλ“œ, 메세지 μˆ˜μ‹  μ“°λ ˆλ“œ λ“±

- μ“°λ ˆλ“œλŠ” ν•„μš”ν•  λ•Œλ§ˆλ‹€ μƒμ„±λ˜λ©°, ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‘°νšŒν•  λ•Œ ν‘œμ‹œλ˜λŠ” μ“°λ ˆλ“œ μˆ˜λŠ” 평균 μŠ€λ ˆλ“œμ˜ 개수λ₯Ό μ˜λ―Έν•œλ‹€

- μΉ˜ν‚¨μ§‘ μ•ˆ 곡간, 재료λ₯Ό 곡유(μžμ› 곡유)

 

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

ν”„λ‘œμ„ΈμŠ€λŠ” 고유 곡간과 μžμ›μ„ ν• λ‹Ήλ°›μ§€λ§Œ, μ“°λ ˆλ“œλŠ” λ‹€λ₯Έ μ“°λ ˆλ“œμ™€ 곡간과 μžμ›μ„ κ³΅μœ ν•œλ‹€

1. μ“°λ ˆλ“œ

1 - 1. ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œμ˜ 차이점

- ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬ μ•ˆμ—μ„œ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ΄λ©°, μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ μ•ˆμ—μ„œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 처리 λ‹¨μœ„λ‹€

- ν”„λ‘œμ„ΈμŠ€λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ μ“°λ ˆλ“œκ°€ μžˆμ–΄μ•Ό ν•˜λ©° ν”„λ‘œμ„ΈμŠ€μ˜ μžλ£Œκ΅¬μ‘°λŠ” μ£Όμ†Œμ™€ 곡간을 각각 ν• λ‹Ήλ°›λŠ”λ‹€(Code, Heap, Stack)

~ λ§Œμ•½ ν”„λ‘œμ„ΈμŠ€μ— μ“°λ ˆλ“œ 없이 ν”„λ‘œμ„ΈμŠ€λ§ŒμœΌλ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•œλ‹€λ©΄

-> ν”„λ‘œμ„ΈμŠ€ 생성, μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ μ‹œ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜κ³  μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­μ΄ λΉ„νš¨μœ¨μ μœΌλ‘œ λ™μž‘ν•œλ‹€

-> ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신이 μ–΄λ ΅λ‹€ : IPC(ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 λ©”μ»€λ‹ˆμ¦˜), LPC, 곡유 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•œ 톡신은 λΉ„μš©μ΄ 많이 λ“ λ‹€

- μ“°λ ˆλ“œλŠ” λ‹€λ₯Έ μ“°λ ˆλ“œμ™€ 곡간과 μžμ›μ„ κ³΅μœ ν•˜λ©° μ‚¬μš©ν•œλ‹€

- μ“°λ ˆλ“œλŠ” μžμ› 쀑 Stack만 λ”°λ‘œ ν• λ‹Ήλ°›κ³  λ‚˜λ¨Έμ§€ μ˜μ—­μ€ μ“°λ ˆλ“œ κ°„ μ„œλ‘œ κ³΅μœ ν•œλ‹€. μ“°λ ˆλ“œκ°€ μžˆμ–΄μ„œ ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ μž‘μ€ λ‹¨μœ„λ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•  수 있고, ν”„λ‘œμ„ΈμŠ€μ˜ 생성 및 μ†Œλ©Έμ— λ”°λ₯Έ μ˜€λ²„ν—€λ“œκ°€ κ°μ†Œν•œλ‹€. μžμ› 곡유둜 μΈν•œ λΉ λ₯Έ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­μ΄ κ°€λŠ₯ν•˜λ©°, ν”„λ‘œμ„ΈμŠ€ κ°„ ν†΅μ‹ μ˜ 어렀움을 λŒ€μ‹ ν•œ 효율적인 톡신이 κ°€λŠ₯ν•˜λ‹€

1 - 2. ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œμ˜ μ£Όμ†Œκ³΅κ°„

ν”„λ‘œμ„ΈμŠ€μ˜ μ£Όμ†Œκ³΅κ°„

ν”„λ‘œμ„ΈμŠ€ : μ»΄ν“¨ν„°μ—μ„œ μ—°μ†μ μœΌλ‘œ μ‹€ν–‰ν•˜κ³  μžˆλŠ” 컴퓨터 ν”„λ‘œκ·Έλž¨, λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€(독립적인 개체), μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήλ°›λŠ” μžμ›μ˜ λ‹¨μœ„ ~ ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰λœ λΆ€λΆ„

 

 ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ§•

- 각각의 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν•­λ‹Ήλ°›λŠ”λ‹€

- μ΅œμ†Œ 1개 μ΄μƒμ˜ μ“°λ ˆλ“œ(메인 μ“°λ ˆλ“œ)λ₯Ό 가지고 μžˆλ‹€

- 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜λ©° μ›μΉ™μ μœΌλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•  수 μ—†λ‹€

- ν”„λ‘œμ„ΈμŠ€κ°„ 톡신은 IPCλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€

- CPUλŠ” ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œμ„ μ‹€ν–‰ν•  수 μžˆλ‹€

 

μ“°λ ˆλ“œμ˜ μ£Όμ†Œκ³΅κ°„

μ“°λ ˆλ“œ : ν”„λ‘œμ„ΈμŠ€ λ‚΄ μ‹€ν–‰λ˜λŠ” μ—¬λŸ¬ μž‘μ—…μ˜ λ‹¨μœ„, ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ • μˆ˜ν–‰ 경둜, ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ΅œμ†Œ μ‹€ν–‰ λ‹¨μœ„

 

μ“°λ ˆλ“œμ˜ νŠΉμ§•

- ν”„λ‘œμ„ΈμŠ€ λ‚΄ ν•„μš”ν•œ Stack만 ν• λ‹Ήλ°›κ³  λ‹€λ₯Έ Code, Data, Heapμ˜μ—­μ€ κ³΅μœ ν•œλ‹€

- 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄ μ“°λ ˆλ“œ κ°„ μžμ›μ„ κ³΅μœ ν•΄ μ‹€ν–‰λœλ‹€ ~ Heap μ˜μ—­ λ³€μˆ˜λ₯Ό μˆ˜μ •ν•  수 μžˆλ‹€

- ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜λ§Œ μ‚¬μš©ν•΄ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€λ©΄ λ©”λͺ¨λ¦¬ λˆ„μˆ˜κ°€ λ°œμƒν•˜λ―€λ‘œ μŠ€λ ˆλ“œκ°€ ν•„μš”ν•˜λ‹€. ν”„λ‘œμ„ΈμŠ€μ™€ λ‹€λ₯΄κ²Œ μŠ€λ ˆλ“œ κ°„ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•˜λ©° μž‘λ™ν•œλ‹€ ~ ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•΄ 처리 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이닀

ex) μΉ˜ν‚¨μ§‘μ—μ„œ 각자 μΌν•˜λŠ” 곡간(Stack)이 λ‹€λ₯΄μ§€λ§Œ, 업무 메뉴얼(Code), μ£Όλ¬Έ(Data), 메인 홀(Heap)을 κ³΅μœ ν•œλ‹€

 

각 μ“°λ ˆλ“œκ°€ λ…λ¦½μ μœΌλ‘œ κ°€μ§€λŠ” λΆ€λΆ„

- program counter(μ‹€ν–‰ λͺ…λ Ήμ–΄)

- register set

- stack space

μ“°λ ˆλ“œκ°€ κ³΅μœ ν•˜λŠ” λΆ€λΆ„

- code section

- data section

- OS resources

 

+ heavy weight processλŠ” ν•˜λ‚˜μ˜ μ“°λ ˆλ“œλ₯Ό 가진 μž‘μ—…μœΌλ‘œ λ³Ό 수 μžˆλ‹€

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

μ“°λ ˆλ“œλŠ” 운영체제의 μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄ λ…λ¦½μ μœΌλ‘œ 관리될 수 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ°λœ λͺ…λ Ήμ–΄μ˜ κ°€μž₯ μž‘μ€ 흐름이닀. ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μ“°λ ˆλ“œλ₯Ό κ°–κ³  μžˆλ‹€

- λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ : ν•˜λ‚˜μ˜ 운영체제 μ•ˆμ—μ„œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λŠ” 것

- λ©€ν‹° μ“°λ ˆλ“œ : ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ—¬λŸ¬ μž‘μ—…μ„ μ—¬λŸ¬ μ“°λ ˆλ“œλ₯Ό μ‚¬μš©ν•΄ λ™μ‹œ μ²˜λ¦¬ν•˜λŠ” 것

2. μ“°λ ˆλ“œν’€

2 - 1. μ“°λ ˆλ“œν’€μ΄λž€

μ“°λ ˆλ“œν’€μ€ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‹€ν–‰μ˜ λ™μ‹œμ„±μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•œ μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μ΄λ‹€. μ“°λ ˆλ“œλ₯Ό μ—¬λŸ¬ 개 미리 생성해두고 ν”„λ‘œκ·Έλž¨μ΄ μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆλ„λ‘ μœ μ§€κ΄€λ¦¬ν•˜λ©° μ“°λ ˆλ“œλ₯Ό ν†΅ν•œ μž‘μ—…μ„ λ³‘λ ¬λ‘œ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•  λ•Œ,

μž‘μ—… μ²˜λ¦¬μ— μ‚¬μš©λ˜λŠ” μ“°λ ˆλ“œλ₯Ό μ œν•œλœ 개수만큼 미리 정해두고 μž‘μ—… 큐의 μž‘μ—…μ„ μ“°λ ˆλ“œκ°€ λ§‘μ•„μ„œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•œλ‹€

 

μ“°λ ˆλ“œν’€μ˜ λ™μž‘

1. μ΄ˆκΈ°ν™” : μ“°λ ˆλ“œν’€μ„ μ‚¬μš©ν•˜κΈ° μ „ μ΄ˆκΈ°ν™”ν•œλ‹€. μ“°λ ˆλ“œν’€μ˜ 크기, μ΅œλŒ€ μ“°λ ˆλ“œ 수, μž‘μ—… 큐 λ“±μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•œλ‹€

2. μž‘μ—… μˆ˜μ‹  : μ“°λ ˆλ“œν’€μ€ μž‘μ—…μ„ μˆ˜μ‹ ν•˜κ³  μ²˜λ¦¬ν•  μ€€λΉ„λ₯Ό ν•œλ‹€. μž‘μ—…μ€ 일반적으둜 μž‘μ—… 큐에 μΆ”κ°€λœλ‹€

3. μž‘μ—… μˆ˜ν–‰ : μ“°λ ˆλ“œν’€μ—μ„  미리 μƒμ„±λœ μ“°λ ˆλ“œλ“€μ΄ μž‘μ—… 큐λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³  λŒ€κΈ° 쀑인 μž‘μ—…μ„ 가져와 μ²˜λ¦¬ν•œλ‹€. μ“°λ ˆλ“œν’€ λ‚΄μ˜ μ“°λ ˆλ“œλŠ” 일반적으둜 λ¬΄ν•œ 루프λ₯Ό λŒλ©΄μ„œ μž‘μ—…μ„ 기닀리고 μžˆλ‹€

4. μž‘μ—… 처리 : μ“°λ ˆλ“œκ°€ μž‘μ—…μ„ μ²˜λ¦¬ν•œλ‹€. μž‘μ—… νμ—μ„œ FIFO둜 κ°€μ Έμ˜¨λ‹€

5. μž‘μ—… μ™„λ£Œ 및 λ°˜ν™˜ : μž‘μ—… κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜κ³  μ“°λ ˆλ“œλŠ” λ‹€μ‹œ λŒ€κΈ° μƒνƒœλ‘œ μ „ν™˜λœλ‹€. 이후 μ“°λ ˆλ“œν’€μ΄ 더이상 μ‚¬μš©λ˜μ§€ μ•Šμ„ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€

6. μ’…λ£Œ : μ“°λ ˆλ“œν’€μ„ 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œ μ’…λ£Œν•œλ‹€. μ’…λ£Œ μ‹œ λͺ¨λ“  μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κ³ , ν•„μš”μ— 따라 남은 μž‘μ—…μ— λŒ€ν•΄ μ²˜λ¦¬ν•˜κ±°λ‚˜ 버릴 수 μžˆλ‹€

2 - 2. μ“°λ ˆλ“œν’€μ„ μ‚¬μš©ν•˜λŠ” 이유

1. ν”„λ‘œκ·Έλž¨ μ„±λŠ₯ μ €ν•˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄

- λͺ¨λ“  μž‘μ—… μˆ˜μš”μ— λ”°λ₯Έ μ“°λ ˆλ“œμ˜ 생성과 수거λ₯Ό κ·Έλ•Œλ§ˆλ‹€ ν•œλ‹€λ©΄, ν”„λ‘œκ·Έλž¨μ— λΆ€ν•˜κ°€ 더 걸리게 λ˜μ–΄ νΌν¬λ¨ΌμŠ€κ°€ μ €ν•˜λ˜κΈ° λ•Œλ¬Έμ— μ“°λ ˆλ“œν’€μ„ μ‚¬μš©ν•œλ‹€

- μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬λ₯΄ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, (Java의 경우 JVM의 λ©”λͺ¨λ¦¬)μ“°λ ˆλ“œ 자체의 Register와 Stack이 있고 μž‘μ—… κ°„ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­μ΄ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— μ“°λ ˆλ“œ 생성과 μˆ˜κ±°μ— λ”°λ₯Έ λ©”λͺ¨λ¦¬ 할당을 λ¬΄μ‹œν•  수 μ—†λ‹€

 

2. λ‹€μˆ˜μ˜ μ‚¬μš©μž μš”μ²­μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄

- λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ, λ‹€μˆ˜ μ‚¬μš©μžμ˜ μš”μ²­μ„ λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•˜κ³  λŒ€μ‘ν•˜κΈ° μœ„ν•΄ μ“°λ ˆλ“œν’€μ„ μ‚¬μš©ν•œλ‹€. 병λͺ© ν˜„μƒμ΄ λ°œμƒν•˜λŠ” I/O, λ°μ΄ν„°λ² μ΄μŠ€ μž‘μ—…μ—μ„œ 주둜 μ‚¬μš©ν•œλ‹€

- μ“°λ ˆλ“œ 생성 μ‹œ μ‹œμŠ€ν…œ μŠ€μΌ€μ€„λŸ¬μ—μ„œ μ“°λ ˆλ“œμ˜ μš°μ„ μˆœμœ„λ₯Ό 맀번 ν• λ‹Ήν•΄μ„œ 생성해야 ν•˜λŠ”λ°, μ“°λ ˆλ“œν’€μ„ μ‚¬μš©ν•  경우 μ“°λ ˆλ“œλŠ” μ²˜μŒμ— μƒμ„±λœ μ“°λ ˆλ“œλ₯Ό ν™œμš©ν•˜κΈ° λ•Œλ¬Έμ— μ“°λ ˆλ“œν’€μ— μ˜ν•΄ μ“°λ ˆλ“œμ˜ 라이프 사이클이 κ΄€λ¦¬λ˜λ―€λ‘œ μŠ€μΌ€μ€„λŸ¬λ₯Ό 맀번 μ΄μš©ν•  ν•„μš”κ°€ μ—†μ–΄ νš¨μœ¨μ μ΄λ‹€

2 - 3. μ“°λ ˆλ“œν’€μ˜ μž₯단점

μž₯점

- μ“°λ ˆλ“œλ₯Ό 생성, μˆ˜κ±°ν•  λ•Œ λΉ„μš©μ΄ 듀지 μ•ŠλŠ”λ‹€

- μ“°λ ˆλ“œκ°€ 생성될 λ•Œ OSκ°€ λ©”λͺ¨λ¦¬ 곡간을 확보해주고 λ©”λͺ¨λ¦¬λ₯Ό μ“°λ ˆλ“œμ—κ²Œ ν• λ‹Ήν•œλ‹€

- μ“°λ ˆλ“œν’€μ„ 미리 λ§Œλ“€μ–΄λ‘κΈ° λ•Œλ¬Έμ— 처음 생성 λΉ„μš©μ΄ μžˆμ§€λ§Œ, 이전 μ“°λ ˆλ“œλ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμ–΄ μ‹œμŠ€ν…œ μžμ› μ‚¬μš©λŸ‰μ„ 쀄일 수 있고, μž‘μ—… μš”μ²­ μ‹œ μ“°λ ˆλ“œκ°€ 이미 λŒ€κΈ°ν•˜κ³  있기 λ•Œλ¬Έμ— μž‘μ—… μ‹€ν–‰ λ”œλ ˆμ΄κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€

 

단점

μ“°λ ˆλ“œν’€μ— μ“°λ ˆλ“œλ₯Ό λ„ˆλ¬΄ 많이 μƒμ„±ν•˜κ³  μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ λ©”λͺ¨λ¦¬ λˆ„μˆ˜κ°€ λ°œμƒν•œλ‹€

 

-> Fork Join Thread Pool

Java 7 μ΄μƒμ—μ„œ μ‚¬μš©ν•˜λŠ” Fork Join Thread Pool

2 - 4. λ™μ‹œμ„±κ³Ό 병렬성

λ™μ‹œμ„±

μ‹±κΈ€ μ½”μ–΄μ—μ„œ λ©€ν‹° μ“°λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ λ©€ν‹° νƒœμŠ€ν‚Ήμ„ μœ„ν•΄ μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ λ²ˆκ°ˆμ•„κ°€λ©° μ‹€ν–‰, μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것"처럼" 보일 뿐이닀

 

병렬성

λ©€ν‹° μ½”μ–΄μ—μ„œ λ©€ν‹° μ“°λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ ν•œ 개 μ΄μƒμ˜ μ“°λ ˆλ“œλ₯Ό κ°–κ³  μžˆλŠ” 각 μ½”μ–΄κ°€ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것을 λ§ν•œλ‹€. 데이터 병렬성과 μž‘μ—… λ³‘λ ¬μ„±μœΌλ‘œ λ‚˜λ‰œλ‹€

데이터 병렬성

전체 데이터λ₯Ό μͺΌκ°œ μ„œλΈŒ λ°μ΄ν„°λ‘œ λ§Œλ“  λ’€, μ„œλΈŒ 데이터λ₯Ό 병렬 μ²˜λ¦¬ν•΄ μž‘μ—…μ„ λΉ λ₯΄κ²Œ μˆ˜ν–‰

~ μžλ°” 8 μ΄μƒμ—μ„œ μ§€μ›ν•˜λŠ” 병렬 슀트림

~ λ©€ν‹° μ½”μ–΄μ˜ 수만큼 데이터λ₯Ό μͺΌκ°œ 각 데이터λ₯Ό μ“°λ ˆλ“œλ“€μ΄ 병렬 μ²˜λ¦¬ν•œλ‹€

μž‘μ—… 병렬성

μ„œλ‘œ λ‹€λ₯Έ μž‘μ—…μ„ 병렬 μ²˜λ¦¬ν•˜λŠ” 것이닀. μ›Ή μ„œλ²„μ˜ 경우 각 λΈŒλΌμš°μ €(ν΄λΌμ΄μ–ΈνŠΈ)κ°€ μš”μ²­ν•œ λ‚΄μš©μ„ κ°œλ³„ μ“°λ ˆλ“œμ—μ„œ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— μž‘μ—… 병렬성을 가진닀

 

728x90