Thread Management
νλ‘μΈμ€(Process)μ μ€λ λ(Thread)
β νλ‘μΈμ€λ μμμ ν λΉλ°μ λͺ©νλ₯Ό μ΄λ£¨κΈ° μν΄ ν λΉλ°μ μμμ μ μ΄νλ€.
β μμμ μ μ΄ κ³Όμ μ μ€λ λ(Thread)λΌκ³ λΆλ₯Έλ€
β μ€λ λλ μ¬λ¬ κ°κ° μ‘΄μ¬ ν μ μλ€(μ¬λ¬ κ°μ μμμ ν λΉλ°μ κ°κ° μ μ΄ν μ μμ)
μ€λ λ(Thread)μ κ°λ
β SP: stack pointer
β PC: program counter
β μ§μ λ°μ΄ν°: μ μ΄λ₯Ό μν΄ μ¬μ© (νΉμ μ§μμμλ§ μ ν¨ν λ°μ΄ν°)
β μ€ν(Stack): μ§μ λ°μ΄ν° μ μ₯
β Resourceλ 곡μ νλ€
- νλμ resourceλ₯Ό μ μ΄νλ μ¬λ¬ κ°μ processκ° μ‘΄μ¬ν μ μλ€
β κ° threadλ§λ€ μκΈ°λ§μ μμ
μμ(Stack)μ ν λΉλ°λλ€
β κ°μμ PC(program counter)λ₯Ό ν΅ν΄ μμ
μ νλ¦ μ μ΄
Threadλ
β Light Weight Process (LWP): μμμ 곡μ νκ³ μ μ΄λΆλΆλ§ κ°μ§κ³ μλ€.
β νλ‘μΈμ(e.g, CPU) νμ©μ κΈ°λ³Έ λ¨μ
β ꡬμ±μμ
- Thread ID
- Register set (PC, SP λ±)
- Stack (i.e. local data)
β μ μ΄ μμ μΈ μ½λ, λ°μ΄ν° λ° μμλ€μ νλ‘μΈμ€ λ΄ λ€λ₯Έ μ€λ λλ€κ³Ό 곡μ
β μ ν΅μ νλ‘μΈμ€ = λ¨μΌ μ€λ λ νλ‘μΈμ€
Single-thread vs Multi-threads
single
multi
μ€λ λμ μ₯μ
β μ¬μ©μ μλ΅μ±(Responsiveness)
- μΌλΆ μ€λ λμ μ²λ¦¬κ° μ§μ°λμ΄λ, λ€λ₯Έ μ€λ λλ μμ μ κ³μ μ²λ¦¬ κ°λ₯
β μμ 곡μ (Resource Sharing)
- μμμ 곡μ ν΄μ ν¨μ¨μ± μ¦κ°(컀λμ κ°μ
μ νΌν μ μλ€)
- ex) λμΌ address spaceμμ μ¬λ¬ κ° μ€λ λ
- μμμ 곡μ νμ§ λͺ»νλ©΄ context switchingμ ν΄μΌ νλ€.(λΉμ© ↑)
β κ²½μ μ± (Economy)
- νλ‘μΈμ€μ μμ±, context switchμ λΉν΄ ν¨μ¨μ
β λ©ν° νλ‘μΈμ(multi-processor) νμ©
- λ³λ ¬μ²λ¦¬λ₯Ό ν΅ν΄ μ±λ₯ ν₯μ
μ€λ λ μ¬μ©μ μ
β νλμ κ²μμ λν΄μ νλ©΄μΆλ ₯, μ¬μ©μ μ λ ₯, μ€νΌμ»€/λ§μ΄ν¬μ λν κ°κ°μ μ€λ λ μ¬μ©
μ€λ λμ ꡬν
μ¬μ©μ μμ€ μ€λ λ (User Thread)
β μ¬μ©μ μμμ μ€λ λ λΌμ΄λΈλ¬λ¦¬λ‘ ꡬν
- μ€λ λμ μμ±, μ€μΌμ€λ§ λ±
- POSIX threads, Win32 threads, Java thread API...
β λ€λμΌ λ§€ν: 컀λ μμ€ μ€λ λλ νλμΈλ° μ¬μ©μ μμ€ μ€λ λλ μ¬λ¬ κ°μ΄λ€.
β 컀λμ μ€λ λμ μ‘΄μ¬λ₯Ό λͺ¨λ₯Έλ€
- μ₯μ : 컀λμ κ΄λ¦¬(κ°μ
) x
- μμ± λ° κ΄λ¦¬μ λΆνκ° μ μ, μ μ°ν κ΄λ¦¬
- μ΄μμ± (portability) λμ: ν΄λΉ λΌμ΄λΈλ¬λ¦¬λ§ μμΌλ©΄ ν΄λΉ λ©ν°μ€λ λ νλ‘κ·Έλ¨ κ·Έλλ‘ μ¬μ© κ°λ₯ (ex: JVM)
- λ¨μ : 컀λμ νλ‘μΈμ€ λ¨μλ‘ μμ ν λΉ
- νλμ μ€λ λκ° block μνκ° λλ©΄, λͺ¨λ μ€λ λκ° λκΈ°νλ€.(single threaded kernel)
컀λ μμ€ μ€λ λ (Kernel Threads)
β OS(Kernel)μ΄ μ§μ κ΄λ¦¬
β 컀λ μμμμ μ€λ λμ μμ±, κ΄λ¦¬ μν
- (μ€λ λ μ¬μ΄μ)Context switching λ± λΆν(Overhead)κ° ν¬λ€
β 컀λμ΄ κ° μ€λ λλ₯Ό κ°λ³μ μΌλ‘ κ΄λ¦¬
- νλ‘μΈμ€ λ΄ μ€λ λλ€μ΄ λ³ν μν κ°λ₯
Multi-Threading Model
β λ€λλ€ λͺ¨λΈμ ν΅ν΄ μ μΆ©!
νΌν©ν (N:M) μ€λ λ
β nκ° μ¬μ©μ μμ€ μ€λ λ - mκ°μ 컀λ μ€λ λ (n > m)
- μ¬μ©μλ μνλ μλ§νΌ μ€λ λ μ¬μ©
- 컀λ μ€λ λλ μμ μκ² ν λΉλ νλμ μ¬μ©μ μ€λ λκ° block μνκ° λμ΄λ λ€λ₯Έ μ€λ λ μν κ°λ₯ (λ³ν μ²λ¦¬)
β ν¨μ¨μ μ΄λ©΄μλ μ μ°
'β Group_Study > Operating System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[2μ£Όμ°¨] Scheduling Algorithms (0) | 2022.12.14 |
---|---|
[2μ£Όμ°¨] Process Scheduling (0) | 2022.12.13 |
[1μ£Όμ°¨] Process Management: Interrupt, Context Switching (0) | 2022.12.07 |
[1μ£Όμ°¨] Process Management (1) | 2022.12.06 |
[1μ£Όμ°¨] OS Overview (1) | 2022.12.05 |
λκΈ