
๐ ๊ทธ๋ฆผ ์ ์ฒด ์ค๋ช
- ์ด ๊ทธ๋ฆผ์ .exe ์คํํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ,
- ๊ทธ ์ฝ๋๊ฐ CPU์ ์ํด fetch โ decode โ execute ๋๋ ํ๋ฆ์ ์ค๋ช ํ๊ณ ์์ด.
๐ง ์ ์ฒด ํ๋ฆ ๋จ๊ณ๋ณ ์ค๋ช
โ ์คํํ์ผ a.exe๊ฐ DRAM(๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ)์ ์ ์ฌ
- ์: a.exe (์ฃผ์: 0x452320)
- โ๏ธ ํ๊ธฐ: "memory โ a.exe ์ ์ฌ๋จ"
โก **์ฝ๋(Code ์์ญ)**๊ฐ DRAM ๋ด์ ์์นํจ
- ์ฝ๋ ์์ญ์ Read-only, ์คํ ๊ฐ๋ฅํ ๋ช ๋ น์ด๋ค์ด ์ ์ฅ๋จ
โข CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ช ๋ น์ด fetch
- CPU ๋ด๋ถ ๊ตฌ์กฐ์์:
- Program Counter(PC): ํ์ฌ ์คํํ ๋ช ๋ น์ด ์ฃผ์ ์ ์ฅ
- Instruction Register(IR): ๋ช ๋ น์ด ๋ณด๊ด ํ decode
- โ๏ธ ํ๊ธฐ: โCPU fetch โ decode โ execute ์์๋ก ๋ช ๋ น ์ฒ๋ฆฌโ
โฃ Kernel ์์ญ์ ๋ณ๋ ๊ด๋ฆฌ
- ์ปค๋ ์ฝ๋๋ ์ฌ์ฉ์ ์์ญ๊ณผ ๋ถ๋ฆฌ๋์ด ๋ณดํธ๋จ
โ ์๊ธฐ ํฌ์ธํธ ์์ฝ
- ์คํํ์ผ(.exe)์ DRAM(๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ)์ ์ ์ฌ๋๋ค
- ์ฝ๋ ์์ญ์ read-only๋ก, CPU๊ฐ ๋ช ๋ น์ด๋ฅผ fetchํ๋ ๋์์ด๋ค
- CPU๋ fetch โ decode โ execute ์์๋ก ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค
- Program Counter๋ ๋ค์ ๋ช ๋ น์ด ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, IR์ ๋ช ๋ น์ด๊ฐ ๋ก๋๋์ด ์คํ๋๋ค
๐ก ๋ณด์ถฉ ์ค๋ช : ์คํ ํ๋ฆ ์ ๋ฆฌ
1๋จ๊ณ | ์คํํ์ผ a.exe๊ฐ ํ์ผ ์์คํ ์์ DRAM์ผ๋ก ๋ก๋๋จ |
2๋จ๊ณ | DRAM ๋ด ์ฝ๋ ์์ญ์ ๋ช ๋ น์ด ์ ์ฅ๋จ |
3๋จ๊ณ | CPU์ PC๊ฐ ํด๋น ์ฃผ์ ๊ฐ๋ฆฌํค๊ณ โ fetch |
4๋จ๊ณ | IR๋ก ๋ช ๋ น์ด ์ ๋ฌ โ decode โ execute |
5๋จ๊ณ | PC๋ ๋ค์ ๋ช ๋ น์ด ์ฃผ์๋ก ์๋ ์ฆ๊ฐ |
๐ ํ๋ก์ธ์ค์ ๊ฐ๋ (Process is a program in execution)

