Process Control
- ์คํ ๋ชจ๋
- User Mode
- ๋ฎ์ ๊ถํ์ ๊ฐ์ง๋ค.
- System Mode(=Kernel Mode, supervisor mode)
- ๋์ ๊ถํ์ ๊ฐ์ง๋ค.
- User Mode
์ด์ ์ Virtual Memory Space์ ๋ํด์ ๋ฐฐ์ธ ๋ ํด๋น ๊ณต๊ฐ์๋ ์ปค๋์ด ์์์์ ๊ธฐ์ตํด ๋ณด์. ์ฌ๊ธฐ์ ์๋ ์ปค๋์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๋ณต์ฌ๋ ๊ฒ์ผ๊น?
๊ทธ๋ ์ง ์๋ค. ์ค์ ๋ก๋ Main Memory ์์ ์ปค๋์ด ๋งคํ๋์ด ๊ทธ๋ ๊ฒ ๋ณด์ด๋ ๊ฒ ๋ฟ์ด๋ค.
ํ๋ก์ธ์ค๋ user mode์ kernel mode๋ฅผ ๋ฒ๊ฐ์ ๊ฐ๋ฉด์ Mode change๋ฅผ ์งํํ๋ค. ์ฆ, CPU๊ฐ ๋์์์ด ํ๋์ ํ๋ก์ธ์ค๋ง์ ์ฐจ์งํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์๋ค๋ ๊ฒ์ด๋ค.
์ค์ ๋ก๋ ๊ต์ฅํ ๋น ๋ฅธ ์๋๋ก Mode๋ฅผ ๋ฐ๊พธ์ด๊ฐ๋ค. ๋ค์ ๋งํด A๋ผ๋ task๊ฐ ์คํ๋๋ ๋์ B๋ผ๋ task๋ ์คํ๋ ์ ์๋ค.
ํ์ง๋ง, kernel mode๊ฐ ์คํ๋๋ ์๊ฐ์ ๋งค์ฐ ์งง๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๋๋ผ๊ธฐ์๋ ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
Steps for Process Creation
- ์๋ก์ด ํ๋ก์ธ์ค์ ๋ํ PCB๋ฅผ ์์ฑํ๋ค.
- PCB์ ๋ํ ๊ณ ์ ํ ์๋ณ์๋ฅผ ๋ถ์ฌํ๋ค.
- PCB(Process Control Block)์ ๊ฐ์ ์ค์ ํ๋ค.
- ์์ Process๋ ๋๊ฐ ๋ถ๋ชจ Process์ PCB ๊ฐ์ ๋ฌผ๋ ค๋ฐ๋๋ค.(100%๋ ์๋๋ค.)
- ํ๋ก์ธ์ค ๋ฆฌ์คํธ(Double Linked List)์ ์ฐ๊ฒฐํ๋ค.
- ํ์ ๋ ๋ถ๋ชจ ๊ด๊ณ ์ฐ๊ฒฐ
- ์ด๋, ์ฐ๊ฒฐ๋๋ ๊ฒ์ PCB์ด์ง Process๊ฐ ์๋๋ค.
- ๋ค๋ฅธ Data Structure๋ฅผ ๋ง๋ค์ด์ค๋ค.
- PCB๊ฐ ํ๋์ ๊ณ์ธต์ด ์๋ ๋ค์ค ๊ณ์ธต์ผ ๋ ์๋ธ ๊ณ์ธต์ ์ฐ๊ฒฐ์์ผ ์ฃผ๊ธฐ ์ํจ.
- User Context๋ฅผ ์์ฑํด ์ค๋ค. : time Consuming job
- Child Process๋ฅผ Ready State๋ก ํ ๋นํด ์ฃผ๊ธฐ ์ํด Child PCB๋ฅผ Ready Queue์์ ๋ฃ๋๋ค.
- Child Process์ Identifier๋ฅผ ๋ถ๋ชจ์๊ฒ ๋๋ ค์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ํ๋ก์ธ์ค๋ 0์ ๋ฆฌํดํ๋ค.
User Context๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๋ถ๋ถ์ ์์ธํ ์ดํด๋ณด์.
์ฐ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ Virtual Memory Space์ ์๋ ์ ๋ณด์ ๋ฐ๋ผ์ Main Memory๋ก ์ฎ๊ฒจ์ก์ ๊ฒ์ด๊ณ , code์ data, stack์ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค. ํด๋น ์ํ์์ PCB์์๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์์ ์๋ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์์ ๊ฒ์ด๊ณ ์ฌ๊ธฐ ์์ code์ data ๊ทธ๋ฆฌ๊ณ stack์ ์์ ์ฃผ์์ ๋ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค.
๋ง์ฝ ์ด๋ฌํ ์ํ์์ ์์ ํ๋ก์ธ์ค๋ฅผ _fork()_ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์.
์์ PCB๋ ๋๊ฐ ๋ถ๋ชจ PCB๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ ๋ด์์๋ ์๊ธฐ ์์ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ฒ ๋ ํ ๋ฐ ์ด๋ ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค์ ์ด์ง ์ฐจ์ด๊ฐ ์๋ค.
๋จผ์ data์ stack์ ๊ฒฝ์ฐ ์ด๊ธฐ์๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ data์ stack์ ๊ทธ๋๋ก ๊ฐ๋ฆฌํจ๋ค. ๊ทธ ํ์ data์ stack์ ๊ฐ๊ฐ ๋ณต์ฌํ์ฌ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๊ณ memory info table ๋ด์์์ ์ฐธ์กฐ ์์น๋ฅผ ์ฎ๊ธด๋ค.
ํ์ง๋ง, code์ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๋ถ๋ชจ์ ์ฐธ์กฐ๋ฅผ ๊ทธ๋๋ก ์ด์ด๊ฐ๋ค. ๊ทธ ์ด์ ๋ data์ stack๊ณผ ๋ฌ๋ฆฌ code๋ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ ์ฝ๋์ผ ๋ฟ์ด๋ฉฐ ์ค์ง์ ์ผ๋ก ๋ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
Copy On Write Mechanism
COW(Copy On Write) ๋ฉ์ปค๋์ฆ์ Copy๋ฅผ ํ๋ Write๊ฐ ์ผ์ด๋๋ ์ํฉ์์๋ง Copy๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฌด์จ ๋ง์ธ๊ฐ ํ๋ฉด, ์ด์ ์ User Context๋ฅผ ๋ง๋๋ ๋ถ๋ถ์์ ์์ ํ๋ก์ธ์ค ์์ฑ ์์ code๋ฅผ ์ ์ธํ data์ stack์ ๋งค๋ฒ ๋ณต์ฌํ์ฌ ๊ณต๊ฐ์ ํ ๋นํด ์ฃผ์๋ค.
ํ์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ๋ณ์๊ฐ ์ฌ์์ฑ๋๊ฑฐ๋ ์๋กญ๊ฒ ๋ง๋ค์ด์ง์ง ์์ ๋๋ ๋ถํ์ํ Copy๊ฐ ์ผ์ด๋ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด COW ๋ฉ์ปค๋์ฆ์ ๋์ ํ์ฌ Write๊ฐ ์ผ์ด๋๋ ์ํฉ ์์์๋ง Copy๋ฅผ ํ๋ค.
์ด๊ฒ ์ด๋ ์ํฉ ์์ ์ข์ผ๋ ํ๋ฉด, ์์ ํ๋ก์ธ์ค๊ฐ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ ์ํฉ์์ ํจ์จ์ ์ด๋ค. ์ฆ, ์๋ก์ด ์คํํ์ผ์ ํด๋น ์์ ํ๋ก์ธ์ค๊ฐ ์ํํ ์ ์๋๋ก ํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
์์ ํ๋ก์ธ์ค๊ฐ ์๋กญ๊ฒ ๋ง๋ค์ด์ง๊ณ COW์ ์ํ์ฌ stack๊ณผ data๊ฐ ๋ณต์ฌ๋์ง ์์ ์ํฉ์ด๋ค. ์ด๋ฌํ ์ํฉ ์์์ ์ด์ฐจํผ ์๋ก์ด ์คํํ์ผ๋ก ๋์ฒด๋ ๊ฒ์ด๋ผ๋ฉด ๊ตณ์ด ๋ฏธ๋ฆฌ ๋ณต์ฌํ ํ์ ์์ด ๋์ค์ ํ ๋ฒ์ ๋์ฒดํ๋ ๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ธ ๊ฒ์ด๋ค.
์ฆ, exec๊ฐ ๋์ํจ์ผ๋ก ์ธํด a.out์ ์คํํ์ผ์ new.exe๋ก ๋์ฒด๋ ๊ฒ์ด๋ค.
Booting a Computer
๋ฆฌ๋ ์ค ์ด์์ฒด์ ๊ฐ ๋ถํ ๋๋ ์ํฉ์ ๊ฐ์ ํด ๋ณด์.
์ ์์ด ๋ค์ด๊ฐ ์ํฉ์์ ROM์ด๋ผ๋ Read Only Memory์์ BIOS๊ฐ ์คํ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ํ๋์จ์ด ์ค๋ฅ๋ฅผ ๊ฒ์ฌํ๊ณ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์๋ Boot Loader๋ผ๋ ๊ฒ์ ํธ์ถํ๋ค.
Boot Loader๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋๋๊ณ ์ด์ ์ง์ง Kernel ์ด์์ฒด์ ๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ์ญํ ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์์ฒด์ ๋ ์์ถ๋ ์ด๋ฏธ์ง๋ฅผ ํ๊ณ , ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ด๊ธฐํํ ํ์ "init" ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค.
swapper(idle) process๋ ํ๋ก์ธ์ค๊ฐ ๋ง๋ ๊ฒ์ด ์๋๋ผ, ์ด์์ฒด์ ๊ฐ ์๋์ผ๋ก ๋ง๋ ํ๋ก์ธ์ค์ด๋ค. ์ฆ, ์ปค๋ ๋ด์ ์ฝ๋๋ฅผ ํตํด์ ๋ง๋ค์ด ๋ธ ๊ฒ์ด๋ค.
์ด ํ๋ก์ธ์ค๋ _fork()_๋ฅผ ํตํด ์ต์ด์ PID 1๋ฒ์ธ init ํ๋ก์ธ์ค๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ _exec()_๋ฅผ ํตํด์ ๊ทธ ์ญํ ์ ๋ง๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ค.
ํท๊ฐ๋ฆฌ๋ฉด ์ ๋๋ ๊ฒ์ _fork()_๋ฅผ ํตํด์ PCB์ ๊ฐ์ ์์๋ค์ ๋ง๋ค๊ณ , _exec()_๋ฅผ ํตํด ๋ญ์น๊ฐ ๊ต์ฒด๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
'๐ Knowledge > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ์์๋ณด๊ธฐ (2) (0) | 2024.03.18 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ค์์น(Process Swtich) (0) | 2024.03.17 |
[์ด์์ฒด์ ] Process Context์ ๋ํด์ ์์๋ณด์. (0) | 2024.03.16 |
[์ด์์ฒด์ ] ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ์ ๋ฆฌ (0) | 2024.03.13 |
[์ด์์ฒด์ ] Process Control Block์ด๋? (0) | 2024.03.09 |