์ด์์ฒด์
1. ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด
ํ๋ก์ธ์ค (Process)
โ ์คํ์ ์ํด ์์คํ ์ปค๋์ ๋ฑ๋ก๋ ์์
- ์ปค๋์ ๋ฑ๋ก๋๊ณ ์ปค๋์ ๊ด๋ฆฌ ํ์ ์๋ ์์
- ๊ฐ์ข ์์๋ค์ ์์ฒญํ๊ณ ํ ๋น ๋ฐ์ ์ ์๋ ๊ฐ์ฒด
- ํ๋ก์ธ์ค ๊ด๋ฆฌ ๋ธ๋ก (PCB)์ ํ ๋น ๋ฐ์ ๊ฐ์ฒด
- ๋ฅ๋์ ์ธ ๊ฐ์ฒด(active entity): ์คํ ์ค์ ๊ฐ์ข ์์์ ์๊ตฌ, ํ ๋น, ๋ฐ๋ฉํ๋ฉฐ ์งํ
โ ์์์ ํ ๋น ๋ฐ๊ณ , ๋ชฉํ๋ฅผ ์ด๋ฃจ๊ธฐ ์ํด ํ ๋น๋ฐ์ ์์์ ์ ์ด ํ๋ค
โ PCB (Process Control Block)
- ์ปค๋ ๊ณต๊ฐ ๋ด์ ์กด์ฌํ๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ
ํ๋ก์ธ์ค์ ์ํ (state)
์ค๋ ๋ (Thread)
โ ํ๋ก์ธ์ค์ ์คํ ๋จ์
- ํ๋ก์ธ์ค์ ์ ์ด ๋ถ๋ถ๋ง ๋ถ๋ฆฌํด ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ ์์์ ์ ์ดํ๋ค
โ ๊ฐ ์ค๋ ๋๋ง๋ค ์์ ์ ์์ ์์ญ(Stack)์ ํ ๋น ๋ฐ๋๋ค
โ ์์(Resource) ๊ณต์
- ํจ์จ์ฑ / ๊ฒฝ์ ์ฑ ์ฆ๊ฐ (context switching x)
ํ๋ก์ธ์ค vs ์ค๋ ๋
โ ํ๋ก์ธ์ค๋ ์์คํ ์ปค๋์ ๋ฑ๋ก ๋ผ ์์์ ํ ๋น ๋ฐ์ ์์ ์ด๋ฉฐ, ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์คํ๋จ์๋ก ํ ๋น ๋ฐ์ ์์์ ์ ์ดํ๋ค.
โ ๊ฐ๊ฐ ์์์ ํ ๋น ๋ฐ๋ ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๊ณ , ์์ ๋ง์ ์์ ์์ต์ธ stack์ ํ ๋น ๋ฐ์์ ์ง์ญ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค
โ ๋ํ ํ๋ก์ธ์ค๋ ๊ต์ฒด ์ context switching์ด ๋ฐ์ํด overhead๊ฐ ๋ฐ์ํ๋ ๋ฐ๋ฉด, ์ค๋ ๋๋ ๋ฉํฐ์ค๋ ๋ฉ ๋ฑ์ ํตํด ํด๋น overhead๋ฅผ ์ต์ํ ํ ์ ์๋ค.(์ค๋ ๋ ์์ฒด๋ ์ปค๋ ์ค๋ ๋์ ๊ฒฝ์ฐ context switching ์กด์ฌ)
2. Deadlock (๋ฐ๋๋ฝ)
Deadlock์ ๊ฐ๋
โ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ
โ P1์ P2๊ฐ ๊ฐ์ง๊ณ ์๋ R1์, P2๋ P1์ด ๊ฐ์ง๊ณ ์๋ R2๋ฅผ ์์ฒญํ๊ณ ์๋ค -> ์๋ก ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฏ๋ก deadlock!
starvation vs deadlock
โ starvation -> ready state
โ deadlock -> asleep state
โ starvation์ '์ด์ด ์์ด์' ํ๋ก์ธ์๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์ํ์ผ ๋ฟ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ ์๋๋ค!!
Deadlock ๋ฐ์์ ์กฐ๊ฑด
โ ์์์ ํน์ฑ
- Exclusive use of resources
- Non - preemptible resources
โ ํ๋ก์ธ์ค์ ํน์ฑ
- Hold and Wait(Partial allocation)
- ์์์ ํ๋ holdํ๊ณ ๋ค๋ฅธ ์์ ์์ฒญ
- Circular wait
Deadlock Prevention
โ 4๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋ ์ ๊ฑฐ -> ๋นํ์ค์ !
Deadlock Avoidance
โ ์์คํ ์ ํญ์ safe state(๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์ข ๋ฃ๊ฐ ๊ฐ๋ฅํ ์ํ)๋ก ์ ์ง
- Dijkstra's Algorithm(Banker's algorithm)
- ํ ์ข ๋ฅ์ ์์
- Habermann's Algorithm
- ์ฌ๋ฌ ์ข ๋ฅ์ ์์
Deadlock Detection & Recovery
โ Deadlock ๋ฐ์ ๋ฐฉ์ง x
โ ๋ฐ์ ํ์ธ ํ ํ๋ณต
โ Detection: Graph Reduction
- RAG(Resource Allocation Graph)
โ Recovery
- Process Tremination
- Resource Preemption
3. ์ธ๋งํฌ์ด & ๋ฎคํ ์ค
Critical Section
โ shared data (๊ณต์ ๋ฐ์ดํฐ) or Critical data
- ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ๊ณต์ ํ๋ ๋ฐ์ดํฐ
โ Critical section (์๊ณ ์์ญ)
- ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ฝ๋ ์์ญ (code segment)
โ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์์ ๊ณต์ ๋ฐ์ดํฐ์ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค/์ค๋ ๋๋ง ์ ๊ทผํ ์ ์๋๋ก ํด์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค -> ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ Mutex(๋ฎคํ ์ค) / Semaphore(์ธ๋งํฌ์ด)
Mutex (Mutual Exclusion)
โ ์๊ณ๊ตฌ์ญ์ ๊ฐ์ง ์ค๋ ๋๋ค์ ์คํ์๊ฐ์ด ์๋ก ๊ฒน์น์ง ์๊ณ ๊ฐ๊ฐ ๋จ๋ ์ผ๋ก ์คํ(์ํธ๋ฐฐ์ Mutual Exclution)๋๋๋ก ํ๋ ๊ธฐ์
โ Dekker's Algorithm
- flag / turn ํ์ฉ
โ Petersen's Algorithm
- Dekker's algorithm์ ๊ฐ๋จํ ๋ฒ์
โ Spinlock
- Busy waiting ์ํ๋ก ๋๊ธฐํ๋ฉด์ ์๊ณ์์ญ ์ง์ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒ์ฌ
Semaphore
โ ํ๋ก์ธ์ค n๊ฐ์ ์ํธ๋ฐฐ์ ๋ฌธ์ (counting semaphore)
โ Signaling ๋ฐฉ์
- ํ๋ก์ธ์ค๊ฐ ์๊ณ์์ญ์ ๋น ์ ธ ๋์ค๋ฉด์ ready queue์๋ ํ๋ก์ธ์ค๋ฅผ wake up
Mutex vs Semaphore
โ ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค(์ํธ๋ฐฐ์ )๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ํํธ์จ์ด ๋จ์์ ๊ธฐ์ ์ค ํ๋
โ ์ธ๋งํฌ์ด๊ฐ ๋ฎคํ ์ค๊ฐ ๊ตฌ๋ถ๋๋ ์ ์ ๋๊ธฐํ ๋์์ ๊ฐ์, lock/signaling ๋ฐฉ์์ ์ฐจ์ด
4. Context Switching
โ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋, ์คํ ์ค์ธ ํ๋ก์ธ์ค์ context๋ฅผ ์ ์ฅํ๊ณ , ์์ผ๋ก ์คํ ํ ํ๋ก์ธ์ค์ context๋ฅผ ๋ณต๊ตฌํ๋ ์ผ
- ์ปค๋์ ๊ฐ์
โ Context: ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ ๋ณด๋ค์ ์งํฉ
โ Context saving: ํ์ฌ ํ๋ก์ธ์ค์ Register context๋ฅผ memory์ ์ ์ฅํ๋ ์์
โ Context restoring: Register context๋ฅผ ํ๋ก์ธ์ค๋ก ๋ณต๊ตฌํ๋ ์์
Context switching overhead
โ Context switching์ ์์๋๋ ๋น์ฉ
- OS๋ง๋ค ๋ค๋ฅด๋ค
- OS์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ค๋ค
โ ๋ถํ์ํ context switching์ ์ค์ด๋ ๊ฒ์ด ์ค์!
5. Proccess Scheduling
โ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ(์์คํ ๋ด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์กด์ฌ) ํ๊ฒฝ์์ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์์์ ํ ๋นํ ๊ฒ์ธ๊ฐ!
โ ์๋ต์๊ฐ, ์์ ์ฒ๋ฆฌ๋, ์์ ํ์ฉ๋ ํฅ์ ๋ชฉ์
โ Preemptive Scheduling (์ ์ ํ ์ค์ผ์ค๋ง)
- ํ์์ ์ํด ์์์ ๋นผ์๊ธธ ์ ์์
โ Non - Preemptive Scheduling (๋น์ ์ ํ ์ค์ผ์ค๋ง)
- ํ ๋น ๋ฐ์ ์์์ ์ค์ค๋ก ๋ฐ๋ฉํ ๋๊น์ง ์ฌ์ฉ
FCFS (First Come First Service)
โ Non-preemptive scheduling
โ ์ค์ผ์ค๋ง ๊ธฐ์ค
- ๋์ฐฉ์๊ฐ (ready queue ๊ธฐ์ค)
- ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌ
โ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ (high resource utilization): scheduling overhead๊ฐ ์ ์
โ ๋จ์
- Convouy effect: ํ๋์ ์ํ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค์ ์ํด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ๊ธด ๋๊ธฐ์๊ฐ์ ๊ฐ๊ฒ ๋๋ ํ์(๋๊ธฐ์๊ฐ >> ์คํ์๊ฐ)
- ๊ธด ํ๊ท ์๋ต์๊ฐ(response time)
RR (Round -Robin)
โ Preemptive scheduling
โ ์ค์ผ์ค๋ง ๊ธฐ์ค
- ๋์ฐฉ์๊ฐ (ready queue ๊ธฐ์ค)
- ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌ
โ ์์ ์ฌ์ฉ ์ ํ ์๊ฐ(time quantum)
- ํ๋ก์ธ์ค๋ ํ ๋น๋ ์๊ฐ์ด ์ง๋๋ฉด ์์ ๋ฐ๋ฉ (time-runout)
- ํน์ ํ๋ก์ธ์ค์ ์์ ๋ ์ ๋ฐฉ์ง
- context switch overhead๊ฐ ํฌ๋ค
โ Time quantum์ด ์์คํ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ํต์ฌ ์์
- very large(infinite) -> FCFS
- very small -> process sharing
- ์ฒด๊ฐ ํ๋ก์ธ์ ์๋ = ์ค์ ํ๋ก์ธ์ ์ฑ๋ฅ์ 1/n
- high context switch overhead
SPN (Shortest-Process-Next)
โ Non-preemptive scheduling
โ ์ค์ผ์ค๋ง ๊ธฐ์ค
- ์คํ์๊ฐ (burst time)
- busrt time์ด ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค ๋จผ์ ์ฒ๋ฆฌ
- SJF(Shortest Job First) scheduling
โ ์ฅ์
- ํ๊ท ๋๊ธฐ์๊ฐ(WT) ์ต์ํ
- ์์คํ ๋ด ํ๋ก์ธ์ค ์ ์ต์ํ
- ์ค์ผ์ค๋ง ๋ถํ ๊ฐ์, ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ -> ์์คํ ํจ์จ ํฅ์
- ๋ง์ ํ๋ก์ธ์ค๋ค์๊ฒ ๋น ๋ฅธ ์๋ต ์๊ฐ ์ ๊ณต
โ ๋จ์
- Starvation(๋ฌดํ ๋๊ธฐ)
- BT๊ฐ ๊ธด ํ๋ก์ธ์ค๋ ์์์ ํ ๋น ๋ฐ์ง ๋ชปํ ์ ์์
- Aging ๋ฑ์ผ๋ก ํด๊ฒฐ (HRRN)
- ์คํ์๊ฐ ์์ธก ๋ถ๊ฐ
SRTN (Shortest Remaining Time Next)
โ Preemptive scheduling
โ SPN์ ๋ณํ
- ์์ฌ ์คํ ์๊ฐ์ด ๋ ์ ์ ํ๋ก์ธ์ค๊ฐ ready ์ํ๊ฐ ๋๋ฉด ์ ์
โ SPN์ ์ฅ์ ๊ทน๋ํ
โ ๊ตฌํ ๋ฐ ์ฌ์ฉ์ด ๋นํ์ค์ (์คํ ์๊ฐ ์์ธก ๋ฐ ์ํ ์ถ์ )
HRRN (High-Response-Ratio-Next)
โ SPN์ ๋ณํ
- SPN + Aging concepts, Non-preemptive
โ Aging
- ํ๋ก์ธ์ค ๋๊ธฐ ์๊ฐ(WT)๋ฅผ ๊ณ ๋ คํ์ฌ ๊ธฐํ ์ ๊ณต
โ ์ค์ผ์ค๋ง ๊ธฐ์ค
- Response ratio๊ฐ ๋์ ํ๋ก์ธ์ค ์ฐ์
โ Response ratio = (WT + BT) / BT
- SPN์ ์ฅ์ + Starvation ๋ฐฉ์ง
- ์คํ ์๊ฐ ์์ธก ๊ธฐ๋ฒ ํ์ (overhead)
MLQ (Multi Level Queue)
โ ์์ (or ์ฐ์ ์์)๋ณ ๋ณ๋์ ready queue๋ฅผ ๊ฐ์ง
- ์ต์ด ๋ฐฐ์ ๋ queue๋ฅผ ๋ฒ์ด๋์ง ๋ชปํ๋ค
- ๊ฐ๊ฐ์ queue๋ ์์ ๋ง์ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ ์ฌ์ฉ
โ queue ์ฌ์ด์๋ ์ฐ์ ์์ ๊ธฐ๋ฐ์ ์ค์ผ์ค๋ง ์ฌ์ฉ
MFQ (Multi-level Feedback Queue)
โ ํ๋ก์ธ์ค์ queue๊ฐ ์ด๋์ด ํ์ฉ๋ MLQ
โ Feedback์ ํตํด ์ฐ์ ์์ ์กฐ์
- ํ์ฌ๊น์ง์ ํ๋ก์ธ์ ์ฌ์ฉ ์ ๋ณด(ํจํด)์ ํ์ฉ
โ ๋ณํ
- ๊ฐ ์ค๋น ํ๋ง๋ค ์๊ฐ ํ ๋น๋ ๋ค๋ฅด๊ฒ ๋ฐฐ์
- ์ ์ถ๋ ฅ ์์ฃผ ํ๋ก์ธ์ค๋ค์ ์์ ๋จ๊ณ ํ๋ก ์ด๋, ์ฐ์ ์์ ๋์
- ๋๊ธฐ ์๊ฐ์ด ์ง์ ๋ ์๊ฐ์ ์ด๊ณผํ ํ๋ก์ธ์ค๋ค์ ์์ํ๋ก ์ด๋
- ์์ด์ง(Aging) ๊ธฐ๋ฒ
'โญ Personal_Study > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2023.03.11 |
---|---|
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์ด์์ฒด์ 2 (0) | 2023.03.03 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ๋คํธ์ํฌ (0) | 2023.02.23 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์๊ณ ๋ฆฌ์ฆ (0) | 2023.02.19 |
CS ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ - ์๋ฃ๊ตฌ์กฐ (0) | 2023.02.12 |
๋๊ธ