์ ์ฒด ์์ฝ
ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ฉฐ, CPU๊ฐ ์ด ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ํ์ํ ์ํ ์ ๋ณด์ ๋ฌถ์์ '๋ฌธ๋งฅ(context)'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํต์ฌ ๊ตฌ์ฑ ์์ ์ ๋ฆฌ
โถ ๋ฌธ๋งฅ(context)
- ํ๋ก์ธ์ค์ ์คํ ์ํ ์ ๋ณด ์ ์ฒด
- โ๏ธ "CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ์ ๋ณด"๋ผ๊ณ ํ๊ธฐํจ
- ๋ฌธ๋งฅ์๋ ๋ค์ ์ ๋ณด๋ค์ด ํฌํจ๋จ:
- Program Counter (PC): ๋ค์ ์คํํ ๋ช ๋ น์ด ์ฃผ์
- ๋ ์ง์คํฐ ๊ฐ๋ค (R1, R2, ..., Rn): ์ฐ์ฐ ๋์ค์ ์ค๊ฐ๊ฐ
- ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ ์ ๋ณด (code, data, stack)
โถ PCB (Process Control Block)
- ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ๋ก์ธ์ค ์ ํ ์ ์ด์ ํ๋ก์ธ์ค์ context๋ PCB์ ์ ์ฅ
- ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋ ํด๋น PCB์์ context๋ฅผ ๋ณต์ํจ
- โ๏ธ "ํ๋ก์ธ์ค ๋ฌธ๋งฅ ์ ์ฅ ๊ตฌ์กฐ"
โถ Program Counter (PC)
- ํ์ฌ CPU๊ฐ ์คํํ ๋ค์ ๋ช ๋ น์ด ์ฃผ์ ์ ์ฅ
- โ๏ธ "ํ๋ก๊ทธ๋จ ์นด์ดํฐ: ๋ช ๋ น์ด ์์ ๊ธฐ์ต", "jumpํ ์ฃผ์๋ ํฌํจ"์ด๋ผ๊ณ ์ ํ ์์
โถ ์ปค๋ ์คํ (kernel stack)
- ์์คํ ์ฝ, ์ธํฐ๋ฝํธ ๋ฑ์์ ์ฌ์ฉ๋๋ ์คํ
- ์ฌ์ฉ์ ์คํ๊ณผ ๋ณ๊ฐ๋ก ์กด์ฌ
- โ๏ธ "system call ์ user โ kernel stack์ผ๋ก switch" ๋ผ๊ณ ํ์๋จ
ํ๋ฆ ์์ฝ
- CPU๋ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ PC์ ๋ ์ง์คํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์์
- ์ปจํ
์คํธ ์ค์์นญ ์:
- ํ์ฌ ํ๋ก์ธ์ค์ PC/๋ ์ง์คํฐ ๊ฐ์ PCB์ ์ ์ฅ
- ๋ค์ ์คํํ ํ๋ก์ธ์ค์ PCB์์ ๊ฐ ์ฝ์ด์ ๋ ์ง์คํฐ/PC ๋ณต์
- ์์คํ
์ฝ ๋ฐ์ ์:
- ์ฌ์ฉ์ ๋ชจ๋ โ ์ปค๋ ๋ชจ๋ ์ ํ
- ์ปค๋ ์คํ ์ฌ์ฉ, ์ดํ ๋ค์ ์ฌ์ฉ์ ๋ชจ๋๋ก ๋ณต๊ท
โ ์๊ธฐ ํฌ์ธํธ
- ํ๋ก์ธ์ค = ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
- ๋ฌธ๋งฅ(context) = ํ๋ก์ธ์ค์ ์คํ ์ํ ์ ๋ณด ์ ์ฒด
- Program Counter๋ ๋ค์ ๋ช ๋ น์ด ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ
- PCB๋ ํ๋ก์ธ์ค ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ปค๋ ๋ด๋ถ ์๋ฃ๊ตฌ์กฐ
- ์์คํ ์ฝ ์ user stack โ kernel stack์ผ๋ก ์ ํ๋๋ค
- CPU๋ ์ปจํ ์คํธ ์ค์์นญ ์ PCB๋ฅผ ์ด์ฉํด ๋ฌธ๋งฅ์ ์ ์ฅ/๋ณต์ํ๋ค
๐ ํ๋ก์ธ์ค์ ์ํ (Process States)

