[OS] Process์ ๋ํด ์์๋ณด์.
by rlaehddnd0422ํ๋ก์ธ์ค์ ํ๋ก๊ทธ๋จ์ ์ฐจ์ด
ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์คํ๋๊ณ ์๋ ์ํ๋ฅผ ํ๋ก์ธ์ค๋ผ๊ณ ๋งํฉ๋๋ค.
.exe ๋ .dmg์ ๊ฐ์ ํ์ผ -> ํ๋ก๊ทธ๋จ ( ์ ์ ์ธ ์ํ )
์ด ํ๋ก๊ทธ๋จ์ ์คํ์์ผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ -> ํ๋ก์ธ์ค ( ๋์ ์ธ ์ํ )
- ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ๊ฐ ์คํ๋๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ฃผ์ด์ผ ์คํ๋ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ค | ํ๋ก๊ทธ๋จ |
์คํ๋์ด ์์ ์ค์ธ ํ๋ก๊ทธ๋จ | ํ๋์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๊ฐ ์ปดํ์ผ ๊ณผ์ ์ ๊ฑฐ์ณ ์คํํ์ผ๋ก ๋ง๋ค์ด์ง ํ์ผ |
ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์คํ๋๊ณ ์๋ ์ํ | ํ์ผ์ด ์ ์ฅ์ฅ์น์ ์กด์ฌํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์๋ ์ฌ๋ผ๊ฐ ์์ง ์์ ์ํ |
๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค์ ์ค๋ ๋๋ ์ฐจ์ด๋ ๋ฌด์์ผ๊น์.
ํ๋ก์ธ์ค์ ์ค๋ ๋ ์ฐจ์ด
์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด ์์ ์ ํ๋ฆ์ ์ง์นญํฉ๋๋ค.
ํ๋ก์ธ์ค | ์ค๋ ๋ |
OS๋ก๋ถํฐ ์์์ ํ ๋น๋ฐ์ ์์ ์ ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ์ด ์ ์ฌ๋์ด ์๋ ์ํ. | ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ ํ๋ฆ์ ๋จ์ |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ฒฉ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํ๊ธฐ ์ํด์๋ IPC๋ฅผ ์ฌ์ฉํด์ผ ํจ. | ๋ค๋ฅธ ์ค๋ ๋์ ๊ฒฉ๋ฆฌ๋์ด ์์ง ์์ผ๋ฏ๋ก ๊ทธ๋ฅ ํต์ ํ ์ ์์ผ๋ฏ๋ก ํ๋ก์ธ์ค๋ณด๋ค ์๋๊ฐ ๋น ๋ฆ. |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ ๋ฆฝ์ ์ด๋ฏ๋ก ๋ฌธ์ ๊ฐ ์๊ธด๋ค๊ณ ํด์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ ์ฃผ์ง ์์. | ํ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋์ผ ํ๋ก์ธ์ค ๋ด์ ๋ค๋ฅธ ์ค๋ ๋์ ํ๋ก์ธ์ค์ ์ํฅ์ ์ค ์ ์์. |
์์ฑ๊ณผ ์ข ๋ฃ์ ๋ ๋ง์ ์๊ฐ์ด ์์. | ์์ฑ๊ณผ ์ข ๋ฃ์ ๋น๊ต์ ์ ์ ์๊ฐ์ด ์์ |
์กฐ๊ธ ๋ ์ฝ๊ฒ ๋งํ์๋ฉด ์ค๋ ๋๋ ํ๋ก์ธ์ค์์ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ์ฌ ํ๋์ ํ๋ก์ธ์ค์์์ ์ผ๋ จ์ ์์ ๋ค์ ์งํํ๋ ๋จ์๋ก, ์ค๋ ๋๊ฐ ํ๋๊ฐ ์๋ค๋ฉด ์ฑ๊ธ ์ค๋ ๋, ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด ๋ฉํฐ ์ค๋ ๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ๊ณผ์
1. ์ ์ฒ๋ฆฌ๊ธฐ ( Preprocessor )
- ์์ค์ฝ๋์ ์ฃผ์ ์ ๊ฑฐ, ํค๋ํ์ผ ๋ณํฉ. ๋งคํฌ๋ก ์นํํ์ฌ ์ปดํ์ผํ ์ ์๋ *.i ํ์ผ์ ์์ฑ
2. ์ปดํ์ผ๋ฌ ( Compiler )
- ์ ์ฒ๋ฆฌ๊ธฐ์์ ๋ง๋ค์ด์ง *.i ํ์ผ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ฝ๋๋ฅผ ์ต์ ํ ํ๋ ์์ ์ ํ์ฌ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณํํ *.s file ์ ์์ฑ
3. ์ด์ ๋ธ๋ฌ ( Assembler )
- ์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑ๋ *.s file์ *.o ๋ชฉ์ ํ์ผ์ ์์ฑ
4. ๋ง์ปค
- ๋ชฉ์ ํ์ผ์ ํตํด ์คํํ ์ ์๋ *.exe, *.out ํ์ฅ์์ ํ๋ก๊ทธ๋จ์ ์์ฑ
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด ํ๋ก์ธ์ค๊ฐ ๋๋ฉด ํ๋ก์ธ์ค์ ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
์์ญ์ผ๋ก ๊ตฌ๋ถํ๋ฉด ์คํ ์์ญ, ํ ์์ญ, ๋ฐ์ดํฐ ์์ญ(BSS/Data Segment), ์ฝ๋ ์์ญ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
- ์คํ ์์ญ : ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ํจ์๊ฐ ์ ์ฅ. ์ปดํ์ผ ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ์ง๋ง, ํจ์๊ฐ ํจ์๋ฅผ ํธ์ถํ๋ ์ฌ๊ท ํจ์๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐํ์ ์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋จ. (๋์ )
- ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ์คํ๋๋ ํจ์์ ์ํด ๋์ด๋๊ฑฐ๋ ์ค์ด๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก, ์ฌ๊ท ํจ์์ ๊ฒฝ์ฐ ๋งค๋ฒ ์๋ก์ด ์คํ ํ๋ ์์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ํจ์ ๋ด์ ๋ณ์ ์งํฉ์ด ํด๋น ํจ์์ ๋ค๋ฅธ ์ธ์คํด์ค ๋ณ์๋ฅผ ๋ฐฉํดํ์ง ์์.
- ํ ์์ญ : ๋์ ํ ๋นํ ๋ ์ฌ์ฉ๋๋ ์์ญ์ผ๋ก ๋ฐํ์ ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ (๋์ )
- malloc(), free() ํจ์๋ฅผ ํตํด ํ ๋นํ๊ณ ํด์ ํ๋ฉฐ ๋์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋์ ์ผ๋ก ๊ด๋ฆฌ๋๋ ์๋ฃ๊ตฌ์กฐ (ex : Cpp์ vector, Java์ Collection)๊ฐ ์ด ํ ์์ญ์ ์ ์ฅ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ญ : ์ฝ๋๊ฐ ์คํ๋๋ฉด์ ์ฌ์ฉ๋๋ ์ ์ญ ๋ณ์๊ฐ ์ ์ฅ๋ ์์ญ์ผ๋ก BSS Segment์ Data Segment๋ก ๊ตฌ๋ถ. (์ ์ )
- BSS Segment : 0์ผ๋ก ์ด๊ธฐํ๋๊ฑฐ๋ ์ด๊ธฐํ ๋์ง ์์ ์ ์ญ ๋ณ์, static, const๋ก ์ ์ธ๋ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ
- Data Segment : 0์ด ์๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ ์ ์ญ ๋ณ์, static, const๋ก ์ ์ธ๋ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ
- ์ฝ๋ ์์ญ : ์์ค์ฝ๋๊ฐ CPU๊ฐ ํด์ํ ์ ์๋ ๊ธฐ๊ณ์ด ํํ๋ก ์ ์ฅ๋์ด ์๋ ์์ญ. (์ ์ )
์ค๋ ๋๋ ํ ์์ญ, ๋ฐ์ดํฐ ์์ญ, ์ฝ๋ ์์ญ์ ๊ณต์ ํ๋ค!
- ํ๋์ ํ๋ก์ธ์ค์์ ํ์๋ ์ค๋ ๋๋ค์ ํ๋ก์ธ์ค์์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ์คํ ์์ญ์ ์ ์ธํ ํ, ๋ฐ์ดํฐ, ์ฝ๋ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ๊ณ , ์คํ ์์ญ์ ๊ฐ๊ฐ์ ์ค๋ ๋๊ฐ ๊ฐ๊ฐ ๋ณ๋๋ก ๊ฐ์ง๋๋ค.
- ์ค๋ ๋๋ ๊ฐ๊ฐ์ ์คํ์ ๊ฐ์ง์ผ๋ก์จ ๋ ๋ฆฝ์ ์ธ ํจ์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ธ ์คํํ๋ฆ์ ๊ฐ์ง ์ ์๊ฒ ์ต๋๋ค.
PCB (Process Control Block)
- ํ๋ก์ธ์ค์ ๋ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์ผ๋ก ์ปค๋ ์คํ์ ์ ์ฅ๋ฉ๋๋ค.
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ๊ณ ์ ์ PCB๊ฐ ์์ฑ๋๊ณ , ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด PCB๊ฐ ์ ๊ฑฐ๋จ.
[์ปค๋ ์คํ]
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์คํ๊ตฌ์กฐ๋ก ๋์ด ์๋ ์ฌ์ฉ์ ๊ณต๊ฐ๊ณผ ์ปค๋ ๊ณต๊ฐ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ์ฌ์ฉ์ ์คํ - ์ปค๋ ์คํ์ผ๋ก ๋ถ๋ฅด๊ธฐ๋ ํจ.
- ์ปค๋ ์คํ : ์ปค๋ ๋ชจ๋์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ์ฌ์ฉ์ ์คํ : ์ฌ์ฉ์ ๋ชจ๋์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
PCB์ ๊ตฌ์กฐ
- ํ๋ก์ธ์ค์ ์ํ : ๋๊ธฐ์ค, ์คํ ์ค ๋ฑ ํ๋ก์ธ์ค์ ์ํ
- ํ๋ก์ธ์ค ๋ฒํธ : ๊ฐ ํ๋ก์ธ์ค์ ๊ณ ์ ์๋ณ ๋ฒํธ (Process ID, PID)
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ : ์ด ํ๋ก์ธ์ค์ ๋ํ์ฌ ์คํ๋ ๋ค์ ๋ช ๋ น์ด์ ์ฃผ์์ ๋ํ ํฌ์ธํฐ. (Program Counter, PC)
- ๋ ์ง์คํฐ ๊ด๋ จ ์ ๋ณด
- ๋ฉ๋ชจ๋ฆฌ ์ ํ ์ ๋ณด : ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ ๋ณด
- ์ด๋ฆฐ ํ์ผ ์ ๋ณด : ํ๋ก์ธ์ค๋ฅผ ์ํด ์ด๋ฆฐ ํ์ผ ๋ชฉ๋ก
Context Switching
์ปจํ ์คํธ ์ค์์นญ์ CPU๊ฐ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํ๊ธฐ ์ํด PCB๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ณต์์ํค๋ ์ผ๋ จ์ ๊ณผ์ ์ผ๋ก, ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ์ฌ CPU ํ์ฉ๋ฅ ์ ๋์ด๊ธฐ ์ํด ํ์ํ๋ฉฐ, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋, ์ธํฐ๋ฝํธ์ ์ํด ๋ฐ์๋๊ธฐ๋ ํฉ๋๋ค.
- ํ๋ก์ธ์ค 1์ด ์คํ ์ค์ ์ธํฐ๋ฝํธ ๋ฐ์ -> ํ๋ก์ธ์ค 1์ ์ํ๋ฅผ PCB์ ์ ์ฅ.
- CPU๊ฐ ๋์ง ์๋๋ก ํ๊ธฐ ์ํด ํ๋ก์ธ์ค 2์ ์ํ๋ฅผ PCB๋ก๋ถํฐ ๋ถ๋ฌ์ CPU์ ๋ก๋ฉ.
- ์ธํฐ๋ฝํธ ์ข ๋ฃ -> ํ๋ก์ธ์ค 1์ ๋ค์ CPU์ ์ฌ๋ ค์ผ ํจ.
- ํ๋ก์ธ์ค 1์ CPU์ ์ฌ๋ฆฌ๊ธฐ ์ํด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ PCB์ ํ๋ก์ธ์ค 2์ ์ํ ์ ์ฅ.
- ํ๋ก์ธ์ค 1๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด PCB๋ก๋ถํฐ ์ํ๋ฅผ ๋ถ๋ฌ์ด.
- ํ๋ก์ธ์ค 1์ CPU์ ๋ก๋ฉ
์ปจํ ์คํธ ์ค์์นญ์์ ๋ฐ์ํ๋ ๋น์ฉ
1. ์ ํด์๊ฐ์ ๋ฐ์
- ์ปจํ ์คํธ ์ค์์นญ์ ํ ๋ ๋ง๋ค ์ ํด์๊ฐ( CPU๊ฐ ์ผ์ ํ์ง ์๊ณ ์ฌ๋ ์๊ฐ )์ด ์๊ฒจ CPU์ ๊ฐ์ฉ์ฑ์ด ๋จ์ด์ง๋ ๋น์ฉ์ด ๋ฐ์.
2. ์บ์ ๋ฏธ์ค
- ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ทธ๋๋ก ์์ผ๋ฉด ์๋ชป๋ ์ฃผ์๋ณํ์ด ์๊ฒจ TLB ๊ณ์ธต์์ ์ฃผ์๋ณํ์ ์ํด ๊ธฐ์กด์ ์ฃผ์๋ฅผ ์ ๊ฑฐํ๋ ์บ์ ํด๋ฆฌ์ด ๊ณผ์ ์ด ์ผ์ด๋, ์บ์๋ฏธ์ค๊ฐ ๋ฐ์.
3. ์ค๋ฒํค๋
- PCB๋ฅผ ์ ์ฅํ๊ณ , ๋ถ๋ฌ์ค๋ ๋น์ฉ
- ์ค์ผ์ค๋ง์ ๋ํ ๋น์ฉ
- ์ค๋ ๋ ๊ฐ์ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ/์๊ฐ < ํ๋ก์ธ์ค ๊ฐ ์ปจํ ์คํธ ์ค์์น ๋น์ฉ/์๊ฐ
>> ์๋ฌด๋๋ ์ค๋ ๋๋ผ๋ฆฌ๋ ์คํ์์ญ์ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ๊ฐ์ ๊ณต๊ฐ์ ๊ณต์ ํ๋ค๋ณด๋, ํ๋ก์ธ์ค์ ๋นํด ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ๊ณผ ์๊ฐ์ด ์ ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
ํ๋ก์ธ์ค ์ํ
ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋์ ๋ณ๊ฒฝ๋๋ ๊ณ ์ ์ํ๋ฅผ ๋งํฉ๋๋ค. PCB์ ์ ์ฅ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก 5๊ฐ์ง์ ์ํ๋ฅผ ๊ฐ์ง๋๋ค.
- ์์ฑ (NEW) : ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ์ํ๋ก PCB๋ง ํ ๋น๋ ์ํ. fork(), exec()์ ๊ฐ์ ํธ์ถ์ ํตํด ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ธฐ๋ง ํ ์ํ.
- ์ค๋น (READY) : ์คํ์ ์ํด ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ก, ์ค๋น ํ์ ๋ค์ด๊ฐ์ ๋๊ธฐํ๋ฉด์ CPU ์ค์ผ์ค๋ฌ๋ก๋ถํฐ CPU ์์ ๊ถ์ด ๋์ด์ค๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ.
- ์คํ (RUNNING) : CPU ์์ ๊ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์, ๋ช ๋ น์ด๋ค์ ์ํ์ค์ธ ์ํ.
- ๋๊ธฐ (WAITING) : ํ๋ก์ธ์ค ์คํ ๋์ค (์ ์ถ๋ ฅ๊ณผ ๊ฐ์) ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ ์ ์ ์ค๋จ๋ ์ํ
- ์ข ๋ฃ (EXIT) : ํ๋ก์ธ์ค๊ฐ ์คํ์ ์๋ฃํ๊ณ ์ข ๋ฃ๋ ์ํ๋ก, ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๋ฉฐ, CPU ์์ ๊ถ์ ์์ ์ํ.
<์ฐธ๊ณ ์๋ฃ>
'๐ CS > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422