๋ณธ ๊ฒ์๊ธ์ PC๋ฒ์ ์ ์ต์ ํ ๋์ด ์์ต๋๋ค.
Operating Systems, Internals and Design Principles (9th Ed.), William Stallings, Pearson, 2017
1. What is a Process
ํ๋ก์ธ์ค๋ ์คํ์ํ์ ์๋ ํ๋ก๊ทธ๋จ.
ํ๋ก์ธ์ค๋ ๋๊ฐ ๋ง๋ค์ด?
1. GUI๋ฅผ ํตํ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ์๊ฐ
2. ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด
-> ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์ปค๋์ด ์์ฑ
2. Process States
Dispatcher์ ์ํด ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํ ๊ฐ๋ฅ.
Dispatcher๋ ๋ฌธ๋งฅ ์ ํ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ OS์ ๊ธฐ๋ฅ. ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ์ญํ .
Process Scheduling๋ก ์ฐ์ ์์์ ๋ฐ๋ฅธ ์ ํ.
Waiting time๊ณผ Priority์ ๊ธฐ๋ฐํ์ฌ ์์ ์ ์ํ.
Waiting time์ด ๋ ๊ธธ๋ค๊ณ ๋ฌด์กฐ๊ฑด ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ ์๋! -> ์์ธ ์ํฉ : I/O๊ฐ ์งํ์ค์ธ ๊ฒฝ์ฐ ์ฐ์ ์์ ๋ฌด์.
1) Process Termination
1. ์ํ์ด ์๋ฃ๋๊ฑฐ๋
2. ์๋ฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋
3. ๋ถ๋ชจ์ ์์ฒญ์ ์ํด ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋ ์ ์๋ค.
2) Process State
1. Running ์ํ
foreground : interactive mode
background : batch mode
2. Not Running ์ํ
Ready : ์คํ ์ค์ ์๋์ง๋ง ์ฆ์ ์คํ ๊ฐ๋ฅํ ์ํ. time slice๊ฐ ๋ค ๋ ๊ฒฝ์ฐ. ready ์ํ์ธ ๊ฒฝ์ฐ queue์ ์ ์ฅ.
Block : ์คํ ์ํฌ ์ ์๋ ์ํ. ํน์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ. block ์ญ์ queue์ ์ ์ฅ.
ํน์ ์ด๋ฒคํธ๋ณ๋ก queue๋ฅผ ๋ง๋ค์ด์ ์ข ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ.
Suspended : block ์ํ์ธ ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ณ ์์ -> ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ์ํด swap ๊ณต๊ฐ์ ๋ณด๋ธ๋ค.
suspended ์ญ์ ready ์ํ์ block ์ํ๊ฐ ์์.
I/O๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ suspended๋ก ๋ณด๋๋๋ฐ time slice๊ฐ ๋๊ธฐ ์ ์ I/O๊ฐ ์๋ฃ๋ ๊ฒฝ์ฐ suspened ready๋ก ์ ํ.
Terminate :์ข ๋ฃ๋ ์ข๋น์ํ. ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋์ง๋ง PCB, ์ฆ ํ๋ก์ธ์ค์ ๊ดํ ์ ๋ณด๋ ๋ฐ๋ฉ๋์ง ์์. Wait์ ํตํด ์ ๊ฑฐ.
3) ์ต์ข ์ ์ธ ์ํ๋
3. PCB
์ด์์ฒด์ ์ ์ํด ๋ง๋ค์ด์ง๊ณ ๊ด๋ฆฌ๋๋ค.
ํ๋ก์ธ์ค์ ๊ดํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ด์์ฒด์ ์ ์๋ฃ๊ตฌ์กฐ.
ํ๋ก์ธ์ค ์ํ, ์คํ ์ ๋ณด, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์, CPU Register, Pid, PPid ๋ฑ๋ฑ ๋ค์ํ ์ ๋ณด๋ฅผ ํฌํจ.
ID : ์ด๋ค ํ๋ก์ธ์ค์ธ์ง ์๋ณํด์ผํ๋ค. PID, PPID, PGID
์ํ : ํ๋ก์ธ์ค ์ํ
์ฐ์ ์์ : ํ๋ก์ธ์ค์ ์คํ ์์
์์ ์ฌ์ฉ์ ๋ณด ํต๊ณ : ์ ๋ณด ์ ์ฅ
์์น ์ ๋ณด : ๋ฉ๋ชจ๋ฆฌ์์์ ์ฃผ์
๋ฐ์ดํฐ : ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ
ํ๋์ ํ๋ก์ธ์ค = ํ๋์ PCB
๋ฆฌ๋ ์ค์์๋ ํ๋ก์ธ์ค ๋์คํฌ๋ฆฝํฐ๋ผ๊ณ ๋ถ๋ฆ.
๋ฆฌ๋ ์ค์์๋ Process List๋ฅผ ํตํด ๊ด๋ฆฌ.
1) Process List
Linked List ํํ๋ก next_task์ prev_task๋ก ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋ค.
ํ๋ก์ธ์ค๊ฐ ์ฐ๊ฒฐ๋ ํํ๊ฐ ์๋ PCB๊ฐ ์ฐ๊ฒฐ๋ ํํ.
Ready Queue์ ๊ฒฝ์ฐ next_run๊ณผ prev_run์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
4. Context
User Context์ System Context๋ก ๋ถ๋ฅ.
User Context์๋ Code, Data, User Stack์ด ์ ์ฅ.
์ด๊ธฐํ ๋์ง ์์ ์ ์ญ ๋ณ์ : Data ์์ญ
์ด๊ธฐํ ๋ ์ ์ญ ๋ณ์ : Bss ์์ญ
์ง์ญ ๋ณ์ : Stack ์์ญ
System Context์๋ Kernel Stack๊ณผ PCB๊ฐ ์ ์ฅ.
5. Process Control
ํ๋ก์ธ์ค๋ค์ ์ปค๋์ ์ํด ์คํ๋๋ค.
์ ์ ๋ชจ๋์ ์์คํ ๋ชจ๋๋ฅผ ์๋ค๊ฐ๋คํ๋ฉด์ ์คํํ๋๋ฐ ์ด๋ฅผ Mode change๋ผ๊ณ ํจ.
์ ์ ๋ชจ๋๋ณด๋ค ์์คํ ๋ชจ๋๊ฐ ๊ถํ์ด ๋ ๋ง๋ค.
(ํ๋ก์ธ์ค๋ค๊ฐ์ ์ ํ์ Context Switch)
ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ณผ์ ์
1. PCB๋ฅผ ๋จผ์ ์์ฑ (ํ๋ก์ธ์ค๋ ๊ณ ์ ํ PCB๋ฅผ ๊ฐ๊ณ ์์ผ๋ฏ๋ก)
2. PID๋ฅผ ํ ๋น
3. PCB์ ๊ฐ์ ์ฑ์ฐ๊ณ
4. User Context๋ฅผ ์์ฑ -> ์๊ฐ์ด ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
5. ์์ฑํ PCB์ ์ํ๋ฅผ Ready ์ํ๋ก ๋ณ๊ฒฝ
6. ์์ ํ๋ก์ธ์ค์ธ ๊ฒฝ์ฐ pid์ 0์ ๋ฆฌํด
1) fork()
user context์์ code ์์ญ์ ๊ทธ๋๋ก ๋ ์ฑ data์ stack ์์ญ๋ง ๋ณต์ฌ -> code ์์ญ์ ๋ณต์ฌํ์ง ์๋ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ์ํด.
COW(Copy on Write) : ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ์ํด ๊ฐ๋ฐํ ๋ฐฉ๋ฒ
fork๋ฅผ ํ์ ๋ code, data, stack ๋ถ๋ชจ์ ๊ฐ์ ์์ญ์ ๊ฐ๋ฅดํค๊ฒ ํ๊ณ , ๊ฐ์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ์์ญ์ ๋ณต์ฌํ๋ ๋ฐฉ์.
2) exec()
fork()๋ฅผ ํด์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ณ exec()๊ฐ ์คํ๋๋ฉด user context์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๊ณ ๋ฆฌ๋ฅผ ๋๊ณ ์๋ก์ด user context์ ์ฐ๊ฒฐ
6. Context Switch
1) ๋ฐ์ ์กฐ๊ฑด
1. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๊ฒฝ์ฐ -> Wait์ผ๋ก ํ์
2. Time slice๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ -> Ready Queue๋ก
3. I/O ๊ฐ์ System Call์ด ๋ฐ์ํ ๊ฒฝ์ฐ -> Blocked Queue(Suspended Queue)๋ก
4. ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
2) ์คํ ๋จ๊ณ
๋ฌธ๋งฅ ์ ํ์ด ๋ฐ์ํ๋ฉด ์คํ ์ค์ธ ํ๋ก์ธ์ค์ PCB๋ฅผ ์ ๋ฐ์ดํธํ๊ณ Queue๋ก ๋ณด๋ธ๋ค.
์๋ก ์คํํ ํ๋ก์ธ์ค๋ฅผ Process Scheduling์ผ๋ก ์ ํ๊ณ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค.
์๋ก ์คํํ ํ๋ก์ธ์ค์ PCB ๊ฐ์ผ๋ก ์์ ์ ์ํํ๋ค.
3) ์ข ๋ฃ ์กฐ๊ฑด
1. exit() -> ์ ์์ ์ธ ๊ฒฝ์ฐ
2. signal(interrupt)
3. kill
์ข ๋ฃ๋๋ฉด zombie, terminated ์ํ๋ก ๋จ์์์.
wait๋ฅผ ํตํด PCB๋ฅผ ํ์ํด๊ฐ์ผํจ. wait ์คํ๋๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค์๊ฒ PCB ๋ด์ ์ ๋ณด ์ ๋ฌ.
Q. ๋ง์ฝ ์์ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ถ๋ชจ๊ฐ ์ข ๋ฃ๋๋ฉด?
A. init ํ๋ก์ธ์ค๊ฐ ์๋ก์ด ๋ถ๋ชจ๊ฐ ๋๋ค. (์ ๋์ค, ๋ฆฌ๋ ์ค ๊ธฐ์ค)
7. Inter-Process Communication
ํ๋ก์ธ์ค๋ค ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์์
message passing๊ณผ shared memory, remote procedure call์ด ์์.
A์ B๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผํ๋๋ฐ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌ.
ํ๋ก์ธ์ค๋ค๋ผ๋ฆฌ ์ง์ ์ฃผ๊ณ ๋ฐ์ ์ ์์. Why? ํ๋ก์ธ์ค ๊ฐ ์๊ธฐ ์์ญ์ ์นจํดํด๋ฒ๋ฆฌ๋ฉด? ํดํน๊ณผ ๊ฐ์.
๋ฐ๋ผ์ ์ฃผ๊ณ ๋ฐ์ ๋ ๋งค๊ฐ์ฒด๊ฐ ์์ด์ผํจ.
1) Message Passing
์ฃผ๊ณ ๋ฐ๋ ๋งค๊ฐ์ฒด๊ฐ ์ปค๋์ธ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค A -> ์ปค๋ -> ํ๋ก์ธ์ค B
์ฅ์ : ์ฌ๋ฌ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ ์์ ์์ด ๋ณด๋ผ ์ ์๋ค.
๋จ์ : ์ด์์ฒด์ ๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ์ผ๋ฏ๋ก Mode Change๊ฐ ์ผ์ด๋์ผ ํ๋ค. (User Mode <-> System Mode)
๋ฐ๋ผ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. (์๋์ ์ผ๋ก)
2) Shared Memory
ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฑ
ํ๋ก์ธ์ค A <- ๊ณต์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ -> ํ๋ก์ธ์ค B
์ฅ์ : Mode Change ์์ด ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ์๊ฐ์ด ๋น ๋ฅด๋ค.
๋จ์ : ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ ํ ํ์๊ฐ ์์ด ๊ตฌ์ถ ๊ณผ์ ์ ์์ด์ ๋ณต์กํ๋ค.
๋ง์ฝ 1MB์ ๊ณต๊ฐ์ธ๋ฐ 1MB ์ด์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋๋ฉด?
8. Siganl, Interrupt
1. Signal : ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ด๋ฒคํธ๋ฅผ ์๋ฆฌ๋ ๊ฒ
2. Interrupt : OS๊ฐ ํ๋ก์ธ์ค์๊ฒ ์ด๋ฒคํธ๋ฅผ ์๋ฆฌ๋ ๊ฒ
3. System Call : ํ๋ก์ธ์ค๊ฐ OS์๊ฒ ์ด๋ฒคํธ๋ฅผ ์๋ฆฌ๋ ๊ฒ
'๐ CS > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] 6. I/O Management and Disk Scheduling (0) | 2021.04.20 |
---|---|
[OS] 5. Concurrency : Deadlock and Starvation (0) | 2021.04.20 |
[OS] 4. Concurrency : Mutual Exlusion and Synchronization (0) | 2021.04.19 |
[OS] 3. Threads (0) | 2021.04.19 |
[OS] 1. Operating System Overview (0) | 2021.04.19 |