์ ์ฒด ๊ตฌ์กฐ ๊ฐ์
ํ๋ก์ธ์ค๋ ์คํ ์ค ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์ํ๊ฐ ๋ณํํ๋ฉฐ, ๊ฐ ์ํ๋ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ํ(queue)๋ฅผ ํตํด ์ ์ด๋๋ค.
์ฃผ์ ์ํ ์ค๋ช
โถ New
- ์๋ก ์์ฑ๋ ํ๋ก์ธ์ค
- โ๏ธ ํ๊ธฐ: NEW ์ํ์์ ready๋ก ์ง์ ํจ
โถ Ready
- ์คํ ์ค๋น ์๋ฃ๋ ์ํ
- Ready Queue์ ๋ค์ด๊ฐ ์์
- โ๏ธ ํ๊ธฐ: "Ready โ Running ์ํ๋ก ์ง์ ์ CPU ํ ๋น๋ฐ์"
โถ Running
- CPU๋ฅผ ์ค์ ๋ก ์ ์ ํ๊ณ ์๋ ์ํ
- ์ค์ง ํ๋์ ํ๋ก์ธ์ค๋ง Running ์ํ์ผ ์ ์์
- โ๏ธ ํ๊ธฐ: CPU๊ฐ process ์คํ ์ค
โถ Blocked
- I/O ์์ฒญ ๋ฑ์ผ๋ก ์ธํด ๋๊ธฐ ์ค์ธ ์ํ
- CPU๋ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, I/O Queue์ ๋ค์ด๊ฐ ์์
- โ๏ธ ํ๊ธฐ: ์์ ์์ฒญํ๋ฉด blocked ์ํ๋ก ๋น ์ง โ ์๋ฃ๋๋ฉด ๋ค์ Ready
ํ ์ค๋ช ๋ฐ ํ๋ฆ
- ๊ฐ ์ํ๋ ์ด์์ฒด์ ๊ฐ **ํ(queue)**๋ก ๊ด๋ฆฌํจ:
- Ready Queue: ์คํ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค ๋ชจ์ (ex. A, B, C, D, E)
- Disk/Keyboard I/O Queue: I/O ์์ฒญ ์ค์ธ ํ๋ก์ธ์ค ๋ชจ์ (blocked)
- Running ์ค I/O ์์ฒญ โ ํด๋น I/O queue๋ก ์ด๋ (Blocked ์ํ)
- I/O ์์ ์๋ฃ ์ โ ์ธํฐ๋ฝํธ๋ก OS์ ํต๋ณด โ ๋ค์ Ready Queue๋ก ์ด๋
์ํ ์ ์ด ํ๋ฆ ์์ฝ (ํ๊ธฐ ๋ฐ์)
- โ๏ธ ํ๋ก์ธ์ค๋ ready โ running โ blocked โ ๋ค์ ready ์์ผ๋ก ์ํ๊ฐ ๊ณ์ ๋ณํจ
- โ๏ธ CPU๊ฐ running ์ค์ธ ์ํ์์ context switching ๋ฐ์ ์ โ ๋ค์ ready๋ก ์ด๋
- โ๏ธ I/O๊ฐ ๋๋์ผ blocked ์ํ์์ ๋ฒ์ด๋ ์ ์์ (์ธํฐ๋ฝํธ ๋ฐ์์ผ๋ก ์ ํ)
โ ์๊ธฐ ํฌ์ธํธ
- Ready: ์คํ ์ค๋น ์ํ (CPU ๊ธฐ๋ค๋ฆผ)
- Running: CPU๊ฐ ํ์ฌ ์คํ ์ค์ธ ์ํ
- Blocked: I/O ๋ฑ ์์ ๋๊ธฐ ์ํ (CPU ๋ฏธ์ฌ์ฉ)
- ์ธํฐ๋ฝํธ ๋ฐ์ ์ Blocked โ Ready๋ก ์ํ ์ ์ด
- Context switching ๋ฐ์ ์ Running โ Ready๋ก ์ ์ด๋จ
- Ready Queue / I/O Queue๋ ๊ฐ ์ํ๋ฅผ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
๐ ๋ฌธ๋งฅ ๊ตํ (Context Switch)

์ ์ฒด ๊ฐ์
๋ฌธ๋งฅ ๊ตํ์ด๋ CPU๊ฐ ํ ํ๋ก์ธ์ค์ ์คํ ์ํ(context)๋ฅผ PCB์ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ณต์ํ์ฌ ์คํ์ ์ ํํ๋ ๊ณผ์ ์ด๋ค.
ํต์ฌ ๊ตฌ์ฑ ์์ ์ค๋ช
โถ CPU ๋ด๋ถ ๊ตฌ์ฑ (๋ ์ง์คํฐ, PC, ALU)
- Program Counter (PC): ๋ค์ ๋ช ๋ น์ด ์ฃผ์
- ๋ ์ง์คํฐ๋ค (R1~Rn): ์ฐ์ฐ ๋์ค์ ๊ฐ ์ ์ฅ
- ALU: ์ฐ์ฐ ์ฅ์น
- โ๏ธ ํ๊ธฐ: "PC + R ๊ฐ์ PCB์ ๋ฐฑ์ / ๋ณต์"
โถ Process A, B์ PCB
- ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ ์์ ์ PCB์ PC, R1~Rn ๊ฐ์ ์ ์ฅํจ
- ํ๋ก์ธ์ค ์ ํ ์ PCB ๊ฐ์ด ๊ต์ฒด๋จ
ํ๋ฆ ์ ๋ฆฌ
โ Process A ์คํ ์ค
- CPU๋ A์ ๋ ์ง์คํฐ/PC ๊ฐ์ ๊ฐ์ง๊ณ ์คํ ์ค
- ๋ฌธ๋งฅ ์ค์์น ๋ฐ์ํ๋ฉด โ ํ์ฌ ์ํ๋ฅผ A์ PCB์ ์ ์ฅ (โ๏ธ "backup")
โก PCB ์ค์์น
- A์ PCB โ ์ ์ฅ
- B์ PCB โ ๋ณต์ (โ๏ธ "restore")
โข Process B๋ก ์ ํ๋จ
- B์ ๋ ์ง์คํฐ/PC ๊ฐ์ด CPU๋ก ๋ก๋๋จ
- CPU๋ ์ด์ B์ ๋ช ๋ น์ด๋ถํฐ ์คํ ์์
โ ์๊ธฐ ํฌ์ธํธ
- Context Switch๋ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ํ(context)๋ฅผ PCB์ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ณต์ํ๋ ์์ ์ด๋ค
- context์๋ Program Counter์ ๋ชจ๋ ๋ ์ง์คํฐ ๊ฐ์ด ํฌํจ๋๋ค
- context switch ์ CPU๋ backup โ restore์ ๊ณผ์ ์ ๊ฑฐ์น๋ค
- PCB๋ ๊ฐ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ๋ด๋ ์ปค๋์ ์๋ฃ๊ตฌ์กฐ๋ค
- context switch๋ ์๊ฐ์ด ๋ง์ด ๋๋ ์์ ์ด๋ค (๋น์ฉ ์์)
ํ๊ธฐ ์ ๋ฆฌ ํฌ์ธํธ
- โ๏ธ โbackup: PC, R ๊ฐ A์ ์ ์ฅ / restore: B์ PCB์์ PC, R ๊ฐ ๋ณต์โ
- โ๏ธ โALU ์ฐ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ ๋ ์ง์คํฐ์ ์ ์ฅ๋๋ฏ๋ก ์ค์ํจโ
- โ๏ธ โ๋ฌธ๋งฅ ๊ตํ ์ ์ ์ฅ/๋ณต์๋ง ํ์ง, ๋ช ๋ น์ด ์คํ์ ํ์ง ์์โ
๐ ๋ฌธ๋งฅ ๊ตํ (Context Switch)์ ์กฐ๊ฑด๊ณผ ๋ฐ์ ์์

์ ์ฒด ์์ฝ
๋ฌธ๋งฅ ๊ตํ์ด๋ ๋ฐ๋์ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋๊ธธ ๋๋ง ๋ฐ์ํ๋ฉฐ,
๋จ์ํ ์ปค๋ ๋ชจ๋๋ก ์ง์ ํ๋ ๋ชจ๋ ์ํฉ์์ ๋ฐ์ํ๋ ๊ฑด ์๋๋ค!
์ํฉ โ : ์ปค๋ ์ง์ ์ ํ์ง๋ง Context Switch๋ ์์
ํ๋ฆ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค A ์คํ ์ค โ system call ๋๋ interrupt ๋ฐ์
- ์ปค๋ ๋ชจ๋๋ก ์ ํ๋จ
- A์ ์ปค๋ ์ฝ๋ ์คํ
- ๋ค์ A์ ์ฌ์ฉ์ ๋ชจ๋๋ก ๋ณต๊ท
โ๏ธ ํ๊ธฐ ์ค๋ช
- โprocess A๋ ๊ณ์ ์คํ๋จ (AโA), context switch Xโ
- โ๋จ์ ์ปค๋ ์ง์ ๋ง์ผ๋ก PCB save ํ์ Xโ
์ํฉ โก: ์ง์ง Context Switch ๋ฐ์
ํ๋ฆ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค A ์คํ ์ค โ system call ๋๋ interrupt ๋ฐ์
- ์ปค๋ ์ง์
- ์ค์ผ์ค๋ฌ๊ฐ A ์ค๋จํ๊ณ B ์ ํ
- โ A์ context ์ ์ฅ + B์ context ๋ณต์
โ๏ธ ํ๊ธฐ ์ค๋ช
- โA โ B๋ก ๊ต์ฒด, context switch Oโ
- โPCB ์ ์ฅ + ๋ ์ง์คํฐ/PC ๊ฐ ๋ณต์ ํ์โ
- โ์ค์ผ์ค๋ฌ๊ฐ ๊ฐ์ ํ ๊ฒฝ์ฐ๋ง ์ง์ง ๋ฌธ๋งฅ ๊ตํโ
โ ์๊ธฐ ํฌ์ธํธ
- ์ปค๋ ๋ชจ๋ ์ง์ ์ด ํญ์ context switch๋ฅผ ์๋ฏธํ์ง๋ ์๋๋ค
- ๋ฌธ๋งฅ ๊ตํ์ CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋๊ธธ ๋ ๋ฐ์
- context switch ์์๋ PCB์ PC + ๋ ์ง์คํฐ ๊ฐ ์ ์ฅ/๋ณต์
- A โ A์ธ ๊ฒฝ์ฐ (์ปค๋ ์ง์ ๋ง ํ๊ณ ๋ค์ ์ฌ์ฉ์ ๋ชจ๋ ๋ณต๊ท)๋ ๋ฌธ๋งฅ ๊ตํ ์๋
- A โ B์ธ ๊ฒฝ์ฐ์๋ง ๋ฌธ๋งฅ ๊ตํ ๋ฐ์
๐ฆ Ready Queue์ Device Queue
๊ตฌ์กฐ ์ค๋ช
- Ready Queue: ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค ๋ฆฌ์คํธ
- ์: PCB A, B, C, D
- โ๏ธ ํ๊ธฐ: โlinked list๋ก ๊ด๋ฆฌ๋จโ
- Device Queue (ex. Disk I/O Queue): ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ๋ฆฌ์คํธ
- ์: ํค๋ณด๋, ๋์คํฌ, ํ๋ฆฐํฐ ๋ฑ ๊ฐ๊ฐ์ ์ฅ์น๋ง๋ค ํ ์กด์ฌ
ํ๋ฆ ์์
- Process A๊ฐ read() ์์คํ ์ฝ ํธ์ถ
- โ I/O ์์ฒญ โ A๋ blocked ์ํ๋ก Disk Queue์ ๋ค์ด๊ฐ
- โ ๋ค๋ฅธ ํ๋ก์ธ์ค(B)๊ฐ CPU ์ฌ์ฉํ๊ฒ ๋จ
- โ๏ธ ํ๊ธฐ: โkeyboard interrupt ๋ฐ์ ์, A๊ฐ stop๋๊ณ B๊ฐ ์คํ๋จโ
โ ์๊ธฐ ํฌ์ธํธ
- Ready Queue๋ ์คํ ์ค๋น ์ํ์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌ
- Device Queue๋ ์์ ์์ฒญ ์ค์ธ blocked ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌ
- read() ๋ฑ I/O ์์ฒญ ์ ํด๋น device queue๋ก ์ด๋
- I/O ์๋ฃ ์ ์ธํฐ๋ฝํธ โ ๋ค์ Ready Queue๋ก ์ด๋
๐ ํ๋ก์ธ์ค ์ํ๋ (Process State Diagram โ ํ์ฅ ๋ชจ๋ธ)

์ ์ฒด ํ๋ฆ ๊ฐ์
ํ๋ก์ธ์ค๋ ์คํ ํ๋ฆ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ํ๋ก ์ ์ด๋๋ฉฐ, ์คํ ์ํ๋ฟ ์๋๋ผ ์ค์ง(suspend) ์ํ๋ ์กด์ฌํ๋ค.
์ํ ๋ชฉ๋ก๊ณผ ์๋ฏธ
New | ์์ฑ ์ค์ธ ์ํ (์์ง ์ค๋น ์ ๋จ) |
Ready | ์คํ ๊ฐ๋ฅํ ์ํ (CPU ๋๊ธฐ ์ค) |
Running (User mode) | CPU ์ฌ์ฉ ์ค (์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์คํ) |
Running (Monitor mode) | ์ปค๋ ๋ชจ๋ ์ง์ ํ ์์คํ ์ฝ, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ์ค |
Blocked (Sleep, wait) | I/O ์๋ฃ ๋ฑ ์ด๋ฒคํธ ๋๊ธฐ ์ค |
Exit | ํ๋ก์ธ์ค ์ข ๋ฃ ์ํ |
Suspended Ready | ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ฌ์ง๋ง ์คํ ์ค๋น ์ํ |
Suspended Blocked | ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ฌ๊ณ , ์ด๋ฒคํธ๋ ๊ธฐ๋ค๋ฆฌ๋ ์ํ |
์ํ ์ ์ด ํ๋ฆ ์ ๋ฆฌ (โ๋ ์ ์ด ๋ฐฉํฅ)
- New โ Ready: ํ๋ก์ธ์ค๊ฐ ์ค๋น ์๋ฃ๋จ
โ๏ธ ํ๊ธฐ: โ๊ธฐ๋ค๋ฆฌ๋ ์ค ์ํ ์๋!โ - Ready โ Running (User mode): CPU ํ ๋น๋จ
โ โ๏ธ ํ๊ธฐ: โCPU ํ ๋น๋ฐ์ ์คํโ - Running (User) โ Monitor mode: ์์คํ
์ฝ ๋๋ ์ธํฐ๋ฝํธ ๋ฐ์
โ โ๏ธ โtrap, system call ๋ฑ์ผ๋ก ์ปค๋ ์ง์ โ - Running โ Blocked: I/O ์์ฒญ ๋ฑ์ผ๋ก ๋๊ธฐ ์ํ
โ๏ธ โevent ๋๊ธฐ (ex. ๋์คํฌ, ํค๋ณด๋)โ - Running โ Ready: ํ ํ๋ก์ธ์ค์ ์ํด ์ ์ ๋จ (preempted)
โ๏ธ โํ ๋น์๊ฐ ์ด๊ณผ๋ก ์ ํ๋จโ - Blocked โ Ready: ์ด๋ฒคํธ ๋ฐ์ (I/O ์๋ฃ) โ ๊นจ์ด๋จ
โ๏ธ โinterrupt ๋ฐ์์ผ๋ก ready ๋ณต๊ทโ - Running โ Exit: ํ๋ก์ธ์ค ์ข
๋ฃ
โ๏ธ โexit() ํธ์ถ ๋ฑโ - Blocked โ Suspended Blocked: ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฑ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋จ (swap out)
- Suspended Blocked โ Blocked: ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ผ์ค๋ฉด (swap in)
- Ready โ Suspended Ready: ๋ฉ๋ชจ๋ฆฌ ์ํ์ ๋ฐ๋ผ swap in/out
โ ์๊ธฐ ํฌ์ธํธ
- New โ Ready๋ "์์ฑ ์๋ฃ"๋ฅผ ์๋ฏธํ๊ณ ์คํ ๋๊ธฐ ์์
- Ready โ Running์ ์ค์ผ์ค๋ฌ์ ์ํด CPU ํ ๋น๋จ
- Running โ Monitor mode๋ ์์คํ ์ฝ์ด๋ ์ธํฐ๋ฝํธ์ ์ํด ์ง์
- Running โ Blocked๋ I/O ๋ฑ์ ์ด๋ฒคํธ ๋๊ธฐ (CPU ๋ฐ๋ฉ)
- Running โ Ready๋ ํ ํ๋ก์ธ์ค์ ์ํด ์ ์ ๋ ๋
- Blocked ์ํ์์ I/O ์๋ฃ ์ โ Ready ๋ณต๊ท (์ธํฐ๋ฝํธ)
- Suspended๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ ์ํ์ด๋ฉฐ, swap์ผ๋ก ๋ณต๊ท ๊ฐ๋ฅ
- Exit์ ํ๋ก์ธ์ค๊ฐ ์์ ํ ์ข ๋ฃ๋ ์ํ
ํ๊ธฐ ์์ฝ ํฌํจ ํต์ฌ ์ ๋ฆฌ
- โ๏ธ โinterrupt & system call ์์ = trap โ ์ปค๋ ์ง์ โ
- โ๏ธ โsuspended๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฑ์ ์ด์ ๋ก ๋ฐ์โ
- โ๏ธ โexit์ ์์ ํ ์ข ๋ฃ๋ ์ํ๋ก inactive ์์ญ ์ง์ โ
๐ Thread (์ค๋ ๋)

