ํฐ์คํ ๋ฆฌ ๋ทฐ
์ด์์ฒด์ : ํ๋ก์ธ์ค์ ์ฐ๋ ๋
dirmathfl 2020. 6. 19. 19:21ํ๋ก์ธ์ค
์ด์ ๊ธ์์๋ ์ ์ ์๋ฏ์ด ํ๋ก์ธ์ค๋ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋๋์ด ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋งํ๋ค. ์ด์์ฒด์ ์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ job, task ๋ฑ์ผ๋ก ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ
๋ฆฌ๋ ์ค๋ ์ ์ฅ์ฅ์น๋ก ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ก ์ต์ด ์ ์ฌ ์์๋ PID (Process ID : ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ๊ณ ์ ์๋ณ ๋ฒํธ)๊ฐ 0์ธ root process๊ฐ ์์ฑ๋๋ค. root process๋ init process๋ฅผ ์์ฑํ๋ค. root process๋ ์ต์ด ์์ฑ ํ์, ํ๋ก์ธ์ค๋ค์ ์ค์ผ์ค๋ง ํ ๋ swapper์ ์ญํ์ ํ๋ค. init process์ ๊ฒฝ์ฐ ์์ฑ๋ ํ, ์ฌ์ฉ์๊ฐ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค.
์์ ์ ํ๋ก์ธ์ค ๊ณ์ธต ๊ตฌ์กฐ๋ depth๊ฐ 3์ด์ง๋ง depth 2์ ํ๋ก์ธ์ค๋ค๋ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ์ ์๋ค. ๊ฐ์ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ก ๋ถํฐ ์์ฑ๋ ํ๋ก์ธ์ค๋ค์ ํ์ (Sibiling) ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค. ๊ฐ ํ๋ก์ธ์ค๋ค์ PPID (Parent Process ID)๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
ํ๋ก์ธ์ค ์์ฑ
์๋ก์ด ํ๋ก์ธ์ค๋ ์์คํ ์ฝ ์ค์ fork()๋ฅผ ํตํด ์์ฑ๋๋ค. ์์ฑ๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด์๋ exec()์ ์์ฑํ๋ค. ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ฑ - ์คํ๊ณผ ๊ฐ์ ๋์์ผ๋ก ๊ตฌ๋ถํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด A, B, C๋ผ๋ ํ๋ก์ธ์ค ์์ผ๋ก ์์ฑํ ๊ฒฝ์ฐ ์์ฑ, ์คํ ๊ณผ์ ์ ๋ถ๋ฆฌํ์ง ํ์ง ์์ผ๋ฉด ๋ชจ๋ ํ๋ฒ์ ์คํํด์ผ ๋๋ ์ํฉ์ ๊ฒช๊ฒ ๋๋ค.
ํ๋ก์ธ์ค ์ข ๋ฃ
ํ๋ก์ธ์ค ์ข ๋ฃ๋ ์์คํ ์ฝ ์ค์ exit()๋ฅผ ํตํด ์งํ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ จ๋ ์ ๋ณด๋ค์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฏ๋ก ํ ๋น๋ ์์๋ค์ ๋ฐํํ๋ ์์ ์ ์งํํ๋ค.
์ฐ๋ ๋ (Thread)
์ฌ์ ์ ์๋ฏธ๋ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์๋ผ๊ณ ์ ์๋์ง๋ง, ํ๋ก์ธ์ค ๋ด์์ ์์ ์ ์คํํ ์ ์๋ ๋จ์๋ผ๊ณ ์ดํดํ๋ฉด ์ง๊ด์ ์ผ ๊ฒ ๊ฐ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์ค๋ ์ต์ 1๊ฐ์ ์ค๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ๋ฉ์ธ ์ค๋ ๋๋ผ๊ณ ํ๋ค.
๋ค์ค ์ฐ๋ ๋ (Multi Thread)
ํ๋์ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ์ฐ๋ ๋๋ค์ด ๋์ํ๋ ๊ฒ์ ๋ค์ค ์ฐ๋ ๋๋ผ๊ณ ํ๋ค. ์ฐ๋ ๋๋ ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ํ๋์ ํ๋ก์ธ์ค ๋ด์์ Code, Data, Heap ์์ญ์ ๊ณต์ ํ๋ฉฐ ์ฐ๋ ๋ ๋ด์ Stack๋ง ์ฒ๋ฆฌํ๋ฉด ๋๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ์ ๋ค. ๋์์ ์ฌ๋ฌ ์์ ์ ์คํํ ์ ์๋ ์ฅ์ ๋ ์์ง๋ง, ๋ฐ์ดํฐ ์ฝ๊ธฐ/์ฐ๊ธฐ์ ๊ฐ์ ์์ ์ค ์์ ๋ณด์ฅ์ด ํ์ํ ์ํฉ์์ ์ ์ ํ ์ฌ์ฉํ์ง ๋ชปํ๋ฉด ๋ฐ์ดํฐ ์์ค์ ๊ฐ์ ธ์ฌ ์ ์์ด ๋๊ธฐํ ๊ณผ์ ์ด ํ์ํ๋ค.
ํ๋ก์ธ์ค VS ์ฐ๋ ๋
๊ทธ๋ฆผ 2์ ๊ฐ์ด ๋ฉํฐ-ํ๋ก์ธ์ค์ธ ์ํฉ์์ ํ๋ก์ธ์ค ๊ฐ์ ์์ ์ ํ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง PCB๋ฅผ ์ ์ฅ ํ ์๋ก์ด ํ๋ก์ธ์ PCB๋ฅผ ๊ฐ์ ธ์ค๋ Context Switching ๊ณผ์ ์ด ํ์ํ๋ค. ๋น๋ฒํ Context Switchig์ ์ค๋ฒํค๋๊ฐ ๋๋ฉฐ, ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค ๊ฐ์ ์์ ์ ์ ํํ๋ ๊ฒ์ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
์ด์ ๋ฌ๋ฆฌ ๋ฉํฐ-์ฐ๋ ๋์ธ ๊ฒฝ์ฐ๋ ํ๋ก์ธ์ค ๊ฐ์ ์์ ์ ํ์ธ Context Switching์ด ๋ถํ์ํ์ฌ ๋ณ๋ ฌ์ ์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๋ฉด์๋ ์ฐ๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ์ ๋ํ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ ๋ค.
์ฆ, ํ๋ก์ธ์ค์ ์ฐ๋ ๋์ ์ฐจ์ด๋ ๋ฉํฐ-์ฐ๋ ๋์ ๊ฒฝ์ฐ kernel mode์์ ์คํ๋๋ Context Switchig์ด ํ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ํ๋ก์ธ์ค ๊ฐ์ ์ ๋ณด ๊ตํ๊ณผ ๋ฌ๋ฆฌ ์๋์ ์ผ๋ก ์ ์ ์ค๋ฒํค๋๋ก ์์ ์ ์งํํ ์ ์๋ค. ์ด์ ๋ฌ๋ฆฌ ๋ฉํฐ-ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค ๊ฐ์ ์ ๋ณด ๊ตํ์ ์ํด kernel mode๋ก ์ ํํ์ฌ kernel์์ Context Switchig ์์ ์ ์งํ ํ๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ์์ฑ์ โ ์๋น์ (0) | 2020.06.20 |
---|---|
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ์ธ๋งํฌ์ด (0) | 2020.06.19 |
์ด์์ฒด์ : CPU ์ค์ผ์ค๋ง (0) | 2020.06.19 |
์ด์์ฒด์ : ํ๋ก์ธ์ค ๊ด๋ฆฌ (0) | 2020.06.18 |
์ด์์ฒด์ : ์ด์ค๋ชจ๋ ๋ฐ ํ๋์จ์ด ๋ณดํธ (0) | 2020.06.18 |