๐Ÿ“š CS [ComputerScience]/๐Ÿง ์šด์˜์ฒด์ œ [OS]

๐Ÿ“š [CS๋ฉด์ ‘] ์šด์˜์ฒด์ œ(OS)๋ž€ ?

Dbswnstjd 2023. 12. 26. 21:03

๐Ÿ’ก์šด์˜์ฒด์ œ๋ž€ ?

์šด์˜์ฒด์ œ๋Š” ํ•˜๋“œ์›จ์–ด ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ณ , ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์™€ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด๋ฅผ ์ค‘์žฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธ

์ธํ„ฐํŽ˜์ด์Šค : ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ์‹œ์Šคํ…œ ์‚ฌ์ด์—์„œ ์ •๋ณด๋‚˜ ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ ‘์ ์ด๋‚˜ ๊ฒฝ๊ณ„๋ฅผ ์˜๋ฏธ

 

 

์ปค๋„์ด๋ž€ ?

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ ์žฌ๋œ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜์ฒด์ œ ์—ญ์‹œ ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋‚˜, ์šด์˜์ฒด์ œ์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ์ „์ฒด๋ฅผ ๋‹ค ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋‚ญ๋น„)

 

๋”ฐ๋ผ์„œ ์ปค๋„(kernel)์ด๋ผ๊ณ  ํ•˜๋Š” ํ•ญ์ƒ ํ•„์š”ํ•œ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„๋งŒ์„ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜์—ฌ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋” ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ๋ฅผ ์˜์—ญ์— ๋”ฐ๋ผ ์„ค๋ช… ?

- ์ฝ”๋“œ ์˜์—ญ(ํ…์ŠคํŠธ ์˜์—ญ)

์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์œผ๋กœ, 'ํ…์ŠคํŠธ' ์˜์—ญ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. CPU๋Š” ํ•ด๋‹น ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

- ๋ฐ์ดํ„ฐ ์˜์—ญ(static ์˜์—ญ)

 ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋Š” ๋™์‹œ์— ํ• ๋‹น๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค.

 

- ํž™ ์˜์—ญ (Heap)

 ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์ด๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋™์ ์œผ๋กœ ํ• ๋‹น ๋ฐ ํ—ค์ œ๋ฉ๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋ฏ€๋กœ new๋กœ ์ƒ์„ฑํ•œ object๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ํž™ ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

- ์Šคํƒ ์˜์—ญ (Stack)

 ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์— ๋”ฐ๋ฅธ ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์œผ๋กœ, ์ปดํŒŒ์ผ ์‹œ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๊ณ , ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ์„ ํฌ๊ฒŒ ์žก๊ฒŒ ๋˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์ผ?

ํž™ ์˜์—ญ์€ ์Šคํƒ ์˜์—ญ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง์ ‘ ์ƒ์„ฑ๋œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐ๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 

๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ์ด ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด, ๋„“์€ ํž™ ์˜์—ญ์— ์กด์žฌํ•˜๋Š” ๋™์  ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ฐธ์กฐ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Garbage Collect์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ Java์˜ JVM์—์„œ๋„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํž™ ์˜์—ญ์„ ํฌ๊ฒŒ ์žก์ง€ ์•Š๊ณ , Heap ์˜์—ญ์ด ๊ฝ‰ ์ฐผ์„ ๋•Œ GC ์ง„ํ–‰ ํ›„ Heap ์˜์—ญ์„ ํ™•์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ๊ณผ ์Šคํƒ ์˜์—ญ์˜ ์ฐจ์ด์ 

  ์Šคํƒ ์˜์—ญ (Stack Area) ํž™ ์˜์—ญ (Heap Area)