์ ์ฒด ์์ฝ
Thread๋ CPU ์คํ์ ์ํ ์ต์ ๋จ์์ด๋ฉฐ, ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ๊ฐ๋ฒผ์ด ์์ ๋จ์์ด๋ค.
Thread์ ์ ์
- ์ฌ๋ผ์ด๋ ์ ์:
- โA thread (or lightweight process) is a basic unit of CPU utilization.โ
- โ๏ธ ํ๊ธฐ:
- โ= PC, register, memory 3๊ฐ ๊ฐ์ง๊ณ ๋ค๋โ
- โcall stack ๋จ์๋ก ๋ฌธ๋งฅ ์ ์ฅ/๋ณต์๋๋คโ
โ Thread์ ๊ตฌ์ฑ ์์ (๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง)
- Program Counter (PC): ๋ค์์ ์คํํ ๋ช ๋ น์ด ์ฃผ์
- Register Set: ์ฐ์ฐ ์ค ํ์ํ ๋ ์ง์คํฐ ๊ฐ
- Stack Space: ํจ์ ํธ์ถ/๋ณต๊ท ์ํ ๊ณต๊ฐ
โก๏ธ ์ด๋ค์ ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์
โ ์ค๋ ๋ ๊ฐ ๊ณต์ ํ๋ ์์ (ํ๋์ ํ๋ก์ธ์ค ๋ด์์)
- Code Section: ์คํํ ํ๋ก๊ทธ๋จ ์ฝ๋ (๊ณต์ฉ)
- Data Section: ์ ์ญ ๋ณ์ ๋ฑ (๊ณต์ฉ)
- OS Resources: ์ด๋ฆฐ ํ์ผ, ํต์ ์ฑ๋ ๋ฑ (๊ณต์ฉ)
โก๏ธ ์ด๋ค์ ํ๋ก์ธ์ค ์ ์ฒด์ ์ํจ, ๋ชจ๋ ์ค๋ ๋๊ฐ ํจ๊ป ์ ๊ทผ
ํ๊ธฐ ํฌํจ ์์ฝ
- โ๏ธ "Thread๋ lightweight process์ด๋ฉฐ, process ํ๋๋น ์ฌ๋ฌ thread ๊ฐ์ง ์ ์์"
- โ๏ธ "ํ๋ก์ธ์ค๋ ํ๋์ง๋ง thread๋ ์ฌ๋ฌ ๊ฐ ์์ฑ ๊ฐ๋ฅ (์: Thread1, Thread2, Thread3)"
- โ๏ธ "process ๋จ์๋ก ์์ ๊ณต์ , thread ๋จ์๋ก ์คํ ์ํ ๊ด๋ฆฌ"
โ ์๊ธฐ ํฌ์ธํธ
- Thread๋ CPU ์ค์ผ์ค๋ง์ ์ต์ ๋จ์์ด๋ฉฐ, PC/๋ ์ง์คํฐ/์คํ์ ๊ฐ๋ณ๋ก ๊ฐ์ง๋ค
- Thread๋ ๊ฐ์ ํ๋ก์ธ์ค ๋ด ๋ค๋ฅธ ์ค๋ ๋์ ์ฝ๋/๋ฐ์ดํฐ/OS ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋ค
- Thread๋ lightweight process๋ก ๋ถ๋ฆฌ๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค ์์ ์ฌ๋ฌ ๊ฐ ์กด์ฌ ๊ฐ๋ฅํ๋ค
- ๊ฐ Thread๋ call stack ๋จ์๋ก ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ์ ์งํ๋ค
๐ Thread์ ๊ตฌ์กฐ์ ๋ฉํฐ์ค๋ ๋ฉ์ ๊ฐ๋

