ν°μ€ν 리 λ·°
κ°μ
μ°μνν
ν¬λ¬λ λμ€ dispatch
λΌλ λ¨μ΄λ₯Ό μκ² λμκ³ , μ΄ λ¨μ΄μ μ΄μμ μ°Ύμκ°λ μ€ νλ‘μΈμ€μ λν΄μ μ΄μΌκΈ°κ° λμ€κ³ 머리 μμ μ μ 리λμ§ μμ λΆλΆμΈ κ² κ°μ 곡λΆνκ³ μ 리ν κΈμ΄λ€.
νλ‘μΈμ€
νλ‘μΈμ€(process)λ μ»΄ν¨ν°μμ μ°μμ μΌλ‘ μ€νλκ³ μλ μ»΄ν¨ν° νλ‘κ·Έλ¨μ λ§νλ€.
μ’
μ’
μ€μΌμ₯΄λ§μ λμμ΄ λλ μμ
(task)
λΌλ μ©μ΄μ κ±°μ κ°μ μλ―Έλ‘ μ°μΈλ€.
μ¬λ¬ κ°μ νλ‘μΈμλ₯Ό μ¬μ©νλ κ²μ λ©ν°νλ‘μΈμ±
μ΄λΌκ³ νλ©° κ°μ μκ°μ μ¬λ¬ κ°μ νλ‘κ·Έλ¨μ λμ°λ μλΆν λ°©μμ λ©ν°νμ€νΉ
μ΄λΌκ³ νλ€. νλ‘μΈμ€ κ΄λ¦¬λ μ΄μ 체μ μ μ€μν λΆλΆμ΄λ€.
νλ‘κ·Έλ¨κ³Ό νλ‘μΈμ€
νλ‘κ·Έλ¨
- μΌλ°μ μΌλ‘ νλλμ€ν¬ λ±μ μ μ₯λμ΄ μλ μ€ν μ½λ
νλ‘μΈμ€
- νλ‘κ·Έλ¨μ ꡬλνμ¬ νλ‘κ·Έλ¨ μ체μ νλ‘κ·Έλ¨μ μνκ° λ©λͺ¨λ¦¬ μμμ μ€νλλ μμ λ¨μλ₯Ό μ§μΉ
-> λ°λΌμ νλμ νλ‘κ·Έλ¨μ μ¬λ¬ λ² κ΅¬λνλ©΄ μ¬λ¬ κ°μ νλ‘μΈμ€κ° λ©λͺ¨λ¦¬ μμμ μ€νλλ€. λΌκ³ λ§ν μ μμ.
νλ‘μΈμ
- μ²λ¦¬κΈ°, μΈ‘ μ€μ μ²λ¦¬ μ₯μΉ(
CPU
)
νλ‘μΈμ€μ μν
컀λ λ΄μλ μ€λΉ ν, λκΈ° ν, μ€ν ν λ±μ μλ£κ΅¬μ‘°κ° μμΌλ©° 컀λμ μ΄κ²λ€μ μ΄μ©νμ¬ νλ‘μΈμ€μ μνλ₯Ό κ΄λ¦¬ν¨.
μμ±(crete)
: νλ‘μΈμ€κ° μμ±λλ μ€μΈ μνμ€ν(running)
: νλ‘μΈμ€κ° CPUλ₯Ό μ°¨μ§νμ¬ λͺ λ Ήμ΄λ€μ΄ μ€νλκ³ μλ μνμ€λΉ(ready)
: νλ‘μΈμ€κ° CPUλ₯Ό μ¬μ©νκ³ μμ§λ μμ§λ§ μΈμ λ μ§ μ¬μ©ν μ μλ μνλ‘, CPUκ° ν λΉλκΈ°λ₯Ό κΈ°λ€λ¦¬κ³ μμ. μΌλ°μ μΌλ‘ μ€λΉ μνμ νλ‘μΈμ€ μ€ μ°μ μμκ° λμ νλ‘μΈμ€κ° CPUλ₯Ό ν λΉ λ°μ(μ€μΌμ€λ§
)λκΈ°(waiting)
: 보λ₯(block)λΌκ³ λΆλ₯΄κΈ°λ ν¨. νλ‘μΈμ€κ° μ μΆλ ₯ μλ£, μκ·Έλ μμ λ± μ΄λ€ μ¬κ±΄μ κΈ°λ€λ¦¬κ³ μλ μνμ’ λ£(terminated)
: νλ‘μΈμ€μ μ€νμ΄ μ’ λ£λ¨μ μλ―Έν¨
νλ‘μΈμ€μ μνμ μ΄
νλμ νλ‘κ·Έλ¨μ΄ μ€νλλ©΄ κ·Έ νλ‘κ·Έλ¨μ λμλλ νλ‘μΈμ€
κ° μμ±λμ΄ μ€λΉ 리μ€νΈμ λ
μ λ€μ΄κ°λ€. μ€λΉ 리μ€νΈ μμ λ€λ₯Έ νλ‘μΈμ€λ€μ΄ CPUλ₯Ό ν λΉλ°μ μ€λΉ 리μ€νΈλ₯Ό λ λλ©΄, κ·Έ νλ‘μΈμ€λ μ μ°¨ μ€λΉ 리μ€νΈμ μμΌλ‘ λκ°κ² λκ³ , μΈμ κ° CPUλ₯Ό μ¬μ©ν μ μκ² λλ€.
νλ‘μΈμ€μ μνμ μ΄
λ κ°λ¨ν λ§ν΄μ νλ‘μΈμ€μ νμ¬ μνκ° λ€λ₯Έ μνλ‘ μ΄λνλ κ²μ μλ―Ένλ€.
λμ€ν¨μΉ(dispatch)
- μ€λΉ 리μ€νΈμ 맨 μμ μλ νλ‘μΈμ€κ° CPUλ₯Ό μ μ νκ² λλ κ², μ¦ μ€λΉ μνμμ μ€ν μνλ‘ λ°λλ κ²μ λμ€ν¨μΉλΌκ³ νλ©°, λ€μκ³Ό κ°μ΄ νμν¨
dispatch (processname) : ready -> running
보λ₯(block)
- μ€ν μνμ νλ‘μΈμ€κ° νκ°λ μκ°μ λ€ μ°κΈ° μ μ
μ μΆλ ₯ λμμ νμλ‘ νλ κ²½μ°
νλ‘μΈμ€λ CPUλ₯Ό μ€μ€λ‘ λ°λ©νκ³ λ³΄λ₯ μνλ‘ λμ΄κ°λ€. μ΄κ²μ 보λ₯λΌκ³ νλ©° λ€μκ³Ό κ°μ΄ νμν¨. -> μ μΆλ ₯ λμ μμ CPUλ₯Ό μ¬μ©ν΄μΌνλ κ²μ μ§μν μ μλ€.
block (processname) : running -> blocked
κΉ¨μ(wakeup)
- μ
μΆλ ₯ μμ
μ’
λ£ λ± κΈ°λ€λ¦¬λ μ¬κ±΄μ΄ μΌμ΄λ¬μ λ
보λ₯ μν(block)
μμμ€λΉ μν(ready)
λ‘ λμ΄κ°λ κ³Όμ μ κΉ¨μμ΄λΌκ³ νλ©° λ€μκ³Ό κ°μ΄ νμν¨
wakeup (processname) : blocked -> ready
μκ°μ ν(timeout)
- μ΄μ체μ λ νλ‘μΈμ€κ°
νλ‘μΈμ(CPU)
λ₯Ό κ³μ λ μ ν΄μ μ¬μ©νμ§ λͺ»νκ² νκΈ° μν΄clock interrupt
λ₯Ό λμ΄μ νλ‘μΈμ€κ° μΌμ μκ°λμλ§ (μλΆν μμ€ν μ item slice
) νλ‘μΈμλ₯Ό μ μ ν μ μκ² ν¨ -> μ€νμ€μ΄λ€κ° μ€λΉ μνλ‘ μ μ΄νλ κ²!νλ‘μΈμ€
μνλ‘μΈμ
λ₯Ό μ ꡬλΆνμ
timeout (processname) : running -> ready
μ°Έκ³
- Total
- Today
- Yesterday
- κΉμ΄/λλΉ μ°μ νμ(DFS/BFS)
- 2023 κ°λ°μ νκ³
- μ½λ©ν μ€νΈ
- HTTP
- λ± ν¬μλ¬λ κ°λ°μ
- μ₯μ νκ³
- Go
- μ’μ μ½λλ 무μμΈκ°?
- νλ‘κ·Έλλ¨Έμ€
- rate limit
- mysql
- νΈλμμ 격리 μμ€
- mysql μ€ν κ³ν
- μΆμ μ§λ
- ν(Heap)
- 2λ μ°¨ μλ² κ°λ°μ
- Aws Reinvent 2023
- kotlin s3 upload
- Golang
- μ’μ μμ§λμ΄
- μ’μ κ°λ°μ λκΈ°
- μ€ν/ν
- 2023 νκ³
- μκ³ λ¦¬μ¦
- λ°±μ€
- grpc client
- golang oomkilled
- μ’μ κ°λ°μ
- ν΄μ
- AWS re:Invent 2023
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |