์ถ์ฒ: ๊ทธ๋ฆผ์ผ๋ก ๋ฐฐ์ฐ๋ ๋ฆฌ๋ ์ค ๊ตฌ์กฐ

ps aux
: ์์คํ
์ ์กด์ฌํ๋ ๋ชจ๋ ํ๋ก์ธ์ค ํ์ธ
- โno-header : ํค๋ ์ถ๋ ฅ ์ ๊ฑฐ
- ps aux --no-header | wc -l
ํ๋ก์ธ์ค ์์ฑ
๋ฐ๋ชฌ ํ๋ก์ธ์ค : ๋์ d๊ฐ ๋ถ๋๋ค.(์คํ ๋๋ด๊ณ ์ฃฝ๋ ๊ฒ ์๋๋ผ ๊ณ์ ๋ ์์)
ํ๋ก์ธ์ค ์์ฑํ๋ ๋ฐฉ๋ฒ : fork(), execve()
<๋ชฉ์ >
- ๋์ผํ ํ๋ก๊ทธ๋จ ์ฒ๋ฆฌ๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๋๋ ์ ์ฒ๋ฆฌํ๊ธฐ(ex. ์น์๋ฒ์์ ๋ค์์ ์์ฒญ๋ฐ๊ธฐ)
์๊ฐ ๋ชฉ์ ์ด๋ฉด
fork()
๋ง ์ฌ์ฉ
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ(ex. bash์์ ๊ฐ์ข
ํ๋ก๊ทธ๋จ์ ์๋ก ์์ฑ)
์๊ฐ ๋ชฉ์ ์ด๋ฉด
fork()
์execve()
๋ ๋ค
๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ ๊ฐ๋ก ๋ถ์ด์ํค๋ fork() ํจ์
fork()
: ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ ๊ฐ๋ก ๋ถ์ด
- ๋ฐํ๊ฐ
๋ถ๋ชจ : ์์์ PID
์์ : 0
ํ๋ก์ธ์ค ID๋ ๋ฐ๋์ 1 ์ด์์ด๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ถ ๊ฐ๋ฅ
๋ถ๋ชจ โ ์์์ผ๋ก ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ ์์ ์ Copy-on-Write ๋๋ถ์ ๋ฌด์ฒ ์ ์ ๋น์ฉ์ผ๋ก ๋๋จ.
โ ์์ ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก ๋๋ ์ ์ฒ๋ฆฌํ ๋ ์๊ธฐ๋ ์ค๋ฒํค๋๋ ๋ง์ง ์๋ค.
#!/usr/bin/python3
import os, sys
ret = os.fork()
if ret == 0:
print("์์ ํ๋ก์ธ์ค: pid={}, ๋ถ๋ชจ ํ๋ก์ธ์ค์ pid={}".format(os.getpid(), os.getppid()))
exit()
elif ret > 0:
print("๋ถ๋ชจ ํ๋ก์ธ์ค: pid={}, ์์ ํ๋ก์ธ์ค์ pid={}".format(os.getpid(), ret))
exit()
sys.exit(1)
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ํ๋ execve() ํจ์
= ํ์ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์๋ก์ด ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋์ฒด
์ํธ๋ฆฌ ํฌ์ธํธ
: ์ต์ด์ ์คํํ ๋ช
๋ น(C์์๋ main ํจ์, Java์์ main ๋ฉ์๋)
fork() ํจ์๋ก ํ๋ก์ธ์ค ๋ณต์ฌ๋ณธ์ ๋ง๋ค์์ผ๋ฉด ์์ ํ๋ก์ธ์ค์ exevce() ํจ์๋ฅผ ํธ์ถํ๋ค. ๊ทธ๋ฌ๋ฉด ์์ ํ๋ก์ธ์ค๋ ์๋ก์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ๋๋ค.
fork() ํจ์๋ ํ๋ก์ธ์ค ๊ฐ์๊ฐ ๋์ด๋๋ ๊ฒ์ด์ง๋ง ์ ํ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์๋กญ๊ฒ ์นํํ๋ ํํ๊ฐ ๋๋ค.

cc -o puase -no-pie pause.c
-no-pie ์ต์ : PIE ๋ฌดํจํ(PIE = ASLR์ ๋์)
readelf -h
: ํ๋ก๊ทธ๋จ ์์ ์ฃผ์ ํ์ธํ๊ธฐ
readelf -S
: ์ฝ๋์ ๋ฐ์ดํฐ์ ํ์ผ ์คํ์
, ํฌ๊ธฐ, ์์ ์ฃผ์
ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ๋งต : /proc/<pid>/maps

ASLR๋ก ๋ณด์ ๊ฐํ
ASLR์ ํ๋ก๊ทธ๋จ์ ์คํํ ๋๋ง๊ฐ ๊ฐ ์น์ ์ ๋ค๋ฅธ ์ฃผ์์ ๋งตํํ๋ค.
โ ํน์ ์ฃผ์์ ๊ณ ์ ์ผ๋ก ์กด์ฌํ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์๋ ๊ณต๊ฒฉ์ ๋๋นํ ์ ์๋ค.
Position Independent Execualbe(PIE)
= ASLR์ ๋์ํ๋ ํ๋ก๊ทธ๋จ
-no-pie
์ต์
์ฌ์ฉ ์ PIE๋ฅผ ๋ฌดํจํ ํ๋ค.
2๋ ์ ํ ๋ค๋ฅธ ์ฅ์์ ๋ฉ๋ชจ๋ฆฌ ๋งต๋๋ ๊ฑธ ์ ์ ์๋ค.
ํ๋ก์ธ์ค์ ๋ถ๋ชจ ์์ ๊ด๊ณ
<์ปดํจํฐ ์ ์์ ์ผฐ์ ๋์ ์์คํ ์ด๊ธฐํ ์์>
pstree
: ํ๋ก์ธ์ค์ ๋ถ๋ชจ ์์ ๊ด๊ณ๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํ์
-p
: PID๋ ํ์
pid 1 = init ํ๋ก์ธ์ค = systemd
[Column] fork() ํจ์์ execve() ํจ์ ์ด์ธ์ ํ๋ก์ธ์ค ์์ฑ ๋ฐฉ๋ฒ
์๋ก์ด ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํด fork(), execve() ํจ์๋ฅผ ์์๋๋ก ํธ์ถํ๋ ๊ฑด ๋ฒ๊ฑฐ๋ก์ด ์์ .
์ด๊ฑธ posix_spawn() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ์ฒ๋ฆฌํ ์ ์๋ค.
์๋ ์์ ๋ posix_spawn() ํจ์๋ฅผ ์จ์ echo ๋ช ๋ น์ด๋ฅผ ์์ ํ๋ก์ธ์ค๋ก ์์ฑํ๋ spawn.py ํ๋ก๊ทธ๋จ.
๐กfork() ํจ์ ํธ์ถ ์งํ์ ๊ณง๋ฐ๋ก execve() ํจ์๋ฅผ ํธ์ถํ ๋๋ง posix_spawn() ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์ธ ์ํฉ์ด๋ผ๋ฉด ๋ชจ๋ fork() ํจ์์ exevce() ํจ์๋ฅผ ์ฌ์ฉ.
ํ๋ก์ธ์ค ์ํ
ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ํ ์๊ฐ ๋ฐ ์ฌ์ฉํ CPU ์๊ฐ ํฉ๊ณ โ ps aux
์ START
ํ๋ ๋ฐ TIME
ํ๋์์ ํ์ธ ๊ฐ๋ฅํ๋ค.
<ํ๋ก์ธ์ค ์ํ(Process Status) ํ๋ = STAT ํ๋>
R: Running(์คํ ์ค)
์ค์ CPU๋ฅผ ์ฌ์ฉํ๋ ์ํ
S: Sleeping(๋๊ธฐ ์ค)
๊ฐ ํ๋ก์ธ์ค๋ ์คํ๋ ํ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง CPU๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋งํ ์๋ค.
Z: Zombie(์ข ๋ฃ๋์์ง๋ง ์์ง ์ญ์ ๋์ง ์์)
ํ๋ก์ธ์ค ์ข ๋ฃ ์ ์ข๋น ์ํ๊ฐ ๋๊ณ ์กฐ๊ธ ์๋ค๊ฐ ์๋ฉธ.
R: Runnable(์คํ ๊ฐ๋ฅ)
: CPU๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ดํ๋ ํ๋ก์ธ์ค
I: Idle(์์ด๋ค)
: ์๋ฌด ์ผ๋ ํ์ง ์๋ ํน์ํ ํ๋ก์ธ์ค๐กPC๋ ์ค๋งํธํฐ์์ ์๋ฌด๋ฐ ํ๋ก๊ทธ๋จ๋ ๋์ํ์ง ์์ ๋ ๋ฐฐํฐ๋ฆฌ๊ฐ ์ค๋๊ฐ๋ ๊ฑด ๋ ผ๋ฆฌ CPU๊ฐ ์์ด๋ค ์ํ์ธ ์๊ฐ์ด ๊ธธ์ด์ ์๋น ์ ๋ ฅ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์.
ํ๋ก์ธ์ค ์ข ๋ฃ
exit_group()
: ํ๋ก์ธ์ค ์ข
๋ฃ ์์คํ
์ฝ
๋ด๋ถ์์ ์ปค๋์ด ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์์์ ํ์ํจ
ํ์ด์ฌ exit()
: ๋ด๋ถ์์ ์์ ์์คํ
์ฝ ํธ์ถํจ
ํ๋ก์ธ์ค ์ข ๋ฃ ์ ์ข ๋ฃ ์ํ์ ๋ฐ๋ฅธ ๋ฐํ๊ฐ์ด ์๋๋ฐ, ์ด ๋ฐํ๊ฐ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์ ์ ์, ๋น์ ์ ์ข ๋ฃ ์ฌ๋ถ๋ฅผ ํ์ ํด์ ์๋ฌ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ ํ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
wait()
: ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃํ๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ์์คํ
์ฝ์ ํธ์ถํด ํ๋ก์ธ์ค ์ข
๋ฃ ์ํ๋ฅผ ์ป์ ์ ์๋ค.
์ข๋น ํ๋ก์ธ์ค์ ๊ณ ์ ํ๋ก์ธ์ค

์ข๋น ํ๋ก์ธ์ค
: ์ข
๋ฃํ์ง๋ง ๋ถ๋ชจ๊ฐ ์ข
๋ฃ ์ํ๋ฅผ ํ์ธํ์ง ์์ ์ํ์ ํ๋ก์ธ์ค
๐ก์ข๋น ํ๋ก์ธ์ค๊ฐ ๊ฐ๋ํด์ ์์๋ง ์ก์๋จน์ง ์๋๋ก, ๋ถ๋ชจ๋ ์์ ํ๋ก์ธ์ค ์ข ๋ฃ ์ํ๋ฅผ ์ ๋ ํ์ํด์ ์์์ ์ปค๋๋ก ๋๋ ค์ค์ผ ํ๋ค.
๊ณ ์ ํ๋ก์ธ์ค
: wait()
๊ณ์ด ์์คํ
์ฝ์ ํธ์ถํ๊ธฐ ์ ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋๋ฉด ์์ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ๋ก์ธ์ค๊ฐ ๋จ (๋ถ๋ชจ๊ฐ ๋จผ์ ์ฃฝ์ผ๋ฉด ๊ณ ์๊ฐ ๋๋ค.)
๐ก์ปค๋์ init(systemd)
์ ๊ณ ์ ํ๋ก์ธ์ค์ ์๋ก์ด ๋ถ๋ชจ๋ก ์ง์ ํ๋ค. ์ฐธ๊ณ ๋ก ์ข๋น ํ๋ก์ธ์ค์ ๋ถ๋ชจ๊ฐ ์ข
๋ฃ๋๋ฉด init
์ ์ข๋น ํ๋ก์ธ์ค๊ฐ ๋ฌ๋ ค๋ฆ. ๊ทธ๋ผ init
์ ์ ๊ธฐ์ ์ผ๋ก wait()
๊ณ์ด ์์คํ
์ฝ์ ํธ์ถํด์ ์์คํ
์์์ ํ์ํ๋ค.
์๊ทธ๋
์๊ทธ๋
: ํ๋ก์ธ์ค์ ์ ํธ๋ฅผ ๋ณด๋ด์ ์ธ๋ถ์์ ์คํ ์์๋ฅผ ๊ฐ์ ์ ์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
SIGINT
: ์ฆ์ ์ข ๋ฃ โ ๋ํ์ !bash ๊ฐ์ ์ ธ์์ Ctrl + C ๋๋ฅด๋ฉด ๋ฐ์.
- SIGCHLD : ์์ ํ๋ก์ธ์ค ์ข ๋ฃ ์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ณด๋ด๋ ์๊ทธ๋.
- SIGSTOP : ํ๋ก์ธ์ค ์ผ์์ ์ง. bash์์ Ctrl + Z
- SIGCONT : SIGSTOP ๋ฑ์ผ๋ก ์ ์งํ ํ๋ก์ธ์ค ์คํ ์ฌ๊ฐ.
๋ ๋ง์ ์๊ทธ๋ ๋ชฉ๋ก์ man 7 signal ํตํด ํ์ธํ ์ ์๋ค.
SIGINT๋ ํ๋ก์ธ์ค๋ฅผ ๊ณง๋ฐ๋ก ์ข ๋ฃํ๋ค๊ณ ์ค๋ช ํ์ง๋ง ๊ผญ ๊ทธ๋ฐ ๊ฑด ์๋๋ค.
ํ๋ก์ธ์ค๋ ๊ฐ ์๊ทธ๋์ ์๊ทธ๋ ํธ๋ค๋ฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ฑ๋กํด ๋๋ค.(์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์์ ์ ๋ฑ๋กํ๋ ๊ฒ ์ผ๋ฐ์ ) ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค๊ฐ ํด๋นํ๋ ์๊ทธ๋์ ์์ ํ๋ฉด ์คํ ์ค์ธ ์ฒ๋ฆฌ๋ฅผ ์ผ๋จ ์ค๋จํ๊ณ ์๊ทธ๋ ํธ๋ค๋ฌ์ ๋ฑ๋กํ ์ฒ๋ฆฌ๋ฅผ ๋์์ํจ ๋ค์์, ์๋ ์ฅ์๋ก ๋์๊ฐ์ ์ด์ ์ ํ๋ ๋์์ ์ฌ๊ฐํ๋ค.

์๊ทธ๋ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด Ctrl + C
๋ฅผ ๋๋ฌ๋ ์ข
๋ฃํ์ง ์๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค.
#!/usr/bin/python3
import signal
# SIGINT ์๊ทธ๋์ ๋ฌด์ํ๋๋ก ์ค์ .
# ์ฒซ ๋ฒ์งธ ์ธ์๋ ํธ๋ค๋ฌ๋ฅผ ์ค์ ํ ์๊ทธ๋(์ฌ๊ธฐ์๋ signal.SIGINT)
# ๋ ๋ฒ์งธ ์ธ์์๋ ์๊ทธ๋ ํธ๋ค๋ฌ(์ฌ๊ธฐ์๋ signal.SIG_IGN)๋ฅผ ์ง์
signal.signal(signal.SIGINT, signal.SIG_IGN)
while True:
pass
์ด๋ ๊ฒ ์ ์ฃฝ๋ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ณ ์ถ๋ค๋ฉด, ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๋ฆฌ๊ณ ์ฃฝ์ด๋ฉด ๋๋ค.
Ctrl + Z
๋ก ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๋ฆฌ๊ธฐ
kill
๋ก ์ข ๋ฃ
SIGKILL : ๋ฐ๋์ ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ด๋ ์๊ทธ๋. SIGINT ๋ฑ์ ์จ๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ง ์์ ๋ ์ฌ์ฉํ๋ ์ตํ์ ์๋จ ๊ฐ์ ์๊ทธ๋์ด๋ค.
์ ์์ ๊ด๋ฆฌ ๊ตฌํ
์์ (job) : bg ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๋ ๋์ ๊ตฌ์กฐ
$ sleep infinity &
[1] 3857 // 1์ด ์์
๋ฒํธ
$ sleep infinity &
[2] 3858 // 2๊ฐ ์์
๋ฒํธ
$ jobs // ์์
๋ชฉ๋ก ํ์
[1]- Running sleep infinity &
[2]+ Running sleep infinity &
$ fg 1 // 1๋ฒ ์์
์ ํฌ๊ทธ๋ผ์ด๋ ์์
์ผ๋ก ๋ง๋ฆ
sleep infinity
^Z // Ctrl+Z๋ฅผ ๋๋ฌ์ ๋ค์ bash๋ก ์ ์ด๊ฐ ๋์์ด (bg job์ผ๋ก ๋ณ๊ฒฝ)
[1]+ Stopped sleep infinity
์ธ์
= ์ฌ์ฉ์๊ฐ
๋ชจ๋ ์ธ์
์๋ ํด๋น ์ธ์
์ ์ ์ดํ๋ ๋จ๋ง(terminal)์ด ์กด์ฌํ๋ค. ๋ณดํต์ pty<n>
์ด๋ ๊ฒ ์ด๋ฆ ๋ถ์ ๊ฐ์ ๋จ๋ง์ด ๊ฐ๊ฐ์ ์ธ์
์ ํ ๋น๋๋ค.
ํ๋ก์ธ์ค ๊ทธ๋ฃน
๋ฐ๋ชฌ
๋ฐ๋ชฌ : ์์ฃผํ๋ ํ๋ก์ธ์ค
์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ผ๋ฉด ์ฌ์ฉ์๊ฐ ์คํํ๊ณ ์์ ์ด ๋๋๋ฉด ์ข ๋ฃํ๋ค. ํ์ง๋ง ๋ฐ๋ชฌ์ ์์คํ ์์๋ถํฐ ์ข ๋ฃ๊น์ง ๊ณ์ํด์ ์กด์ฌํ๋ฉฐ ์คํ๋๋ค.
<ํน์ง>

