๐ ํ๋ก์ธ์ค์ ์ค๋ ๋
ํ๋ก์ธ์ค(process)๋ ์ปดํจํฐ์์ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์ ๋งํ๋ฉฐ CPU ์ค์ผ์ค๋ง์ ๋์์ด ๋๋ ์์
(task)์ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฐ์ธ๋ค. ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด ์์
์ ํ๋ฆ์ ์ง์นญํ๋ค.
ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฉด ํ๋ก์ธ์ค๊ฐ ๋๋ ์ธ์คํด์คํ๊ฐ ์ผ์ด๋๊ณ , ์ดํ ์ด์์ฒด์ ์ CPU ์ค์ผ์ค๋ฌ์ ๋ฐ๋ผ CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํฉ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฉด CPU๋ ํ๋ก๊ทธ๋จ์ ์์ ์ฃผ์๋ฅผ PC๋ก ์ค์ ํฉ๋๋ค.
- ์ดํ PC๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ , ์คํ์ด ๋๋๋ฉด PC๋ฅผ ๋ค์ ๋ช ๋ น์ด๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ปจํ ์คํธ ์ค์์นญ ์, ๊ฐ ํ๋ก์ธ์ค์ PC์ ๊ด๋ จ ๋ ์ง์คํฐ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ณต๊ตฌํฉ๋๋ค.
*Program Counter(PC)๋?
Program Counter๋ CPU๊ฐ ํ์ฌ ์คํ ์ค์ธ ๋ช ๋ น์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ์ด๋ค.
1) ํ๋ก์ธ์ค ๋ก๋ฉ: ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ํด ์ด์์ฒด์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ค. ์ด ๊ณผ์ ์์ ์คํ ํ์ผ(๋ฐ์ด๋๋ฆฌ ์ฝ๋)์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐฐ์น๋๊ณ , ์คํ์ ์ํ ํ์ ๋ฐ์ดํฐ(์คํ, ํ, ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ ๋ฑ)๋ ์ค์ ๋๋ค.
2) ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC) ์ด๊ธฐํ: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ฉด, CPU๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC) ๋ ์ง์คํฐ๋ฅผ ์ค์ ํ์ฌ ์ฒซ ๋ฒ์งธ ์คํํ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ ํ๋ก๊ทธ๋จ์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด์ด๋ค.
3) ๋ช
๋ น์ด ์คํ: CPU๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์๋ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์คํํ๋ค. ๋ช
๋ น์ด๊ฐ ์คํ๋๋ฉด, ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ ์๋์ผ๋ก ์
๋ฐ์ดํธ ๋์ด ๋ช
๋ น์ด์ ๋ค์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ช
๋ น์ด๊ฐ ์คํ๋ ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ 1๋งํผ ์ฆ๊ฐํ๊ฑฐ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฃผ์๋ก ๋ณ๊ฒฝ๋ ์ ์๋ค(์: ์กฐ๊ฑด๋ฌธ, ํจ์ ํธ์ถ ๋ฑ)
4) ํ๋ก์ธ์ค ์ค์ผ์ค๋ง: ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ๋ CPU ์ค์ผ์ค๋ฌ๋ ๊ฐ ํ๋ก์ธ์ค์ CPU ์๊ฐ์ ํ ๋นํ๋ค. ์ด๋, ๊ฐ ํ๋ก์ธ์ค์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ์ํ๊ฐ ๊ด๋ฆฌ๋์ด, ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ค์ ์คํ๋ ๋ ์ด์ ์ ์คํํ๋ ์ง์ ์์๋ถํฐ ๋ค์ ์คํ๋ ์ ์๋๋ก ํ๋ค.
5) ํ๋ก์ธ์ค ์ข
๋ฃ: ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๋ฉด ๋ ์ด์ ์คํํ ๋ช
๋ น์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ ์ข
๋ฃ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์ํ๋ฅผ ๋ํ๋ธ๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ํ๋ก์ธ์ค๋ฅผ ์ ๊ฑฐํ๋ค.
๐ ํ๋ก์ธ์ค์ ์ปดํ์ผ ๊ณผ์
์ปดํ์ผ์ ์ธ๊ฐ์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ์์ฑ๋ ์ธ์ด๋ฅผ CPU๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํํ๋ ์์
์ ๋งํ๋ค.
1. ์ปดํ์ผ ์ธ์ด(Compiled Language)
์ปดํ์ผ ์ธ์ด๋ ์์ฑ๋๋ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด(๋ฐ์ด๋๋ฆฌ ์ฝ๋)๋ก ๋ณํํ๋ ๊ณผ์ (์ปดํ์ผ)์ ๊ฑฐ์ณ ์คํ๋๋ ์ธ์ด์ด๋ค. ์์ค ์ฝ๋๋ ์ปดํ์ผ๋ฌ๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ํด ๋ฏธ๋ฆฌ ๊ธฐ๊ณ์ด๋ก ๋ณํ๋๋ฉฐ, ์ด ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ปดํ์ผ ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋๋ค. ๋ณํ๋ ๊ธฐ๊ณ์ด ํ์ผ์ด ์คํ๋๋ฏ๋ก, ํ๋ก๊ทธ๋จ ์คํ ์๋๊ฐ ๋น ๋ฅธ ํธ์ด๋ค.
- ๋ํ ์ธ์ด: C, C++, Rust, Go, Swift
- ํน์ง: ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋๋ฅผ ํ ๋ฒ์ ๊ธฐ๊ณ์ด๋ก ๋ณํํด ์คํ ํ์ผ์ ๋ง๋ ๋ค.
- ๊ณผ์
1) ์ ์ฒ๋ฆฌ(Preprocessing): ๋งคํฌ๋ก ์นํ, ์ฃผ์ ์ ๊ฑฐ ๋ฑ
2) ์ปดํ์ผ(Compilation): ์ ์ฒ๋ฆฌ๋ ์ฝ๋๋ฅผ ์ค๊ฐ ์ฝ๋๋ ์ด์
๋ธ๋ฆฌ์ด๋ก ๋ณํ
3) ์ด์
๋ธ๋ฆฌ(Assembly): ์ด์
๋ธ๋ฆฌ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์ค๋ธ์ ํธ ํ์ผ์ ์์ฑ
4) ๋งํน(Linking): ์ค๋ธ์ ํธ ํ์ผ๋ค์ ๋ฌถ์ด ์ต์ข
์คํ ํ์ผ์ ์์ฑํ๋ค.
- ์ฅ์ : ๋น ๋ฅธ ์คํ ์๋, ์คํ ํ์ผ ์์ฑ ํ์๋ ์ถ๊ฐ์ ์ธ ์ปดํ์ผ์ด๋ ํด์์ด ํ์ ์๋ค.
- ๋จ์ : ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ ํ์ผ์ ์ปดํ์ผํด์ผ ํ ์ ์๋ค.
2. ์ธํฐํ๋ฆฌํฐ ์ธ์ด(Interpreted Language)
์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ํด์ํ๋ฉด์ ์คํํ๋ ๋ฐฉ์์ด๋ค. ์์ค ์ฝ๋๊ฐ ์ธํฐํ๋ฆฌํฐ๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ํด ์ค์๊ฐ์ผ๋ก ํด์๋๊ณ , ์ด๋ฅผ ์ฆ์ ์คํํ๋ค. ์ปดํ์ผ ๊ณผ์ ์์ด ๋ฐ๋ก ์คํํ ์ ์์ผ๋ฏ๋ก ์ฝ๋ ์์ ํ ๊ณง๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์คํ ์๋๋ ์ปดํ์ผ ์ธ์ด๋ณด๋ค ๋๋ฆด ์ ์๋ค.
- ๋ํ ์ธ์ด: Python, Ruby, JavaScript
- ํน์ง: ์ธํฐํ๋ฆฌํฐ๊ฐ ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ์ฝ์ด๊ฐ๋ฉฐ ์คํํ๊ธฐ ๋๋ฌธ์, ๋ณ๋์ ์คํ ํ์ผ์ ์์ฑํ์ง ์๊ณ ๋ฐ๋ก ์คํ๋๋ค.
- ๊ณผ์
1) ์์ค ์ฝ๋ ํด์ ๋ฐ ์คํ: ์ธํฐํ๋ฆฌํฐ๊ฐ ์ฝ๋ ๋ผ์ธ์ ํด์ํ๊ณ , ์ฆ์ ์คํํ๋ค.
- ์ฅ์ : ์ฝ๋ ์์ ํ ๋ฐ๋ก ์คํํ ์ ์์ด ๋น ๋ฅด๊ฒ ํ
์คํธ ๊ฐ๋ฅํ๋ค.
- ๋จ์ : ์คํ ์ค์ ์ฝ๋๊ฐ ํด์๋๋ฏ๋ก ์๋๊ฐ ๋๋ฆด ์ ์๋ค.
3. ๋ฐ์ดํธ์ฝ๋ ์ธ์ด(Bytecode Language)
๋ฐ์ดํธ์ฝ๋ ์ธ์ด๋ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ผ๋ ์ค๊ฐ ์ฝ๋ ํํ๋ก ๋ณํํ์ฌ ์คํํ๋ ์ธ์ด๋ฅผ ๋งํ๋ค. ๋ฐ์ดํธ์ฝ๋๋ ์ปดํ์ผ๋ ์์ค ์ฝ๋์ ์ค๊ฐ ํํ๋ก, ๊ธฐ๊ณ์ด๊ฐ ์๋ ํ๋ซํผ ๋
๋ฆฝ์ ์ธ ๋ช
๋ น์ด ์งํฉ์ด๋ค. ์ฆ, ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ฐ์๋จธ์ (Virtual Machine)์ด ํด์ํ์ฌ ์คํํ๋ค.
- ๋ํ ์ธ์ด: Java, C#, Kotlin
- ํน์ง: ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋ ๋ผ๋ ์ค๊ฐ ์ฝ๋๋ก ๋ณํํ๊ณ , ์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ ๋๋ ๊ฐ์๋จธ์ (VM)์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ํด์ํ๊ฑฐ๋ ์ปดํ์ผํด์ ์คํํ๋ค.
- ๊ณผ์
1) ์ปดํ์ผ: ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ
2) ์คํ: ๊ฐ์ ๋จธ์ (JVM ๋ฑ)์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ฑฐ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํ ํ ์คํ
- ์ฅ์ : ํ๋ซํผ ๋
๋ฆฝ์ ์คํ์ด ๊ฐ๋ฅํ๊ณ , ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ณด๋ค ์๋๊ฐ ๋น ๋ฅผ ์ ์๋ค.
- ๋จ์ : ๊ฐ์ ๋จธ์ ์ด ํ์ํ ํ๊ฒฝ์์๋ง ์คํ๋๋ฉฐ, ๊ฐ์ ๋จธ์ ๋ก๋ฉ์ ์ถ๊ฐ ์๊ฐ์ด ์์๋๋ค.
'๐CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ํํธ์จ์ด V&V(Verification & Validation) (2) | 2024.11.20 |
---|---|
[OS]ํ๋ก์ธ์ค์ ์ค๋ ๋(2) (0) | 2024.11.19 |
ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง, ์ ์ ์ฝ๋ ๋ถ์/๋์ ์ฝ๋ ๋ถ์ (0) | 2024.11.11 |
์ ๋ก ํธ๋ฌ์คํธ (2) | 2024.11.04 |
๊ธฐ์ ๋ฉด์ ์ง๋ฌธ ๋ชจ์ / ๋ฉด์ CS ์ง๋ฌธ ๋ชจ์ (2) | 2024.11.03 |