์ ์ฒด ์์ฝ
ํ๋์ ํ๋ก์ธ์ค ์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ฉฐ, ๊ณตํต ์ฃผ์ ๊ณต๊ฐ(code, data)์ ๊ณต์ ํ๊ณ , ๊ฐ๋ณ ์คํ์ ๊ฐ์ง๋ค.
์ฃผ์ ๊ณต๊ฐ ๊ตฌ์กฐ
- ๊ณตํต ์์ญ:
- code, data, heap์ ๋ชจ๋ thread๊ฐ ๊ณต์ ํจ
- ๊ฐ๋ณ ์์ญ:
- stack์ ๊ฐ thread๋ง๋ค ๊ฐ๋ณ๋ก ์กด์ฌ
- โ๏ธ ํ๊ธฐ: โ์คํ์ ๊ฐ์ ๋ฐ๋ก! (context ์ ์ฅ ๋๋ฌธ)โ
PCB (Process Control Block)์ Thread
- ํ๋์ ํ๋ก์ธ์ค์ ๋ํด ํ๋์ PCB ์กด์ฌ
- PCB ๋ด๋ถ์ ์ฌ๋ฌ ๊ฐ์ **TCB(Thread Control Block)**์ฒ๋ผ ์ค๋ ๋ ์ ๋ณด๊ฐ ํฌํจ๋จ
- ๊ฐ ์ค๋ ๋๋ ์๊ธฐ๋ง์ PC, register, stack์ ๊ฐ๊ณ , PCB์ ์์์ ํจ๊ป ์ฌ์ฉ
์์ ๊ตฌ์กฐ ์ค๋ช
- โ๏ธ ํ๊ธฐ:
- โThread1~3 โ ๊ณตํต ๋ฉ๋ชจ๋ฆฌ(code/data), ๊ฐ๋ณ ์คํ ์ฌ์ฉโ
- โThread๊ฐ ๊ต์ฒด๋ ๋ register์ stack๋ง ๊ต์ฒด๋๋ฉด ๋จโ
- โcontext switch๋ Thread ๋จ์๋ก ๊ฐ๋ฅโ
- ๊ทธ๋ฆผ ์ค๋ช
:
- PCB๋ ์ ์ฒด ํ๋ก์ธ์ค ์ํ๋ฅผ ํฌํจ
- Thread1, Thread2, Thread3๋ ๊ฐ์ ํ๋ก์ธ์ค ๋ด ์ค๋ ๋
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ (๋ธ๋ผ์ฐ์ ์์)
- Browser process = ํ๋์ ํ๋ก์ธ์ค
- ๊ฐ ํญ์ Thread1, Thread2, ...
- ๊ณตํต ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉํ๋ฉฐ, ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋์
- โ๏ธ ํ๊ธฐ: โ์๋ฒ ์๋ต ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ํญ์ด block๋์ง ์์โ
โ ์๊ธฐ ํฌ์ธํธ
- Thread๋ stack๊ณผ register set์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ๊ณ , code/data/OS์์์ ๊ณต์ ํ๋ค
- ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์กด์ฌํ ์ ์๊ณ , ์ด๋ ๋ฉํฐ์ค๋ ๋ฉ ๊ตฌ์กฐ๋ค
- PCB๋ ํ๋ก์ธ์ค ๋จ์๋ก ์กด์ฌํ๋ฉฐ, Thread์ context๋ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ง๋๋ค
- ๋ฉํฐ์ค๋ ๋๋ CPU ์์์ ํจ์จ์ ์ผ๋ก ์ฐ๊ณ , ๋ณ๋ ฌ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค
- ๋ฉํฐ์ค๋ ๋ ๊ตฌ์กฐ์์๋ ํ ์ค๋ ๋์ block์ด ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๋ฉ์ถ๊ฒ ํ์ง ์๋๋ค
๐ Thread์ ๋ณ๋ ฌ์ฑ ๋ฐ ๋ฉํฐ์ค๋ ๋ฉ ์ฅ์