ps ajx๋ฅผ ํตํด ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋ฐ๋ชฌ์ธ์ง ํ์ธํ ์ ์๋ค.
PPID๊ฐ 1์ด๊ณ , ์ธ์ ID๋ PID์ ๋์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ TTY ๊ฐ์ด ํฐ๋ฏธ๋๊ณผ ์ฐ๊ฒฐ๋์ง ์์ ๊ฑธ ๋ปํ๋ โ?โ์ด๋ค.

โํด์ฆ
์ฌ๊ธฐ์์ ํด์ฆ๋ฅผ ์ค๋นํด ๋ณด๊ฒ ์ต๋๋ค.
ํด์ฆ 1: ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ ํน์ง ์ค ํ๋๋ ๋ฌด์์ธ๊ฐ์?
- ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ง ์๊ณ ์์คํ ์์๋ถํฐ ์ข ๋ฃ๊น์ง ๊ณ์ ์คํ๋ฉ๋๋ค.
- ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ ํญ์ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ์ํด ์์ต๋๋ค.
- ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ TTY (ํฐ๋ฏธ๋)์ ํญ์ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
- ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ PPID (๋ถ๋ชจ ํ๋ก์ธ์ค ID)๋ 0์ ๋๋ค.
ํด์ฆ 2: ๋ฌดํ ๋ฃจํ๋ก ๋์ํ๋ ํ๋ก๊ทธ๋จ์ Ctrl + C๋ฅผ ์ฌ์ฉํด ์ข ๋ฃํ๊ณ ์ถ๋ค๋ฉด ์ด๋ค ์๊ทธ๋์ ์ฌ์ฉํ๋์?
- SIGSTOP
- SIGCONT
- SIGINT
- SIGCHLD
ํด์ฆ 3: ์ข๋น ํ๋ก์ธ์ค์ ๊ณ ์ ํ๋ก์ธ์ค์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ์ข๋น ํ๋ก์ธ์ค๋ ํญ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ก๋ถํฐ ์ข ๋ฃ ์ํ๋ฅผ ํ์๋ฐ์ง๋ง ๊ณ ์ ํ๋ก์ธ์ค๋ ํ์ํ์ง ์์ต๋๋ค.
- ๊ณ ์ ํ๋ก์ธ์ค๋ SIGKILL ์๊ทธ๋์ ์ฌ์ฉํ์ฌ ์ข ๋ฃํ์ง๋ง ์ข๋น ํ๋ก์ธ์ค๋ SIGCHLD๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ข๋น ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋์ผํ PID๋ฅผ ๊ฐ์ง๋ฉฐ ์ข ๋ฃ ์ํ๋ฅผ ํ์ํฉ๋๋ค.
- ์ข๋น ํ๋ก์ธ์ค์ ๊ณ ์ ํ๋ก์ธ์ค ๊ฐ์ ์ฐจ์ด์ ์ ์์ต๋๋ค.
์ด์ ์ด ํด์ฆ์ ๋ต๋ณ์ ํ์ค ์ ์์ ๊ฒ์ ๋๋ค. ์ํ์๋ ๊ฒฝ์ฐ ํด์ฆ ๋ต๋ณ์ ์ ์ถํ์๋ฉด ํผ๋๋ฐฑ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.

