๐Ÿ“•CS

[OS]ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ(1)

stonesy 2024. 11. 13. 15:13
728x90

๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

ํ”„๋กœ์„ธ์Šค(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 ๋“ฑ)์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ฑฐ๋กœ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ ํ›„ ์‹คํ–‰
- ์žฅ์ : ํ”Œ๋žซํผ ๋…๋ฆฝ์  ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
- ๋‹จ์ : ๊ฐ€์ƒ ๋จธ์‹ ์ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, ๊ฐ€์ƒ ๋จธ์‹  ๋กœ๋”ฉ์— ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

728x90