์ ์ฒด ์์ฝ
๋ฉํฐ์ค๋ ๋๋ ํ๋์ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ฉฐ, ๋ณ๋ ฌ์ฑ๊ณผ ์๋ต์ฑ์ ํฌ๊ฒ ํฅ์์ํจ๋ค.
์ค๋ช ์ ๋ฆฌ
- ๋ค์ค ์ค๋ ๋๋ก ๊ตฌ์ฑ๋ ํ์คํฌ๋ ์๋ฒ ์ค๋ ๋ ํ๋๊ฐ blocked(waiting) ์ํ์ฌ๋
โ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์คํ(running) ์ํ์์ ๊ณ์ ์์ ๊ฐ๋ฅ - ์ฆ, ์ค๋ ๋๋ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ, ๋ณ๋ ฌ์ฑ ์ ๊ณต
โ ์๊ธฐ ํฌ์ธํธ
- ๋ฉํฐ์ค๋ ๋๋ ํ๋์ ํ๋ก์ธ์ค์์ ์ฌ๋ฌ ํ๋ฆ์ ๋์์ ์คํํ ์ ์๋ค
- ์ค๋ ๋ ํ๋๊ฐ blocked ์ํ์ฌ๋, ๋ค๋ฅธ ์ค๋ ๋๋ ๊ณ์ running ๊ฐ๋ฅํ๋ค
- ์ด๋ฅผ ํตํด throughput(์ฒ๋ฆฌ๋)๊ณผ responsiveness(์๋ต์ฑ)์ด ํฅ์๋๋ค
- ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ์ฑ์ ๋์ผ ์ ์๋ค
โ๏ธ ํ๊ธฐ ์ ๋ฆฌ
- โT1์ด blocked ๋์ด๋ T2, T3๋ ๊ณ์ ์๋ ๊ฐ๋ฅโ
- โ๋ธ๋ผ์ฐ์ ์์ T1์ ๋ก๋ฉ, T2๋ ์ฌ์ฉ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ฐ๋ฅโ
- โserver๊ฐ ์๋ต ๋๋ฆด ๋๋ browser๋ ์๋ ์ ์ง๋จโ
- โCPU ํจ์จ ํฅ์โ
์ค๋ฅธ์ชฝ ๋์ (์ค๋ ๋ ํธ๋ฆฌ ๊ตฌ์กฐ)
- ํ๋์ ํ๋ก์ธ์ค(P)์์ ์ฌ๋ฌ ์ค๋ ๋(T)๊ฐ ํ์๋จ
- P โ T1, T2, T3 โฆ ๊ตฌ์กฐ๋ก ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ์คํ ํ๋ฆ ๊ฐ์ง
- PCB๋ ๊ณตํต, stack์ ์ค๋ ๋๋ง๋ค ๋ฐ๋ก
๋ธ๋ผ์ฐ์ ์์ ๋ค์ ์์ฝ
- Browser process = ํ๋์ ํ๋ก์ธ์ค
- Tab 1 โ Thread 1
Tab 2 โ Thread 2
Tab 3 โ Thread 3 - T1์ด ์๋ฒ ์๋ต ๊ธฐ๋ค๋ฆฌ๋ ๋์ T2, T3๋ ๋ฉ์ฉกํ ์คํ๋จ
- ์ด๋ก ์ธํด โํ ํญ ๋ฌธ์ ๋ก ์ ์ฒด ๋ธ๋ผ์ฐ์ ๋ฉ์ถ์ง ์์โ
'CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ch06. Process Synchronization (0) | 2025.04.21 |
---|---|
[์ด์์ฒด์ ] ch05. CPU Scheduling (0) | 2025.04.21 |
[์ด์์ฒด์ ] ch04. Process Management (0) | 2025.04.21 |
[์ด์์ฒด์ ] ch02. System structure & program excution (0) | 2025.04.21 |
[์ด์์ฒด์ ] ch01. Introduction to Operating Systems (0) | 2025.04.21 |