์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ณ€์ˆ˜ (new ์—ฐ์‚ฐ์ž)
ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ํƒ€์ด๋ฐ ์ปดํŒŒ์ผ (Compile) ๋Ÿฐํƒ€์ž„ (Runtime)
ํฌ๊ธฐ ์ œํ•œ ์Šคํƒ ํฌ๊ธฐ๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๋‹ค. ํฌ๊ธฐ๊ฐ€ ์ œํ•œ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. (๋Š˜์–ด๋‚จ)
์ฃผ์†Œ ํ• ๋‹น ๋ฐฉํ–ฅ ๋†’์€ ์ฃผ์†Œ → ๋‚ฎ์€ ์ฃผ์†Œ ๋‚ฎ์€ ์ฃผ์†Œ → ๋†’์€ ์ฃผ์†Œ
๋น„๊ต ํž™์— ๋น„ํ•ด ๋น ๋ฅด๋‹ค, ํ•จ์ˆ˜์— ์ข…๋ฃŒ์— ๋”ฐ๋ผ ์†Œ๋ฉธ๋˜๋ฏ€๋กœ ๋ณ„๋‹ค๋ฅธ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š” ์—†๋‹ค. ์Šคํƒ์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค, ์ง์ ‘ ํž™ ์˜์—ญ ๊ด€๋ฆฌ ํ•„์š”

๋‘ ์˜์—ญ์€ ๊ฐ™์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š”๋ฐ, ์Šคํƒ์€ ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ๋กœ, ํž™์€ ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ๋กœ ์ฑ„์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ์˜ ์˜์—ญ์„ ๋ˆ„๊ฐ€ ์นจ๋ฒ”ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ heap overflow, stack overflow๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์ชฝ์— ์œ„์น˜ํ•  ์ˆ˜๋ก ๋‚ฎ์€ ์ฃผ์†Œ์ด๋ฉฐ, ์•„๋ž˜์ชฝ์— ์œ„์น˜ํ•  ์ˆ˜๋ก ๋†’์€ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด

1) ํ”„๋กœ์„ธ์Šค

- ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(์ฃผ๊ธฐ์–ต์žฅ์น˜)์— ์ ์žฌ๋˜์–ด ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

- PCB, code, data, heap, stack ์˜์—ญ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

- ํ”„๋กœ์„ธ์Šค๋ณ„ ๊ฐ๊ฐ์˜ ์˜์—ญ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋‹ค๋ฅธ ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

- ํ”„๋กœ์„ธ์Šค๋ณ„ ๊ฐ๊ฐ์˜ ์˜์—ญ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— context switching ๋น„์šฉ์ด ํฝ๋‹ˆ๋‹ค.

- ํ”„๋กœ์„ธ์Šค ์“ฐ๋ ˆ๋“œ๋ณด๋‹ค ๋ฌด๊ฒ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ ์‹œ๊ฐ„์ด ๋” ๊น๋‹ˆ๋‹ค.

- ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

2) ์“ฐ๋ ˆ๋“œ

- ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์‹คํ–‰ ๋‹จ์œ„, ์‹คํ–‰์˜ ํ๋ฆ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

- stack ์˜์—ญ๋งŒ ๋ณ„๋„๋กœ ๊ฐ–๊ณ , ๋‚˜๋จธ์ง€ ์˜์—ญ(code, data, heap)์— ๋Œ€ํ•ด์„œ๋Š” ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

- stack ์˜์—ญ ์™ธ๋ถ€์˜ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ์ ‘๊ทผ ์‹œ ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

- stack ์˜์—ญ ์™ธ๋ถ€๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์ด ์ ์Šต๋‹ˆ๋‹ค.

- ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ ์‹œ๊ฐ„์ด ๋” ์งง์Šต๋‹ˆ๋‹ค.

- ํ•œ ์“ฐ๋ ˆ๋“œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋ฉด, ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์“ฐ๋ ˆ๋“œ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

์ถœ์ฒ˜: https://hoons-dev.tistory.com/95

 

'๐Ÿ“š CS [ComputerScience] > ๐Ÿง ์šด์˜์ฒด์ œ [OS]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[4์ฃผ์ฐจ] Quiz  (0) 2021.03.25
[3์ฃผ์ฐจ] Quiz  (0) 2021.03.16
[2์ฃผ์ฐจ] Quiz  (0) 2021.03.12
[1์ฃผ์ฐจ] Quiz  (0) 2021.03.10