μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- λκ°
- JavaScript
- ν°μ€ν 리μ±λ¦°μ§
- νλ‘κ·Έλλ°
- κΉλ―Έκ²½μλ§νμμ
- μΉ΄νλκ°
- μ 리νΈλ¦¬νΈ
- css
- Kλ°°ν°λ¦¬λ 볼루μ
- κ°μ΄ν μ’ λκ°λΉ
- λ μ
- μλ°
- μν
- μ±
- μνμ£Ό
- Java
- λ°°μμ λ°°μ
- λ°μν
- html
- λ°μ΄ν°λ² μ΄μ€
- κ°λ°
- μ€λΈμ
- database
- Python
- μ½λ©
- μΉνΌλΈλ¦¬μ±
- νμ²μ 리νΈλ¦¬νΈ
- νμ΄μ¬
- μ€λΌν΄
- μλ°μ€ν¬λ¦½νΈ
- Today
- Total
JiYoung Dev π₯
κΈ°μ λ©΄μ μ€λΉ 3. λ©ν° μ€λ λ (+ νλ‘μΈμ€μ μ€λ λ) λ³Έλ¬Έ
κΈ°μ λ©΄μ μ€λΉ 3. λ©ν° μ€λ λ (+ νλ‘μΈμ€μ μ€λ λ)
Shinjio 2023. 11. 7. 21:36μμ μ§λ¬Έ 1. λ©ν°μ€λ λλ?
μμ μ§λ¬Έ 2. λ©ν°μ€λ λλ₯Ό μ¬μ©νλ μ΄μ
νλ‘μΈμ€(Process)μ μ€λ λ(Thread)
μ€λ λλ₯Ό μ΄ν΄νκΈ° μν΄μ νλ‘μΈμ€μ ν¨κ» μ΄ν΄νλ κ²μ΄ μ’λ€. μλνλ©΄ νλ‘μΈμ€λ₯Ό ꡬμ±νλ μμ μ€ νλκ° μ€λ λ μ΄κΈ° λλ¬Έμ΄λ€.
νλ‘μΈμ€(Process)λ?
νλ‘μΈμ€(Process)λ 무μμΌκΉ? νλ‘μΈμ€λ λ¨μνκ² λ§νλ©΄ μ€ν μ€μΈ νλ‘κ·Έλ¨(program)μ΄λΌκ³ ν μ μλ€. νλμ μλ° μ ν리μΌμ΄μ μ μ€νμ€μ΄λΌλ©΄ κ·Έκ²μ΄ λ°λ‘ νλ‘μΈμ€μ΄λ€. λ€μλ§ν΄, μ¬μ©μκ° μμ±ν νλ‘κ·Έλ¨μ΄ μ΄μ체μ μ μν΄ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλ°μ μ€ν μ€μΈ κ²μ λ§νλ€. μ΄λ¬ν νλ‘μΈμ€λ νλ‘κ·Έλ¨μ μ¬μ©λλ λ°μ΄ν°μ λ©λͺ¨λ¦¬ λ±μ μμ κ·Έλ¦¬κ³ μ€λ λλ‘ κ΅¬μ±λλ€.
- νλ‘κ·Έλ¨ : μ»΄ν¨ν°μμ μ€νν μ μλ νμΌ, νμΌμ μ€ννμ§ μμ μν = μ½λ λ©μ΄λ¦¬
- νλ‘μΈμ€: μ΄μ체μ λ‘λΆν° λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλ°μ μ€ν μ€μΈ νλ‘κ·Έλ¨
- νλ‘μΈμ€ = μμ + μ€λ λ(thread)
νλ‘μΈμ€μ μμ ꡬ쑰
νλ‘μΈμ€λ μμκ³Ό μ€λ λλ‘ κ΅¬μ±λλ€κ³ νμλ€. νλ‘μΈμ€μ μμμ ꡬ쑰λ μλμ κ°λ€.
TEXT : μ½λ μμμΌλ‘ νλ‘κ·Έλλ¨Έκ° μμ±ν μ½λκ° CPUκ° ν΄μ κ°λ₯ν κΈ°κ³μ΄ ννλ‘ μ μ₯λμ΄ μλ€.
DATA : μ½λκ° μ€νλλ©΄μ μ¬μ©νλ μ μ λ³μλ κ°μ’ λ°μ΄ν°κ° λͺ¨μ¬μλ€.
HEAP : μμ±μ, μΈμ€ν΄μ€μ κ°μ λμ μΌλ‘ ν λΉλλ λ°μ΄ν°λ€μ΄ μ‘΄μ¬νλ 곡κ°μΌλ‘ μ¬μ©μμ μν΄ λ©λͺ¨λ¦¬ 곡κ°μ΄ λμ μΌλ‘ ν λΉλκ³ ν΄μ λλ€.
STACK : μ§μ λ³μμ νΈμΆν ν¨μκ° μ’ λ£λλ©΄ λλμμ¬ μμμ μΈ μλ£λ₯Ό μ μ₯νλ λ 립μ μΈ κ³΅κ°μ΄λ€. Stack μ ν¨μμ νΈμΆκ³Ό ν¨κ» ν λΉλλ©°, ν¨μμ νΈμΆμ΄ μλ£λλ©΄ μλ©Ένλ€. λ§μ½ stack μμμ μ΄κ³Όνλ©΄ stack overflowκ° λ°μνλ€.
Stack μμκ³Ό Heapμμμ νλ‘μΈμ€κ° μ€νλλ λμ ν¬κΈ°κ° λμ΄λ¬λ€ μ€μ΄λλ λμ μμμ΄λ―λ‘ νμ΄νλ₯Ό νκΈ°νλ€.
μ€λ λ(Thread)λ?
νλ‘μΈμ€μ ν μμμΈ μ€λ λλ 무μμΌκΉ? μ€λ λλ νλ‘μΈμ€(process) λ΄μμ μ€μ λ‘ μμ μ μννλ 주체λ₯Ό λ§νλ€.
ν¬λ‘¬ λΈλΌμ°μ λ₯Ό μλ₯Ό λ€μ΄ μ€λͺ νμλ©΄ λ€μκ³Ό κ°λ€.
- ν¬λ‘¬ λΈλΌμ°μ λ₯Ό μ€ννλ€ => νλμ νλ‘μΈμ€κ° μμ±λλ€.
- ν¬λ‘¬ λΈλΌμ°μ μμ κ·Έλ¦Ό νμΌμ λ€μ΄ λ°λλ€ => νλμ μ€λ λκ° μμ±λλ€.
- ν¬λ‘¬ λΈλΌμ°μ μμ λμμ μΌνμ νλ€ => λ νλμ μ€λ λκ° μμ±λλ€.
λͺ¨λ νλ‘μΈμ€λ ν κ° μ΄μμ μ€λ λκ° μ‘΄μ¬νμ¬ μμ μ μννλ€. μλ°μμλ JVM(Java Virtual Machine)μ μν΄ κ΄λ¦¬λλ€.
νλ‘μΈμ€(process) | μ€λ λ(thread) |
μ΄μ체μ λ‘ μμμ ν λΉλ°μ μμ μ λ¨μ | νλ‘μΈμ€κ° ν λΉλ°μ μμμ μ΄μ©νλ μ€ν νλ¦μ λ¨μ |
λ©ν° μ€λ λ(Multi Thread)λ?
λ κ° μ΄μμ μ€λ λλ₯Ό κ°μ§λ νλ‘μΈμ€λ₯Ό λ©ν°μ€λ λ νλ‘μΈμ€λΌκ³ νλ©°, μλ°μμλ λ©ν° μ€λ λλ₯Ό μ§μνλ€.
μ€λ λλ₯Ό μ€λͺ ν λ λͺ¨λ νλ‘μΈμ€λ ν κ° μ΄μμ μ€λ λκ° μ‘΄μ¬νλ€κ³ νλ€. μ¦, νλ‘μΈμ€λ₯Ό μμ±νλ©΄ κΈ°λ³Έμ μΌλ‘ νλμ main μ€λ λκ° μμ±λλ κ²μ΄λ€. μ€λ λλ₯Ό κ°λ°μκ° 2κ°, 3κ°... μΆκ° μμ±νκ² λλ©΄ λ©ν° μ€λ λ νκ²½μ΄ λλ κ²μ΄λ€. μ΄λ¬ν μ€λ λλ€μ νλ‘μΈμ€μ 리μμ€λ₯Ό 곡μ νκΈ° λλ¬Έμ ν¨μ¨μ μ΄κΈ΄ νμ§λ§ μ μ¬μ μΈ λ¬Έμ μ μ λ ΈμΆλ μλ μλ€.
μ€λ λμ μμ 곡μ
μ€λ λλ μ΄λ»κ² νλμ νλ‘μΈμ€μμ λμμ μμ μ ν μ μκ² ν΄μ£Όλ κ±ΈκΉ? κ·Έ μ΄μ λ λ°λ‘ μ€λ λλΌλ¦¬ νλ‘μΈμ€μ μμμ 곡μ νλ©΄μ νλ‘μΈμ€ μ€ν νλ¦μ μΌλΆκ° λκΈ° λλ¬Έμ΄λ€.
νλ‘μΈμ€μ Heap, data, textμ νλ‘μΈμ€ λ΄ λ€λ₯Έ μ€λ λλ€κ³Ό 곡μ λκ³ stack μμλ§ ν λΉλ°μ 볡μ¬λλ€. κ·ΈλΌ μ stack μμλ§ λ³λλ‘ κ°μ§λ κ²μΌκΉ?
Stackμ ν¨μ νΈμΆ μ μ λ¬λλ μΈμ, λλμκ° μ£Όμκ°, ν¨μ λ΄μμ μ μΈνλ λ³μ λ±μ μ μ₯νλ λ©λͺ¨λ¦¬ 곡κ°μ΄κΈ° λλ¬Έμ΄λ€. μ¦, λ 립μ μΈ Stackμ κ°μ‘λ€λ κ²μ λ 립μ μΈ ν¨μ νΈμΆμ΄ κ°λ₯νλ€λ μλ―Έμ΄λ€. κ·Έλ¦¬κ³ λ 립μ μΈ ν¨μ νΈμΆμ΄ κ°λ₯νλ€λ κ²μ λ 립μ μΈ μ€ν νλ¦μ κ°μ§ μ μλ€λ μλ―Έμ΄λ€.
μμμ 곡μ νλ λ©ν° μ€λ λμ λ¬λ¦¬ νλ‘μΈμ€λ νλ‘μΈμ€λΌλ¦¬ λ©λͺ¨λ¦¬μ μ§μ μ κ·Όμ΄ λΆκ°λ₯νλ€.
νλ‘μΈμ€μ μμ 곡μ λ°©λ²
- IPC(Inter-Process Communication)
- LPC(Local inter-Process Communication)
-λ³λμ 곡μ λ©λͺ¨λ¦¬λ₯Ό λ§λ€μ΄ μ 보λ₯Ό μ£Όκ³ λ°λλ‘ μ€μ
λ©ν° μ€λ λ(Multi Thread)λ₯Ό μ¬μ©νλ μ΄μ ?
μλ°μμ λ©ν° μ€λ λλ₯Ό μ¬μ©νλ μ΄μ λ CPU μ¬μ©μ¨μ ν₯μμμΌ μμμ λ³΄λ€ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μκΈ° λλ¬Έμ΄λ€. μ ννλ CPU μ¬μ©μ¨μ λμ΄κΈ° μν΄ λ©ν°μ€λ λ©μ μ¬μ©νλ κ²μ΄λ€.
μ€λ λμ μμ 곡μ μμ λ³Ό μ μλ―μ΄ νλμ νλ‘μΈμ€λ₯Ό λ€μμ μ€ν λ¨μμΈ μ€λ λλ‘ κ΅¬λΆνμ¬ μμμ 곡μ νκ³ , μμμ μμ±κ³Ό κ΄λ¦¬μ μ€λ³΅μ μ΅μννμ¬ μν λ₯λ ₯μ ν₯μμν¨λ€.
λ©ν° μ€λ λ μ₯μ κ³Ό λ¨μ
μ₯μ
- μμ€ν μμμ λ³΄λ€ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μλ€.
- μ¬μ©μμ λν μλ΅μ±μ΄ ν₯μλλ€.
- μλ₯Ό λ€μ΄, μ±ν νλ‘κ·Έλ¨μ κ²½μ° μ±κΈ μ€λ λ νλ‘κ·Έλ¨μΌ κ²½μ° νμΌ μ μ‘μ λ§μΉ λκΉμ§ μ±ν κΈ°λ₯μ μ¬μ©ν μ μμ§λ§, λ©ν° μ€λ λλ₯Ό κ°λ₯νλ€.
- μμ
μ΄ λΆλ¦¬λμ΄ μ½λκ° κ°κ²°ν΄μ§λ€.
- μμ μ μ°λ λλ³λ‘ λλ μ μμ±νκΈ° λλ¬Έμ μ½λκ° κ°κ²°ν΄ μ§λ€.
λ¨μ
- μμ€ν μμμ μ¬λ¬ μ€λ λκ° κ³΅μ ν΄μΌ νλ€.
- λκΈ°νλ‘ μΈν μ±λ₯ μ ν
- λ©ν° μ€λ λλ μ¬λ¬ κ°μ μ€λ λκ° κ³΅μ μμμ λμμ μ κ·Όν μ μκΈ° λλ¬Έμ λκΈ°ν λ¬Έμ κ° λ°μν μ μλ€. μλ₯Ό λ€μ΄ μ¬λ¬ μ€λ λκ° λμμ ν μμμ λ³κ²½ν΄ λ²λ¦°λ€λ©΄ μλλμ§ μμ μλ±ν κ°μ μ½μ΄ μλΉμ€μ μΉλͺ μ μΈ λ²κ·Έκ° λ°μν μ μλ€. λ°λΌμ μ€λ λ κ° λκΈ°νλ λ°μ΄ν° μ κ·Όμ μ μ΄νκΈ° μν νμμ μΈ κΈ°μ μ΄λ€.
- λκΈ°ν μμ μ μ¬λ¬ μ€λ λλ€μ΄ μμμ λν μ κ·Όμ μμ°¨μ μΌλ‘ ν΅μ νλ κ²μ΄λ€. κ·Έλ¬λ©΄ λμ μ κ·ΌμΌλ‘ μΈν λμ μμ κ³Ό κ°μ νμμ μΌμ΄λμ§ μλλ€. κ·Έλ¬λ λκΈ°ν μμ μ μ¬λ¬ μ€λ λμ μ κ·Όμ μ ννλ κ²μ΄κΈ° λλ¬Έμ λ³λͺ© νμμ΄ μΌμ΄λ μ±λ₯μ΄ μ νλ κ°λ₯μ±μ΄ λλ€.
- κ΅μ°©μν(dead-lock)μ΄ λ°μνμ§ μλλ‘ μ£Όμν΄μΌ νλ€.
- κ΅μ°©μνλ, λ€μμ νλ‘μΈμ€λ μ€λ λκ° μλ‘ μμμ μ μ νκ³ , λ€λ₯Έ νλ‘μΈμ€λ μ€λ λκ° μ μ ν μμμ κΈ°λ€λ¦¬λ μν©μ΄λ€.μ¬λ¬ κ°μ μ€λ λκ° μλ‘ λκΈ°νλ©΄μ 무νμ κΈ°λ€λ¦¬κ²λλ 무ν 루νμ κ°μ μ¦μμ΄λΌκ³ λ³Ό μ μλ€.
μμμ§λ¬Έ λ΅νκΈ°
Q. λ©ν°μ€λ λλ?
Q. λ©ν°μ€λ λλ₯Ό μ¬μ©νλ μ΄μ
λ©ν° μ€λ λλ 2κ° μ΄μμ μ€λ λλ₯Ό κ°μ§λ νλ‘μΈμ€λ₯Ό λ§ν©λλ€. μ¬κΈ°μ νλ‘μΈμ€λ μ΄μ체μ κ° λ©λͺ¨λ¦¬λ₯Ό ν λΉνμ¬ μ€νμ€μΈ νλ‘κ·Έλ¨μ λ§νλ©°, μ€λ λλ μ΄ νλ‘μΈμ€λ΄μμ μμ μ μννλ 주체μ λλ€. νλμ μ€λ λλ§ μ‘΄μ¬νλ μ±κΈ μ€λ λμΌ κ²½μ° νλμ μμ μ΄ λͺ¨λ λλ λ€ λ€λ₯Έ μμ μ μνν μ μμ΅λλ€. λ°λ©΄, λ©ν° μ€λ λμ κ²½μ°μλ νλμ νλ‘κ·Έλ¨μμ νμΌμ λ€μ΄ λ°λ λμμ κ²μμ΄ κ°λ₯ν κ²κ³Ό κ°μ΄ μ¬λ¬ μμ μ λμμ μνν μ μμ΅λλ€. λν λ©ν° μ€λ λμ κ²½μ° νλ‘μΈμ€μ μ€ν μμμ μ μΈν ν, λ°μ΄ν°, μ½λ(ν μ€νΈ) μμμ μμμ 곡μ νκΈ° λλ¬Έμ μμμ μμ±κ³Ό κ΄λ¦¬μ μ€λ³΅μ μ΅μν ν μ μμ΅λλ€. μ΄λ¬ν μ΄μ λλ¬Έμ λ©ν° μ€λ λλ₯Ό μ¬μ©ν©λλ€.
μ°Έκ³ λ¬Έν
μ½λ©κ΅μ‘ ν°μ¨νΌμ€μΏ¨
4μ°¨μ°μ νλͺ , μ½λ©κ΅μ‘, μννΈμ¨μ΄κ΅μ‘, μ½λ©κΈ°μ΄, SWμ½λ©, κΈ°μ΄μ½λ©λΆν° μλ° νμ΄μ¬ λ±
tcpschool.com
π©π» μμ ν μ 볡νλ νλ‘μΈμ€ vs μ€λ λ κ°λ
νλμ μ΄ν΄νλ νλ‘μΈμ€ & μ€λ λ κ°λ μ 곡 μ§μ μμ΄ μ»΄ν¨ν°μ νλ‘κ·Έλ¨μ μ΄μ©νλλ°λ λ¬Έμ μμ΄ μμ§λ§ μννΈμ¨μ΄λ₯Ό κ°λ°νλ μ¬λμΌλ‘μ μ»΄ν¨ν° μ€ν λ΄λΆ μμλ₯Ό λ°μ Έλ³΄κ² λ λ, μ
inpa.tistory.com
[Java] μλ°μ λ©ν° μ€λ λ νλ‘κ·Έλλ°
μλ°μ μ°λ λμ λ©ν°μ°λ λ νλ‘κ·Έλλ°μ μμ보μ 1. μ€λ λμ νλ‘μΈμ€μ κ°λ μ€λ λλ₯Ό 곡λΆνκΈ° μ μ λͺ κ°μ§ κΈ°λ³Έμ§μμ μμ보μ. νλ‘μΈμ€ : μ€ν μ€μΈ νλ‘κ·Έλ¨ μμ(λ©λͺ¨λ¦¬, CPU, κΈ°ν
ar-tec.tistory.com
π©π» λ©ν° νλ‘μΈμ€ vs λ©ν° μ€λ λ λΉκ΅ π― μμ μ΄μ 리
λ©ν° νλ‘μΈμ€μ λ©ν° μ€λ λλ ν μ΄ν리μΌμ΄μ μ λν μ²λ¦¬λ°©μ μ΄λΌκ³ 보면 λλ€. λ¨μν νλ‘κ·Έλ¨μ μ¬λ¬κ° λμλλ κ²μ΄ λ©ν° νλ‘μΈμ€κ° μλλΌ μ΄ λμ μΈμ μ΄λλμ μ΄λ€ λ°©μμΌλ‘
inpa.tistory.com