์๊ฒ ์ต๋๋ค. ์ด์ ์ ์ ๊ณตํ ๋ด์ฉ์ ๊ธฐ๋ฐ ์ผ๋ก ํด์ฆ๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์๋๋ ํด๋น ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋กํ ํด์ฆ์ ๋๋ค.
- "์ข์ ์์"์์ ์ด๋ค ํํ๋ก ๊ณต๋ถ ๋ด์ฉ์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ์ด๋ ๊ฒ์ ์ ์ํ์๋์?
- fork() ํจ์์ ๋ฐํ๊ฐ ์ค ๋ถ๋ชจ ํ๋ก์ธ์ค์ PID์ ์์ ํ๋ก์ธ์ค์ PID๋ ๊ฐ๊ฐ ๋ฌด์์ธ๊ฐ์?
- "์ข๋น ํ๋ก์ธ์ค"๊ฐ ๋ฌด์์ด๋ฉฐ ์ด๋ค ์ํฉ์์ ๋ฐ์ํ๋์?
- ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ ํน์ง ์ค ํ๋๋ ๋ฌด์์ธ๊ฐ์?
- ์ธ์ ๊ณผ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๊ด๊ณ์ ๋ํด ๊ฐ๋จํ ์ค๋ช ํด๋ณด์ธ์.
- ์ธ์ ID์ ํ๋ก์ธ์ค ID(PID)๊ฐ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง ์ค๋ช ํด๋ณด์ธ์.
- ํ๋ก์ธ์ค ์ํ ํ๋ "I: Idle(์์ด๋ค)"์ด ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋ํ๋ด๋์ง ์ค๋ช ํด๋ณด์ธ์.
- ์๊ทธ๋ ํธ๋ค๋ฌ์ ์ญํ ์ ๋ฌด์์ด๋ฉฐ ์ธ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋์?
- ๊ฐ์ฅ ๋ฎ์ ํ๊ถ๋ ๋จ๊ณ์ ๊ทธ ๋จ๊ณ๋ฅผ ๋ํ๋ด๋ ์ซ์๋ ๋ฌด์์ธ๊ฐ์?
- "์ค๋ฆด๋ฌ" ์จ๋ฒ์ ๊ฐ์ฅ ์ ๋ช ํ ๊ฐ์๋ ๋๊ตฌ์ด๋ฉฐ ์ด๋ค ์์ ์คํ์ผ๋ก ์ ๋ช ํ๊ฐ์?
์ด๋ฌํ ํด์ฆ๋ฅผ ์ด์ฉํด ์ง์์ ํ ์คํธํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ต๋ณ์ด ํ์ํ๋ค๋ฉด ๋ง์ํด ์ฃผ์ธ์!



Uploaded by N2T