728x90
Goal
1. νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄μ μ€λͺ νκΈ°
2. λ©ν° νλ‘μΈμ€ λμ λ©ν° μ€λ λλ₯Ό μ¬μ©νλ μ΄μ μ΄ν΄νκΈ°
Q. νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄λ 무μμΈκ°?
A.
- νλ‘μΈμ€λ μ΄μ체μ (OS)λ‘λΆν° λ©λͺ¨λ¦¬λ₯Ό ν λΉ λ°μ μ€ν λλ νλ‘κ·Έλ¨μ μμ λ¨μλ₯Ό μκΈ°νκ³ , μ€λ λλ μ΄λ¬ν νλ‘μΈμ€μ μμμ μͺΌκ°μ μ¬μ©νλ μ€ν λ¨μμ λλ€.
- νλ‘μΈμ€λ 1κ° μ΄μμ μ€λ λλ‘ μ€νλκ³ , μμ λ§μ κ³ μ ν μ£Όμ곡κ°μ ν λΉ λ°μ΅λλ€. μ€λ λλ μ΄ μ€μ stackλ§ λ°λ‘ ν λΉ λ°κ³ λλ¨Έμ§ μμμ μ€λ λλΌλ¦¬ 곡μ ν©λλ€.
λ€λ₯Έμ | νλ‘μΈμ€ | μ€λ λ |
μ μ | λ©λͺ¨λ¦¬λ₯Ό ν λΉ λ°μ μ€νλλ μ»΄ν¨ν° νλ‘κ·Έλ¨μ μμ λ¨μ | νλ‘μΈμ€κ° ν λΉ λ°μ μμμ μ΄μ©νλ μ€ν λ¨μ (μ¦, 1κ°μ νλ‘μΈμ€λ 1κ° μ΄μμ μ€λ λλ₯Ό κ°μ§) |
μμ€ν μμ | OSλ‘λΆν° κ³ μ ν λ©λͺ¨λ¦¬ μμμ ν λΉ λ°μ | μ€λ λλ κ°κ° stackλ§ λ°λ‘ ν λΉ λ°κ³ , νλ‘μΈμ€ λ΄μ μ£Όμ 곡κ°κ³Ό μμμ 곡μ ν¨ |
ν΅μ | - λ€λ₯Έ νλ‘μΈμ€μ μμμ μ κ·Όνλ €λ©΄ νλ‘μΈμ€ κ°μ ν΅μ (IPC, inter-process communication)μ μ¬μ©ν΄μΌν¨μΌλ‘ eg) pipe, socket, shared memory, message passing, semaphore - λ ν¨μ¨μ μ |
- κ°μ νλ‘μΈμ€ μμ μλ μ€λ λλ€μ μμμ 곡μ νκΈ° λλ¬Έμ ν μ€λ λκ° μμμ λ³κ²½νλ©΄ λ€λ₯Έ μ€λ λ(sibling thread)λ κ·Έ λ³κ²½ κ²°κ³Όλ₯Ό μ¦μ μ μ μμ - λ ν¨μ¨μ μ |
μ²λ¦¬ μκ° | - μμ±/μ’
λ£νλλ° μκ°μ΄ λ κ±Έλ¦Ό - context switching μκ°μ΄ λ κ±Έλ¦Ό |
- μμ±/μ’
λ£νλλ° μκ°μ΄ λ κ±Έλ¦Ό - context switching μκ°μ΄ λ κ±Έλ¦Ό |
μ½ | System Call (process λ³νμ OSμ μΈν°νμ΄μ€ μ¬μ©) |
Library Call (thread μ ν μ OS νΈμΆ μμ΄ μ»€λμ interrupt λ°μ) |
μ€λ¨ | λ€λ₯Έ νλ‘μΈμ€μλ λ
립μ μ΄κΈ° λλ¬Έμ μ€λ¨ λΌλ λ€λ₯Έ νλ‘μΈμ€ μνμ μν₯ λ―ΈμΉμ§ μμ eg) Chrome |
user-level threadκ° μ€λ¨λλ©΄ λͺ¨λ λ€λ₯Έ user-level threadκ° μ€λ¨λ¨ eg) Internet Explorer |
Q. λ©ν° νλ‘μΈμ€ λμ λ©ν° μ€λ λλ₯Ό μ¬μ©νλ μ΄μ λ?
A.
- OSκ° μμ€ν
μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄μ
- νλ‘μΈμ€λ₯Ό μμ±νκ³ μμ€ν μμμ ν λΉνλ μμ€ν μ½μ΄ μ€μ΄λ€μ΄ μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μμ
- μ€λ λλ νλ‘μΈμ€ λ΄μ λ©λͺ¨λ¦¬λ₯Ό 곡μ νκΈ° λλ¬Έμ μ¬λ¬ νλ‘μΈμ€λ₯Ό μ΄μνλ κ²κ³Όλ λ¬λ¦¬ μμ€ν μμ μλͺ¨κ° μ€μ΄λ¦
- ν΅μ λΉμ© κ°μ λ° μλ΅ μκ° λ¨μΆ
- μ€λ λλ Stack μμ μ΄μΈ νλ‘μΈμ€μ μμμ 곡μ νκΈ° λλ¬Έμ νλ‘μΈμ€ κ° ν΅μ (IPC)λ³΄λ€ μ€λ λ κ° ν΅μ μ λΉμ©μ΄ μ μ
- Context switching μ μ€λ λλ Stack μμμ λν PCB μν μ²λ¦¬λ₯Ό νκΈ° λλ¬Έμ νλ‘μΈμ€ κ°μ μ ν μλλ³΄λ€ μ€λ λ κ°μ μ ν μλκ° λΉ λ¦
π Context switching : νλ²μ νλμ νλ‘μΈμ€λ§ μ²λ¦¬ν μ μλ CPUμκ² μ¬λ¬ νλ‘μΈμ€λ₯Ό μ²λ¦¬ν μ μλλ‘ νμ¬ μ§νμ€μΈ μμ μ μ μ₯νκ³ λ€μμ μ§νλ μμ μ μνκ°μ PCBλ‘λΆν° μ½κ³ CPUλ₯Ό μ μ¬νλ κ³Όμ μ μκΈ°ν¨
π PCB (Process Control Block, νλ‘μΈμ€ μ μ΄ λΈλ‘) : νΉμ νλ‘μΈμ€μ λν μ 보λ₯Ό μ μ₯νκ³ μλ 컀λ λ΄μ μλ£κ΅¬μ‘°
λκΈ