1. ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์ธํฐ๋ฝํธ
ํ๋ก๊ทธ๋จ์ด CPU์์ ๋ช ๋ น์ ์ํํ๋ ค๋ฉด ํด๋น ๋ช ๋ น์ ๋ด์ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ์์ญ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์์ด์ผ ํ๋ค.
- ํ๋ก๊ทธ๋จ ์ฃผ์ ์์ญ
- ์ฝ๋(code) : ์์ฑํ ํ๋ก๊ทธ๋จ ํจ์๋ค์ ์ฝ๋๊ฐ CPU์์ ์ํํ ์ ์๋ ๊ธฐ๊ณ์ด ๋ช ๋ น ํํ๋ก ๋ณํ๋์ด ์ ์ฅ๋จ
- ๋ฐ์ดํฐ(data) : ์ ์ญ ๋ณ์ ๋ฑ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ถ๋ถ
- ์คํ(stack) : ํจ์๊ฐ ํธ์ถ๋ ๋ ํธ์ถ๋ ํจ์์ ์ํ์ ๋ง์น๊ณ ๋ณต๊ทํ ์ฃผ์ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋จ
์ธํฐ๋ฝํธ๋ก ์ธํด CPU๋ฅผ ๋นผ์๊ธด ์์น๋ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก์ ์ ์ฅ๋๋ค.
- ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก(PCB) : ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ์์ ์์ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ด๋ ๋ถ๋ถ๊น์ง ์ํํ๋์ง๋ฅผ ์ ์ฅํ๊ณ , ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ํ ํ๋ก์ธ์ค ์ ์ด๋ธ๋ก์ ์ ์ฅ๋ ์ฃผ์๋ฅผ ๋ณต์์์ผ ์๋ ์ํํ๋ ์ผ์ ์ฌ๊ฐํ๊ฒ ๋๋ค.
2. ์ปดํจํฐ ์์คํ ์ ์๋ ๊ฐ์
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ(Program Counter, PC) : CPU๊ฐ ์ํํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ด๊ณ ์๋ ๋ ์ง์คํฐ
3. ํ๋ก๊ทธ๋จ์ ์คํ
ํ๋ก๊ทธ๋จ์ด ์คํ(program execution)๋๊ณ ์๋ค๋ ๊ฒ์ 2๊ฐ์ง์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- 1. ๋์คํฌ์ ์กด์ฌํ๋ ์คํํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋ค๋ ์๋ฏธ์ด๊ณ ,
- 2. ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ํ ๋น๋ฐ๊ณ ๋ช ๋ น์ ์ํํ๊ณ ์๋ ์ํ๋ผ๋ ๋ป์ด๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ(virtual memory) / ๋ ผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ(logical memory)
- ํ๋ก๊ทธ๋จ๋ง๋ค ๋ ์์ ์ผ๋ก ์กด์ฌํ๋ ํ๋ก์ธ์ค์ ์ฃผ์๊ณต๊ฐ์ด๋ฉฐ, ์ค์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ๋ ์์ ์ธ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๋ถ๋ฅธ๋ค.
์ปค๋
- ์ปค๋์ ์ฝ๋ : CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ถ๋ถ๊ณผ ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๋ถ๋ถ์ด ์ฃผ๋ฅผ ์ด๋ฃฌ๋ค. ์์คํ ์ฝ ๋ฐ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ถ๋ถ์ ํฌํจํ๋ค.
- ์ปค๋์ ๋ฐ์ดํฐ : ๊ฐ์ข
์์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ ์ฅ๋๋ค. CPU์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ํ๋์จ์ด ์์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ ํ์ฌ ์ํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํฌํจํ๊ณ ์๋ค.
- PCB๋ฅผ ๊ฐ์ง๊ณ ์๋ค. PCB๋ ๊ฐ ํ๋ก์ธ์ค์ ์ํ, CPU ์ฌ์ฉ ์ ๋ณด, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ ๋ณด ๋ฑ์ ์ ์งํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ์ปค๋์ ์คํ : ํจ์ ํธ์ถ ์ ๋ณต๊ท ์ฃผ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค. ํ์ฌ ์ํ ์ค์ธ ํ๋ก์ธ์ค๋ง๋ค ๋ณ๋์ ์คํ์ ๋์ด ๊ด๋ฆฌํ๋ค.
4. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์
์ฌ์ฉ์ ์ ์ ํจ์
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์์ฑํ ํจ์
- ํด๋น ํ๋ก๊ทธ๋จ์ ์ฝ๋ ์์ญ์ ๊ธฐ๊ณ์ด ๋ช ๋ น ํํ๋ก ์กด์ฌํ๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋์ ํด๋น ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ํฌํจ๋๋ฉฐ, ํจ์ํธ์ถ ์์๋ ์์ ์ ์ฃผ์ ๊ณต๊ฐ์ ์๋ ์คํ์ ์ฌ์ฉํ๋ค.
์ปค๋ํจ์
- ์ด์์ฒด์ ์ปค๋์ ์ฝ๋์ ์ ์๋ ํจ์
- ์์คํ ์ฝ ํจ์ : ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด ํธ์ถ
- ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ํจ์ : ๊ฐ์ข ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด๊ฐ CPU์ ์๋น์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด ๋ฐ์์ํค๋ ํจ์
- ์ด์์ฒด์ ์ปค๋์ ์ฃผ์ ๊ณต๊ฐ์ ์ฝ๋๊ฐ ์ ์๋๋ค.
- printf() ํจ์์ ๊ฒฝ์ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์ง๋ง ํน๊ถ๋ช ๋ น์ธ ์ ์ถ๋ ฅ์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ printf()๋ด์์ ์ปค๋ํจ์๋ฅผ ํธ์ถํ๋ ์์คํ ์ฝ์ ํฌํจํ๋ค.
5. ์ธํฐ๋ฝํธ
์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ์ค์ ๋ ๋ค๋ฅธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ฌธ์ ๋ก ์์น์ ์ผ๋ก๋ ํ์ฉํ์ง ์์ผ๋, ์ธํฐ๋ฝํธ๋ง๋ค ์ค์๋๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋ฎ์ ์ค์๋๋ฅผ ๊ฐ์ง ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ค์ ์ค์๋๊ฐ ๋ ๋์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ๋ฝํ ํ์๊ฐ ์๋ค.
- ๊ทธ๋ด ๊ฒฝ์ฐ, ํ์ฌ ์ฒ๋ฆฌ ์ค์ด๋ ์ธํฐ๋ฝํธ ์ฝ๋์ ์ํ ์ง์ ์ ์ ์ฅํ๊ณ ์ฐ์ ์์๊ฐ ๋์ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋ค์ ์ ์ฅ๋ ์ฃผ์๋ก ๋ณต๊ทํด ์ด์ ์ ์ํํ๋ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์ํํ๋ค.
6. ์์คํ ์ฝ
์์คํ ์ฝ์ ์ผ๋ฐ์ ์ธ ํจ์ํธ์ถ๊ณผ๋ ๋ค๋ฅด๊ฒ ์์ ์ ์ฃผ์ ๊ณต๊ฐ ๋ด์์ ํธ์ถ์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ์๋๋ผ ์ปค๋์ด๋ผ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ๊ณต๊ฐ์ ์กด์ฌํ๋ ํจ์๋ฅผ ํธ์ถํ๋ค.
- ์์คํ ์ฝ์ ํจ์ํธ์ถ์ ์ํด ์์ ์ ์ธํฐ๋ฝํธ ๋ผ์ธ์ ์ธํฐ๋ฝํธ๋ฅผ ์ธํ ํ๋ ๋ช ๋ น์ ์ฌ์ฉํ๋ค.
7. ํ๋ก์ธ์ค์ ๋ ๊ฐ์ง ์คํ ์ํ
- ์ฌ์ฉ์๋ชจ๋์์์ ์ดํ ์ํ(user mode running)
- ์ปค๋๋ชจ๋์์์ ์คํ ์ํ(kernel mode running)
๋๊ธ