๋ชฉ์ฐจ
Process API
ํ๋ก์ธ์ค ์์ฑยท์ข ๋ฃ API
- fork(): ๋ถ๋ชจ ํ๋ก์ธ์ค์๋ ์์ PID(>0), ์์ ํ๋ก์ธ์ค์๋ 0์ ๋ฐํํ๋ฉฐ, ์คํจ ์ โ1 ๋ฐํ ๋ฐ errno ์ค์
- exec*() ๊ณ์ด: execvp(), execl(), execle() ๋ฑ์ผ๋ก ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์์ ํ ์๋ก์ด ํ๋ก๊ทธ๋จ ์ด๋ฏธ์ง๋ก ๋ฎ์ด์. ์ด๋ ค ์๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ PID๋ ๊ทธ๋๋ก ์ ์ง๋จ
- wait() / waitpid(): ๋ถ๋ชจ๊ฐ ์์ ํ๋ก์ธ์ค์ ์ข ๋ฃ๋ฅผ ๋๊ธฐํ๋ฉฐ, ๋ฐํ๊ฐ์ผ๋ก ์ข ๋ฃ๋ ์์์ PID๋ฅผ ๋ฐ๊ณ , WIFEXITED, WEXITSTATUS ๋งคํฌ๋ก๋ก ์ข ๋ฃ ์ฝ๋๋ฅผ ํด์
์๊ทธ๋(signal) API
- kill(pid, sig): ํน์ ํ๋ก์ธ์ค๋ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ์๊ทธ๋ ์ ์ก (์: SIGINT, SIGTSTP). ์ผ๋ฐ ์ฌ์ฉ์๋ ๋์ผ UID ํ๋ก์ธ์ค์๋ง, root๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์๊ทธ๋ ์ก์ ๊ฐ๋ฅ
- signal(sig, handler): ์ฌ์ฉ์ ์ ์ ์๊ทธ๋ ํธ๋ค๋ฌ ๋ฑ๋ก. ๋น๋๊ธฐ ์ด๋ฒคํธ(ํ์ด๋จธ, I/O ์๋ฃ ๋ฑ)๋ฅผ ํ๋ก์ธ์ค์ ์ ๋ฌ
๊ถํ๊ณผ ๊ฒฉ๋ฆฌ
UID ๊ธฐ๋ฐ ๊ถํ ๊ฒ์ฌ๋ก, ์ฌ์ฉ์๋ ์์ ์ ํ๋ก์ธ์ค๋ง ์ ์ด
์ํผ์ ์ (root)๋ง์ด ์์คํ
์ ์ฒด์ ํ๋ก์ธ์ค ๊ด๋ฆฌ ๋ฐ ์๊ทธ๋ ์ก์ ๊ถํ์ ๊ฐ์ง
์ ์ฉํ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ
- ps / top: ํ๋ก์ธ์ค ์ํยท์์ ์ฌ์ฉ๋ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง
- killall: ํ๋ก์ธ์ค ์ด๋ฆ ๊ธฐ์ค ์ผ๊ด ์๊ทธ๋ ์ ์ก
macOS ๋ฑ์์ MenuMeters ๊ฐ์ GUI ์ ํธ๋ฆฌํฐ ํ์ฉ ๊ฐ๋ฅ
์์ฝ
PID (Process ID): ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๋ ๊ณ ์ ๋ฒํธ
ํ๋ก์ธ์ค ์์ฑ API: fork(), exec(), wait()
- fork(): ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๊ฑฐ์ ์์ ํ ๋ณต์ฌ๋ณธ์ธ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑ
- exec(): ํ์ฌ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ฅผ ์๋ก์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ
- wait(): ๋ถ๋ชจ๊ฐ ์์์ ์ข ๋ฃ๋ฅผ ๋๊ธฐ
ํ๋ก์ธ์ค ์ ์ด: ์๊ทธ๋(kill(), signal())์ ์ด์ฉํด ์ค๋จ, ์ผ์ ์ค๋จ, ์ข ๋ฃ ๊ฐ๋ฅ
- ์๊ทธ๋: ํ๋ก์ธ์ค ์ ์ด(์ค๋จยท์ฌ๊ฐยท์ข ๋ฃ ๋ฑ)๋ฅผ ์ํด OS๊ฐ ๋ณด๋ด๋ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
์ฌ์ฉ์ ๊ฒฉ๋ฆฌ: ์ผ๋ฐ ์ฌ์ฉ์๋ ์์ ์ ํ๋ก์ธ์ค๋ง ์ ์ดํ๊ณ , root๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌ
- superuser(root): ๋ชจ๋ ํ๋ก์ธ์ค์ ์์คํ ์์์ ๋ํ ๋ฌด์ ํ ๊ถํ ์ฌ์ฉ์