๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ—ฃ๏ธ ์‹ ์ž… ์ธํ„ฐ๋ทฐ/์šด์˜์ฒด์ œ

์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ๋ฉด์ ‘ : ์šด์˜์ฒด์ œ

๐Ÿ”ฎ ์šด์˜์ฒด์ œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์šด์˜์ฒด์ œ๋ž€ ํ•˜๋“œ์›จ์–ด ์œ„์— ์„ค์น˜๋˜์–ด ํ•˜๋“œ์›จ์–ด ๊ณ„์ธต๊ณผ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ๊ณ„์ธต์„ ์—ฐ๊ฒฐํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์› (์˜ˆ๋ฅผ ๋“ค์–ด CPU ์‹œ๊ฐ„, ์šด์˜๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„, ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ์Šคํƒ ํž™์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋“ฑ) ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ  ์‹œ์Šคํ…œ ์ฝœ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์‹œ์Šคํ…œ ์ฝœ์ด๋ž€ ์ปค๋„ ๋ชจ๋“œ์™€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ ๊ฐ„์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. OS๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด์˜ ์ฃผ์š” ์ž์›์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ์ปค๋„ ๋ชจ๋“œ์™€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค์—์„œ ์ž์›์— ์ ‘๊ทผํ•ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋Š” ์‹œ์Šคํ…œ ์ฝœ๋กœ ํ•„์š”ํ•œ ์š”์ฒญ์„ ํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋Œ๋ ค๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” `fork()`, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” `wait()`๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

CPU๋Š” "์ปดํ“จํ„ฐ์˜ ๋‡Œ" ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ ํ”„๋กœ์„ธ์„œ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์–ต์žฅ์น˜๋กœ, ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์ธ ์ฃผ ๊ธฐ์–ต์žฅ์น˜ (RAM), ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์ธ ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜(SSD, HDD) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํœ˜๋ฐœ์„ฑ์ด๋ž€ ์ „์› ๊ณต๊ธ‰์ด ์ค‘๋‹จ๋˜๋ฉด ์ €์žฅ๋œ ์ •๋ณด๊ฐ€ ์—†์–ด์ง€๋Š” ์„ฑ์งˆ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์—์„œ ๋นจ๋ฆฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก, ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋„๋Š”๋ฐ์š”.CPU์—์„œ ๊ฐ€๊น๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅธ ์ˆœ์„œ๋Œ€๋กœ ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ, RAM, ํ•˜๋“œ ๋””์Šคํฌ ์˜ ๊ตฌ์กฐ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

 

๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด๋ถ€์—,

์บ์‹œ๋Š” CPU ์™€ RAM ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์–ต์žฅ์น˜๋กœ CPU ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์ปค๋„์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

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

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

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


๐Ÿ”ฎ ์‹คํ–‰ํŒŒ์ผ์˜ ์ƒ์„ฑ ๊ณผ์ •์„ ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

 

์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑ ๊ณผ์ •์€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

 

  1. ์†Œ์Šค ์ฝ”๋“œ ์ž‘์„ฑ: ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” C, C++, Java ๋“ฑ์˜ ๊ณ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ „์ฒ˜๋ฆฌ (Preprocessing): ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ง€์‹œ์ž(#include, #define ๋“ฑ)๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, C/C++์—์„œ #include ์ง€์‹œ์ž๋Š” ํ•ด๋‹น ํ—ค๋” ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์†Œ์Šค ํŒŒ์ผ์— ํฌํ•จ์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปดํŒŒ์ผ (Compilation): ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ „์ฒ˜๋ฆฌ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ๋ฌผ์€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์€ ํ”Œ๋žซํผ์— ํŠนํ™”๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, .obj, .o ๋“ฑ์˜ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋งํ‚น (Linking): ๋ง์ปค๋Š” ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๊ณผ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ฐ ํŒŒ์ผ ๋‚ด์˜ ์‹ฌ๋ณผ(ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋“ฑ) ์ฐธ์กฐ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ(์˜ˆ: .exe ๋˜๋Š” .out)์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  5. ์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑ: ๋งํ‚น ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ์ตœ์ข…์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์šด์˜์ฒด์ œ์—์„œ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ํ•„์š”ํ•œ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ณผ์ •์„ ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

 

๋กœํŒจ๋””์‹ค

 

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด, OS๊ฐ€ ๋””์Šคํฌ์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ LOAD ํ•ฉ๋‹ˆ๋‹ค. 

 

(1) ๋กœ๋”ฉ : ์‹คํ–‰ ํŒŒ์ผ์ด ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

(2) ํŒจ์น˜ : ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋œ ๋ช…๋ น์–ด๋“ค์ด CPU ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์˜ฎ๊ฒจ์ง‘๋‹ˆ๋‹ค.

(3) ๋””์ฝ”๋”ฉ : CPU ์ œ์–ด์žฅ์น˜์—์„œ ๋ช…๋ น์–ด๋“ค์„ ํ•ด์„ํ•ด์ฃผ๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

(4) ์‹คํ–‰ : CPU ALU (์‚ฐ์ˆ  ๋…ผ๋ฆฌ ์žฅ์น˜) ์—์„œ ๋””์ฝ”๋”ฉ๋œ ์—ฐ์‚ฐ์ž๋“ค์„ ์‹คํ–‰ํ•ด์ฃผ๋Š” ๋‹จ๊ณ„ ์ž…๋‹ˆ๋‹ค.

 

์ด ์ค‘์—์„œ CPU ๋ช…๋ น์–ด ์‚ฌ์ดํด์„ ํŒจ์น˜, ๋””์ฝ”๋”ฉ, ์‹คํ–‰ ์„ธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฎ CPU ์บ์‹œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

CPU ๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ํ†ต์‹ ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ๋Š” CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€์˜ ์ ‘๊ทผ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด, ์ฆ‰ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ์†๋„ ์ฐจ์ด๋ฅผ ์ขํžˆ๋ ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” CPU ๋‚ด๋ถ€์˜ ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ์ธ๋ฐ์š”. ์บ์‹œ์˜ ํฌ๊ธฐ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์•ž์œผ๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์บ์‹œ ์ ์ค‘๋ฅ  (์บ์‹œ ํžˆํŠธ์œจ) ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์ง€์—ญ์„ฑ์ด๋‚˜ ๊ณต๊ฐ„์ง€์—ญ์„ฑ ๊ฐ™์€ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋Š” ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์‹œ ํ˜น์€ ์ฃผ๋ณ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์‹œ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ์›๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ ์ฐธ์กฐ๋œ ๊ฑด ๋‹ค์‹œ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ (์˜ˆ: ๋ฐ˜๋ณต๋ฌธ)
  • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ : ํ•œ ๋ฒˆ ์ฐธ์กฐ๋œ ๊ฑด ์ฃผ๋ณ€ ๋ฐ์ดํ„ฐ๋„ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. (์˜ˆ: ๋ฐฐ์—ด)

๐Ÿ”ฎ ์บ์‹œ๋ผ์ธ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํ•˜๋‚˜์˜ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒŒ ์•„๋‹Œ, ์บ์‹œ๋ผ์ธ์˜ ํฌ๊ธฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ํฌ๊ธฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„์ง€์—ญ์„ฑ์„ ํ™œ์šฉํ•ด์„œ CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์„œ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ”๋ชจ๋ฆฌ (RAM) ๊ตฌ์กฐ (๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์กฐ) ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. Code, Data, Stack, Heap ์˜์—ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

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

Data ์˜์—ญ์—๋Š” ์ „์—ญ๋ณ€์ˆ˜์™€ ์ •์ ๋ณ€์ˆ˜, ๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ์„ธ๋ถ€์ ์œผ๋กœ BSS(Block Stated Symbol) ์˜์—ญ๊ณผ ๋ฐ์ดํ„ฐ ์˜์—ญ์œผ๋กœ ๋‹ค์‹œ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BSS ์˜์—ญ์€ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ, ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ์ดˆ๊ธฐํ™”ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (์ด๋ ‡๊ฒŒ BSS ์˜์—ญ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋“ค์ด ์‹คํ–‰ ํŒŒ์ผ์— ๋ณ„๋„์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š๊ฒŒ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.) Static ์˜์—ญ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๊ณ  ์ข…๋ฃŒ ์‹œ ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค.

Heap ์˜์—ญ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์œผ๋กœ ๋Ÿฐํƒ€์ž„์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์  ํ• ๋‹น๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. ๋‚ฎ์€ ์ฃผ์†Œ ๊ฐ’์—์„œ ๋†’์€ ์ฃผ์†Œ ๊ฐ’์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋ฉฐ, ์˜์—ญ ํฌ๊ธฐ๋Š” ๋Ÿฐํƒ€์ž„ ๋•Œ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. C ์–ธ์–ด์˜ malloc ํ•จ์ˆ˜, C++์–ธ์–ด์˜ new ํ‚ค์›Œ๋“œ๊ฐ€ ๋™์ ํ• ๋‹น์„ ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ Stack ์˜์—ญ์—๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์— ๋”ฐ๋ฅธ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ ๋ณ€์ˆ˜, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด, ๋ฐ˜ํ™˜๋˜๋Š” ์ฃผ์†Œ ๊ฐ’ ๋“ฑ์ด ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋†’์€ ์ฃผ์†Œ ๊ฐ’์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ ๊ฐ’์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๊ณ , ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

 


๐Ÿ”ฎ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ๊ณผ ์Šคํƒ ์˜์—ญ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

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

 

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

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


๐Ÿ”ฎ Heap Overflow, Stack Overflow์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์‹œ๊ฒ ์–ด์š”?

 

ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ํž™ ์˜์—ญ์ด ์Šคํƒ ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋กœ๋Š” ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์Šคํƒ ์˜์—ญ์ด ํž™ ์˜์—ญ์„ ์นจ๋ฒ”ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜ˆ๋กœ ๊ณผ๋„ํ•œ ์žฌ๊ท€ ํ˜ธ์ถœ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™ ์˜์—ญ์„ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žก์œผ๋ฉด ์–ด๋–ค ์ผ์ด ์ƒ๊ธธ๊นŒ์š”? (C++, Java)

 

`C++`

C++์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ง์ ‘ `new`, `delete`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํž™ ์˜์—ญ์ด ๋„ˆ๋ฌด ํฌ๋ฉด, ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ๊ณผ ๋ถ€๋‹ด์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ double free ๊ฐ™์€ ์˜ค๋ฅ˜์˜ ์œ„ํ—˜์ด ์ปค์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ”„๋ž˜๊ทธ๋จผํ…Œ์ด์…˜ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋น„ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. ํž™ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๋Š” ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํž™ ์˜์—ญ์ด ๊ณผ๋„ํ•˜๊ฒŒ ํฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

`Java`

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

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


๐Ÿ”ฎ OS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์–ด๋–ค ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

์šฐ์„ , ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋กœ์ง€ '์šด์˜์ฒด์ œ'๋งŒ์ด ์šด์˜์ฒด์ œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ์‚ฌ์šฉ์ž ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์ ‘๊ทผ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ OS๋งŒ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ ์ ˆํ•œ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•œ Swapping, Paging/Segmentation, ๊ณ ์ • ๊ธธ์ด ํ• ๋‹น/๊ฐ€๋ณ€ ๊ธธ์ด ํ• ๋‹น, ์••์ถ• ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ OS๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ค‘, ์—ฐ์† ๋ฐฉ์‹๊ณผ ๋น„์—ฐ์† ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹์€, ํ”„๋กœ์„ธ์Šค ์ด๋ฏธ์ง€๊ฐ€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์€ ์˜จ์ „ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ '๊ณ ์ • ๊ธธ์ด ํ• ๋‹น'๊ณผ '๊ฐ€๋ณ€ ๊ธธ์ด ํ• ๋‹น'์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ณ ๊ฐ€

  • ๊ณ ์ • ๊ธธ์ด ํ• ๋‹น : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด๋กœ ํŒŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•ด๋‹น ํŒŒํŠธ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ •๋œ ๊ธธ์ด์˜ ํŒŒํŠธ ๋‚ด์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ, ์—ฌ๋ฐฑ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ '๋‚ด๋ถ€ ๋‹จํŽธํ™”'๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€๋ณ€ ๊ธธ์ด ํ• ๋‹น : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ์„ธ์Šค์˜ ๊ธธ์ด์— ์•Œ๋งž๊ฒŒ ํŒŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ณ€๋œ ๊ธธ์ด์ด๋ฏ€๋กœ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฐ€๋ณ€์ ์ธ ๊ธธ์ด ํ• ๋‹น์— ์˜ํ•ด ์ผ๋ถ€๋ถ„์ด ๋‚จ์œผ๋ฏ€๋กœ '์™ธ๋ถ€ ๋‹จํŽธํ™”'๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋น„์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹์€, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฐ์†๋œ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹Œ ๋ถ„๋ฆฌ๋œ ์ด๋ฏธ์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋‚˜๋ˆ ์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ,

'ํŽ˜์ด์ง•'๊ณผ '์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜' ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํŽ˜์„ธ, ํ…Œ์ด๋ธ”

  • ํŽ˜์ด์ง• : ํ”„๋กœ์„ธ์Šค์˜ ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ๊ฐ ์ผ์ •ํ•œ ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€์™€ ํ”„๋ ˆ์ž„์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ด๋•Œ ํŽ˜์ด์ง€์™€ ํ”„๋ ˆ์ž„์ด ํฌ๊ธฐ๋Š” ๋™์ผํ•˜๊ตฌ์š”, ํŽ˜์ด์ง€์™€ ํ”„๋ ˆ์ž„์—๋Š” ๊ฐ๊ฐ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•ด ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ”„๋ ˆ์ž„์„ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์™€ ํ”„๋ ˆ์ž„์„ ๋งคํ•‘ํ•˜๋Š” ๋ฐ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€๊ฐ€ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ '๋‚ด๋ถ€ ๋‹จํŽธํ™”'๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹๋ณด๋‹ค๋Š” ์ ๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.)
  • ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ : ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋ณ€์ ์ธ ํฌ๊ธฐ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก๋‹จ์œ„ ์„ธ๊ทธ๋จผํŠธ๋กœ Code, Data, Stack & Heap์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์—ญ์‹œ '์™ธ๋ถ€ ๋‹จํŽธํ™”'๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๋ฐฉ์‹์€ ์—ฐ์†์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐ ์กฐ๊ฐ์ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜์— ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€/์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋งํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋ณ€ ๋ถ„ํ•  ๋ฐฉ์‹์ด๋ž€ ํ• ๋‹นํ•  ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ถ„ํ• ํ•œ๋‹ค๋Š” ๋œป์ธ๋ฐ์š”.

ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • First Fit : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณด๋ฉด์„œ ๋ฐ”๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น ์‹œ๊ฐ„ ๋ฉด์—์„œ ๋น ๋ฅด์ง€๋งŒ, ๋‹จํŽธํ™” ํ˜„์ƒ์œผ๋กœ ์ธํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์•ž๋ถ€๋ถ„์— ์ž‘์€ ์กฐ๊ฐ๋“ค์ด ๋งŽ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Best Fit : ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋๊นŒ์ง€ ๋ณด๊ณ  ๊ฐ€์žฅ ์ž‘์€ ๊ณณ์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ๊ฐ€์žฅ ํšจ๊ณผ์ ์œผ๋กœ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Worst Fit : ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋๊นŒ์ง€ ๋ณด๊ณ  ๊ฐ€์žฅ ํฐ ๊ณณ์— ํ• ๋‹น ํ•ฉ๋‹ˆ๋‹ค. ๋‹จํŽธํ™”๊ฐ€ ๊ฐ€์žฅ ์‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€) Next fit : ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฐธ์กฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ด ๊ณต๊ฐ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ OS์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ „๋žต ์ค‘ ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์„ ๋น„๊ตํ•ด์„œ ์„ค๋ช…ํ•ด ๋ณด์„ธ์š”.

 

  • ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ๋น„์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์œผ๋กœ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง•์€ ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ๊ฐ์˜ ์˜์—ญ์„ 'ํŽ˜์ด์ง€'์™€ 'ํ”„๋ ˆ์ž„'์ด๋ผ๊ณ  ์ผ์ปซ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด์— ์„ธ๊ทธ๋จผํ…Œ์ด์…˜์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ถ„ํ• ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๊ฐ€ ์‰ฝ์ง€๋งŒ, ์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๋ฐฉ์‹์€ ์—ฐ์†์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐ ์กฐ๊ฐ์ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜์— ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€/์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ ๋‹จํŽธํ™” (fragmentation) ๋ฅผ ์–ธ๊ธ‰ํ•˜์…จ๋Š”๋ฐ, ๋‹จํŽธํ™”๊ฐ€ ๋ญ”์ง€ ์•„๋Š”๋Œ€๋กœ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋ฉด ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋นˆ ๊ณต๊ฐ„(์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„) ์ด ๋˜๊ณ  ๊ทธ ๋นˆ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌํ•˜์—ฌ ์ด ๊ณต๊ฐ„๋“ค์ด ํ•˜๋‚˜ ๋‘˜ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ์ˆ˜์น˜์ƒ์œผ๋กœ๋Š” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‚จ์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ณต๊ฐ„์€ ์žˆ์œผ๋‚˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์œผ๋กœ ํฌ๊ฒŒ ๋‚ด๋ถ€, ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ๊ณ ์ •๊ธธ์ด ํ• ๋‹น / ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ •์ ์ธ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ ์ƒํ™ฉ์—์„œ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜๋ˆˆ ๊ฑธ ๋‹ค ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋‚ด๋ถ€์— ๋นˆ๊ณต๊ฐ„์ด ์ƒ๊ธด ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ์–‘๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋” ๋งŽ์ด ํ• ๋‹น๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋‹จํŽธํ™”๋Š” ๊ฐ€๋ณ€๊ธธ์ด ํ• ๋‹น / ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ๊ธฐ๋ฒ•์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์ค‘๊ฐ„์ค‘๊ฐ„์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ฒจ์„œ ๋”์ด์ƒ ํ• ๋‹น์ด ์•ˆ๋˜๋Š” ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋‹จํŽธํ™” ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋‘๊ฐ€์ง€ ๊ธฐ๋ฒ•์ด ์žˆ์œผ๋‚˜ ๊ทผ๋ณธ์ ์œผ๋กœ๋Š” ์™„๋ฒฝํžˆ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. 

  • ํŽ˜์ด์ง• ๊ธฐ๋ฒ• : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ์ • ํฌ๊ธฐ๋กœ ์ชผ๊ฐœ๊ณ  ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์œผ๋‚˜, ์ผ์ •ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ ์„œ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋นˆ๊ณณ์ด ์—†์Šต๋‹ˆ๋‹ค
  • ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ๊ธฐ๋ฒ• : ํŽ˜์ด์ง•์ฒ˜๋Ÿผ ์ผ์ • ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ•„์š”ํ•œ ํฌ๊ธฐ๋งŒํผ์˜ ๊ฐ€๋ณ€์ ์ธ ํฌ๊ธฐ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก๋‹จ์œ„ ์„ธ๊ทธ๋จผํŠธ๋กœ Code, Data, Stack & Heap ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๋งŒํผ ํ• ๋‹นํ•˜๋‹ˆ, ๋‚ด๋ถ€๋‹จํŽธํ™”๊ฐ€ ์• ์ดˆ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์—†์œผ๋‚˜, ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ  ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

 

๋ฉ”๋ชจ๋ฆฌ ์••์ถ• (๋””์Šคํฌ ์กฐ๊ฐ ๋ชจ์Œ), ๋ฉ”๋ชจ๋ฆฌ ํ†ตํ•ฉ (๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒ๋œ ๊ณต๊ฐ„๋“ค์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ์‹œ์ผœ ํฐ ๊ณต๊ฐ„์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ•) ๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํ’€์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ  ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•, ๋ฉ”๋ชจ๋ฆฌ ํ†ตํ•ฉ, ๋ฉ”๋ชจ๋ฆฌ ํ’€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์‹ค๋ž˜์š”?

๋ฉ”๋ชจ๋ฆฌ ์••์ถ•

์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•(Memory Compaction)์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์žฌ๋ฐฐ์น˜ํ•ด์„œ ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CPU๊ฐ€ ๋ช‡ ๊ฐœ์˜ ๋ฐ”์ดํŠธ์”ฉ ์ฝ์–ด์˜ค๊ณ  ๋‹ค์‹œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์žฌ๋ฐฐ์น˜ํ•˜๋ฏ€๋กœ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ธฐ ํšจ์œจ์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

 

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

 

๋ฉ”๋ชจ๋ฆฌ ํ’€(Memory Pool)์€ ์‚ฌ์ „์— ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ด ํ’€์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ด ํ’€์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ’€ ๋‚ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋ธ”๋กœ๊ทธ https://91ms.tistory.com/10


๐Ÿ”ฎ  ์œ ํšจ์ฃผ์†Œ, ์ฃผ์†Œ์ง€์ •๋ฐฉ์‹์„ ์•„์‹œ๋‚˜์š”?

 

์œ ํšจ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์˜๋ฏธํ•˜๊ตฌ์š”. CPU์—์„œ ์ด ์ฃผ์†Œ์ง€์ •๋ฐฉ์‹์„ ํ†ตํ•ด์„œ ์‹ค์ œ ์œ ํšจ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ์ง€์ •๋ฐฉ์‹์€ ๋ช…๋ น์–ด๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์ฃผ์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๋Š๋ƒ์ธ๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ์ง์ ‘ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹ : ์˜คํผ๋žœ๋“œ(์ฃผ์†Œ ํ•„๋“œ) ๋‚ด์˜ ์ฃผ์†Œ๋ฅผ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋กœ ์ง์ ‘ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๊ฐ’์— ๋ฐ”๋กœ ์œ ํšจ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ๋งŒ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํšจ์œจ์ ์ด์ง€๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ ํšจ์ฃผ์†Œ์˜ ํฌ๊ธฐ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
  • ๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹ : ์œ ํšจ ์ฃผ์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์˜คํผ๋žœ๋“œ ํ•„๋“œ์— ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. CPU๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋ชฉ๋ก ์ค‘์— ์œ ํšจ์ฃผ์†Œ๊ฐ€ ์ €์žฅ์ด ๋œ ๊ฒƒ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 2๋ฒˆ์„ ์ฐธ์กฐํ•ด์•ผ ํ•œ๋‹ค. ๋ช…๋ น์–ด์˜ ์ฃผ์†Œํ•„๋“œ๊ฐ€ ์งง๊ณ , ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ์–ด์„œ ๊ธด ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

์ง์ ‘ ์ฃผ์†Œ ์ง€์ •๋ฐฉ์‹
๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ •๋ฐฉ์‹

์ด๋ฏธ์ง€ ์ฐธ๊ณ  : https://velog.io/@hyunji015/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-%EA%B5%AC%EC%A1%B0


๐Ÿ”ฎ  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œํ•„๋“œ๊ฐ€ ์งง๋‹ค๋Š” ๊ฒƒ์ด ์–ด๋–ค ์˜๋ฏธ์ธ๊ฐ€์š”?

 

์ปดํ“จํ„ฐ์˜ ๋ช…๋ น์–ด๋Š” ์—ฌ๋Ÿฌ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” '์ฃผ์†Œํ•„๋“œ(์˜คํผ๋žœ๋“œ)'์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด ์ฃผ์†Œํ•„๋“œ๊ฐ€ ์งง๋‹ค๋ฉด, ์ฆ‰ ๋น„ํŠธ ์ˆ˜๊ฐ€ ์ ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ์ง์ ‘ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๋•Œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์ฃผ์†Œํ•„๋“œ์˜ ๊ธธ์ด๊ฐ€ ์งง์œผ๋ฉด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ ๋ฒ”์œ„๋„ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ชจ๋“  ์œ„์น˜์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œํ•œ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด '๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹'์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋ธ”๋กœ๊ทธ : https://velog.io/@hyunji015/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-%EA%B5%AC%EC%A1%B0


๐Ÿ”ฎ  ๊ฐ€์‹œ์„ฑ, ์›์ž์„ฑ์„ ์•„์‹œ๋‚˜์š”?

 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ ์ž์›์„ ์‚ฌ์šฉ (ํŠนํžˆ write ์—ฐ์‚ฐ) ํ•  ๋•Œ, ๋‘๊ฐ€์ง€๋ฅผ ์‹ ๊ฒฝ์จ์ค˜์•ผ ํ•˜๋Š”๋ฐ์š”.

์ฒซ ๋ฒˆ์งธ๋Š” ๊ฐ€์‹œ์„ฑ์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ์›์ž์„ฑ์ž…๋‹ˆ๋‹ค.

 

๊ฐ€์‹œ์„ฑ (Visibility)์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ ๊ณต์œ ์ž์›์— ๋Œ€ํ•ด์„œ ๋ชจ๋‘ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์Šค๋ ˆ๋“œ์—์„œ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋Š” ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑฐ์ฃ . CPU์˜ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ด์œผ๋กœ์จ ํ•ด๊ฒฐํ•˜๊ฒŒ ํ•˜๋Š”๊ฑฐ์ฃ .

  • C++์—์„œ volatile์€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์›์ž์  ์ ‘๊ทผ์ด๋‚˜ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ง์ ‘ ์ฝํžˆ๊ณ  ์“ฐ์—ฌ์งˆ ๊ฒƒ์ž„์„ ๋ณด์žฅํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์ตœ์ ํ™”๋˜์ง€ ์•Š๊ณ , ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ง์ ‘ ์ฝ๊ณ  ์“ฐ์—ฌ์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ์ฆ‰ volatile ํ‚ค์›Œ๋“œ๊ฐ€ ์ ์šฉ๋œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•œ ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ์ œ์™ธ๋˜์–ด, ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์–ธ์ œ๋“ ์ง€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๊ฐ„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ ค๋ฉด, ์ถ”๊ฐ€์ ์ธ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜ (์˜ˆ: ๋ฎคํ…์Šค) ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์‹  C++ ํ‘œ์ค€์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ๊ณผ ๊ด€๋ จ๋œ ๋” ์ •๊ตํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: std::atomic)

๋‹ค์Œ์œผ๋กœ ์›์ž์„ฑ (Atomicity)์€, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ๊ณต์œ ์ž์›์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ๋ชจ๋‘ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋™์‹œ์— ์—…๋ฐ์ดํŠธํ•  ๊ฒฝ์šฐ, ํ•˜๋‚˜๋งŒ ๋ฐ˜์˜๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ๋‘ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•ด์š”. ์ด๊ฑฐ๋Š” ๋™๊ธฐํ™”๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์š” ๋ฎคํ…์Šค์™€ ๋ฝ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์„œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑฐ์ฃ . 

๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์›์ž์  ์—ฐ์‚ฐ์˜ ์˜ˆ๋กœ, std::mutex ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, mutex mtx; ๋ฅผ ์„ ์–ธํ•˜๊ณ , ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— mtx.lock(); ์„ ํ˜ธ์ถœํ•˜๊ณ , ์ ‘๊ทผ์ด ๋๋‚œ ํ›„์— mtx.unlock(); ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ  ์Šค๋ ˆ๋“œ ์•ˆ์ „๊ณผ ์ด๋ฅผ ์œ„ํ•œ ์กฐ๊ฑด์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์Šค๋ ˆ๋“œ ์•ˆ์ „์ด๋ž€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ, ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๊ฐ์ฒด์— ์Šค๋ ˆ๋“œ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ 4๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒํ˜ธ๋ฐฐ์ œ (mutual eclusive) : ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ, ๋ฎคํ…์Šค ๋˜๋Š” ์„ธ๋งˆํฌ์–ด์™€ ๊ฐ™์€ ์ƒํ˜ธ๋ฐฐ์ œ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘๊ทผ์„ ํ†ต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์›์ž ์—ฐ์‚ฐ (atomic operation) : ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์›์ž ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜, ์›์ž์ ์œผ๋กœ ์ •์˜๋œ ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด ์—ฐ์‚ฐ ๋„์ค‘์— ๋‹ค๋ฅธ ์Šค๋“œ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์›์ž ์—ฐ์‚ฐ์ด๋ž€ "์—ฐ์‚ฐํ–ˆ๋‹ค"์™€ "์—ฐ์‚ฐ ์•ˆ ํ–ˆ๋‹ค" ๋‘ ๊ฐ€์ง€๋งŒ ์กด์žฌํ•˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.

์žฌ์ง„์ž…์„ฑ (reentrancy) : ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด๋„ ๊ฐ ์Šค๋ ˆ๋“œ์— ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ ์ง€์—ญ ์ €์žฅ์†Œ (thread local storage) : ๊ฐ ์Šค๋ ˆ๋“œ์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ณต์œ ๋˜๋Š” ์ž์›์„ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

๋ฉ”๋ชจ๋ฆฌ์™€ CPU๊ฐ€ ํ•œ์ •๋˜์–ด์žˆ์œผ๋ฏ€๋กœ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณตํ˜•ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด,

์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ํ• ๋‹นํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ๋กœ, ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ : ๊ณผ๊ฑฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ ์–ด์„œ ์–ด๋–ค ๊ฑธ ํ•˜๋“œ์—์„œ ์ค€๋น„ํ์— ์˜ฌ๋ฆด์ง€๋„ ๊ฒฐ์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„œ๋Š” ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ :  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์—ฌ์œ ๊ณต๊ฐ„์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ๊ด€๋ฆฌ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ, ์ฆ‰ ์ค€๋น„ํ์˜ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜ ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ์ด ๋กœ๋“œ๋˜๋ฉด SSD๊ฐ™์€ ๋””์Šคํฌ ์ €์žฅ๊ณต๊ฐ„์œผ๋กœ ์Šค์™‘ ์•„์›ƒํ•˜๊ณ , ์ด๋ ‡๊ฒŒ ์Šค์™‘ ์•„์›ƒ๋œ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋Š” ์ค‘๋‹จ ์ƒํƒœ(suspended) ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ : ํ”ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” CPU ์Šค์ผ€์ค„๋Ÿฌ๋กœ, ์ค€๋น„ํ์—์„œ ๋Œ€๊ธฐ ์ƒํƒœ ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ CPU์— ํ• ๋‹นํ• ์ง€๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””์ŠคํŒจ์น˜ํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ CPU ์Šค์ผ€์ค„๋Ÿฌ (๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ) ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

์ค€๋น„ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ณตํ‰ํ•˜๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜,

๊ทธ ์ค‘์—์„œ๋„ ํฌ๊ฒŒ ๋‹ค์„ฏ๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋Š”๋ฐ์š”.

FCFS, SJF, SRT, Priority Scheduling, ๊ทธ๋ฆฌ๊ณ  Round Robin์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

๋ชจ๋‘ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ์— CPU ์‹œ๊ฐ„์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋น„์„ ์ ํ˜•, ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์œผ๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”.

 

(๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ๋” ๋ณต์žกํ•˜๊ณ , ๋ฌธ๋งฅ ์ „ํ™˜(context switch) ๋น„์šฉ์ด ๋” ๋†’์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ˜์‘ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ค๊ณ  ๋” ๊ณต์ •ํ•œ ์ž์› ๋ถ„๋ฐฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์ง€๋งŒ, ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋…์ ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.)

 

FCFS (First Come First Serve)

  • ์ค€๋น„ ํ์— ๋จผ์ € ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š” ๋น„์„ ์ ํ˜• ์„ ์ž…์„ ์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

SJF (Shortest Job First)

  • ์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ CPU๋ฅผ ์ ์œ ํ•˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์ด ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š” ๋น„์„ ์ ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

SRT (Shortest Remaining Time)

  • SJF ์˜ ์„ ์ ํ˜• ๋ฒ„์ „์œผ๋กœ, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์Šค์ผ€์ค„๋ง์„ ๋‹ค์‹œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ๋งฅ ๊ตํ™˜ (context switch) ์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ Starvation (๊ตถ์ฃผ๋ฆผ/๊ธฐ์•„) ์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธด ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ„์†ํ•ด์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋จธ๋ฌผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Priority Scheduling : ์„ ์ ํ˜• ๋˜๋Š” ๋น„์„ ์ ํ˜• ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์— ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š” ์ •์ ์ด๊ฑฐ๋‚˜ ๋™์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์„ ์ ํ˜• ๋ฒ„์ „์—์„œ๋Š” ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋น„์„ ์ ํ˜• ๋ฒ„์ „์—์„œ๋Š” ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

Round Robin

  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์œผ๋กœ, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(ํƒ€์ž„ ํ€€ํ…€)์„ ๋ถ€์—ฌํ•˜๊ณ , ์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ˆœ์„œ๋ฅผ ๋„˜๊น๋‹ˆ๋‹ค.

 

ํŒ... First ๊ฐ€ ๋ถ™์œผ๋ฉด ๋น„์„ ์ ํ˜•์ด๋‹ค! 


๐Ÿ”ฎ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ CPU๊ฐ€ ์ฒ˜๋ฆฌ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. CPU๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ์ฝ˜ํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ๋˜๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ณ , ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋ฉด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ”ฎ ๋” ์ž์„ธํžˆ ๋งํ•ด์ฃผ์„ธ์š”.

 

CPU๊ฐ€ ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ PCB(Process control Block)์„ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค๋ฅธ PCB๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. PCB๋Š” ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์šด์˜์ฒด์ œ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๊ณ ์œ ํ•œ PCB๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ๋˜๋Š” ์ •๋ณด๋กœ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ณ ์œ  ์•„์ด๋””์ธ PID, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ ๊ฐ’์ธ PC ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ ์žฌํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์Šค์ผ€์ค„๋ง์— ์˜ํ•ด ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ, ์ž์› ๋“ฑ์„ ์ €์žฅํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

 

๐Ÿ”ฎ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ์ฝ˜ํ…์ŠคํŠธ ์Šค์œ„์นญ๊ณผ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ˜ํ…์ŠคํŠธ ์Šค์œ„์นญ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ˜ํ…์ŠคํŠธ ์Šค์œ„์นญํ•  ๋•Œ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ๊ณ ์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๋Š” ๋ฐ˜๋ฉด, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ์Šคํƒ ์˜์—ญ์„ ์ œ์™ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ ˆ์ง€์Šคํ„ฐ์— ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์–‘์ด ์ ์–ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์ธํ„ฐ๋ŸฝํŠธ์™€ ํด๋ง์„ ์•„์‹œ๋‚˜์š”?

 

  • ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ•˜๋“œ์›จ์–ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ CPU์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ํด๋ง์€ CPU๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ž์› ์‚ฌ์šฉ ์ธก๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ด์ง€๋งŒ ๊ตฌํ˜„์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ง์€ ๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•˜์ง€๋งŒ ์ง€์†์ ์ธ ์ž์› ์‚ฌ์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธํ„ฐ๋ŸฝํŠธ๋ž€ ํ•˜๋“œ์›จ์–ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ CPU์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • CPU์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ ์ž…์ถœ๋ ฅ ๊ด€๋ จ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ๋•Œ ์ด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ CPU์— ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    • ๊ทธ ์˜ˆ๋กœ ์ž…์ถœ๋ ฅ์ด ๋ฐœ์ƒํ•  ๋•Œ, CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์„ ๋•Œ, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, I/O ์ž‘์—… ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ๋ฅผ ์•Œ๋ฆฌ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.
  • ํด๋ง์€ CPU๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์ธํ„ฐ๋ŸฝํŠธ ์—†์ด๋„ ์žฅ์น˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ธํ„ฐ๋ŸฝํŠธ ์‹œ์Šคํ…œ์ด ํ•„์š” ์—†๋Š” ๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • CPU ์ž์›์˜ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‘๋‹ต ์‹œ๊ฐ„์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU๊ฐ€ ์ง€์†์ ์œผ๋กœ ์žฅ์น˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ๊ฐ„๋‹จํ•œ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ, ํ‚ค๋ณด๋“œ ์Šค์บ๋‹, ๊ฐ„๋‹จํ•œ I/O ์žฅ์น˜ ์ฒดํฌ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ TLB, MMU ๋ฅผ ์•„์‹œ๋‚˜์š”?

 

  • TLB (translation look a side buffer ๋ณ€ํ™˜ ์ƒ‰์ธ ๋ฒ„ํผ) : ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ์บ์‹œ์ž…๋‹ˆ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ์— ๋Œ€ํ•œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ TLB Miss, Page Not Present ๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—๋„ ์—†๋‹ค๋Š” ๋œป์ด๋‹ˆ ๋””์Šคํฌ์—์„œ Swap-in ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— Swap-in ํ•œ ํ›„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๊ณ , TLB๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์„œ ๋ฌผ๋ฆฌ์ฃผ์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MMU (Memory Management Unit) : CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ ๊ฐ’๊ณผ ์‹ค์ œ ์ฃผ์†Œ ๊ฐ’์ด ๋‹ค๋ฅด๋ฏ€๋กœ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด ์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ MMUT ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. MMU๋Š” CPU์— ์œ„์น˜ํ•˜๋ฉฐ, CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— MMU๋ฅผ ๊ฑฐ์ณ ๋…ผ๋ฆฌ ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. MMU๋Š” ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.์—„์—ฐํžˆ ๋”ฐ์ง€๋ฉด TLB๋Š” MMU ๋‚ด๋ถ€์˜ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. MMU๋Š” ๊ฐ€์ƒ์ฃผ์†Œ, ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ณ€ํ™˜ ์ž‘์—…์˜ ์ „์ฒด๋ฅผ ์ฃผ๋„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

  • ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•˜๋ฉฐ ์‹คํ–‰์˜ ๋‹จ์œ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด์— ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ–์ง€๋งŒ, ์Šค๋ ˆ๋“œ๋Š” ์Šคํƒ ์˜์—ญ๋งŒ ๋…๋ฆฝ์ ์ด๊ณ , ๊ทธ ์™ธ ์˜์—ญ์€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. 

๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•ด๋„ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์ ‘๊ทผ ์ˆœ์„œ์— ๋‹ค๋ผ์„œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ์ž„๊ณ„ ์˜์—ญ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž„๊ณ„ ์˜์—ญ์— ๋Œ€ํ•œ ์ƒํ˜ธ๋ฐฐ์ œ ๊ธฐ๋ฒ•์ด ์ž˜ ์ด๋ค„์ ธ์•ผ, ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํ˜ธ๋ฐฐ์ œ ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ผ๊นŒ์š”?

 

์Šค๋ ˆ๋“œ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์Šคํƒ ์˜์—ญ๊ณผ PC Register ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์Šค๋ ˆ๋“œ์˜ ์ •์˜์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋…๋ฆฝ์ ์œผ๋กœ ์Šคํƒ์„ ๊ฐ–๋Š” ์ด์œ : ๋…๋ฆฝ์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ์Šคํƒ ์˜์—ญ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ PC Register๋ฅผ ๊ฐ–๋Š” ์ด์œ : PC Register ๊ฐ’์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์–ด๋””๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” CPU๋ฅผ ํ• ๋‹น๋ฐ›์•˜๋‹ค๊ฐ€, ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์„ ์ ๋‹นํ•ด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์‹œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ๋…๋ฆฝ์ ์œผ๋กœ PC Register ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•œ ํƒญ์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋”๋ผ๋„, ๋‹ค๋ฅธ ํƒญ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ๊ฐ์˜ ํฌ๋กฌ ํƒญ์€ ํ”„๋กœ์„ธ์Šค์ผ๊นŒ์š”? ์“ฐ๋ ˆ๋“œ์ผ๊นŒ์š”?

 

ํฌ๋กฌ ํƒญ์ด ์“ฐ๋ ˆ๋“œ๋ผ๋ฉด, ํ•œ ํฌ๋กฌ ํƒญ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋‹ค๋ฅธ ํฌ๋กฌ ํƒญ์—๋„ ์˜ํ–ฅ์ด ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ํƒญ์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋”๋ผ๋„ ๋‹ค๋ฅธ ํƒญ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํŠน์„ฑ์— ์˜ํ•ด, ํฌ๋กฌ ํƒญ์€ ๋ณ„๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„์‹œ๋‚˜์š”?

 

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€, ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋”๋ผ๋„ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์˜ ์ „๋ถ€๋ฅผ ์ ์žฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๋ณด๋‹ค ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜์ธ ๋””์Šคํฌ์— ์˜ฎ๊ฒจ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๋ณด๋‹ค ๋” ํฐ ์˜์—ญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์‹œ์— ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์‘๋‹ต์‹œ๊ฐ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ CPU ์ด์šฉ๋ฅ ๊ณผ ์ฒ˜๋ฆฌ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ใ…ก๋‹จ์ ์œผ๋กœ๋Š” ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ๋™๋ณด๋‹ค๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

+ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์˜ฌ๋ผ๊ฐ€์žˆ๊ณ , ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ณต์œ ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฝ์–ด๋“ค์ผ ๋•Œ ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ํฌ๊ธฐ์˜ ๋‹จ์œ„๋ฅผ ํŽ˜์ด์ง€๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Page Fault๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์š”๊ตฌ ํŽ˜์ด์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ญ”๊ฐ€์š”? ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

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

 

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”,

๋ณดํŽธ์ ์œผ๋กœ๋Š” LRU๊ฐ€ ์บ์‹œ ํžˆํŠธ์œจ์ด ๋” ๋†’์„ ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • FIFO (First In First Out) : ์˜ค๋ž˜๋œ ํŽ˜์ด์ง€์ผ์ˆ˜๋ก ์‚ฌ์šฉ๊ฐ€๋Šฅ์„ฑ ์—†์œผ๋‹ˆ ๋‚ด๋ณด๋‚ด์ž. ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์บ์‹œ์— ๋“ค์–ด์˜จ ํ•ญ๋ชฉ์„ ๋จผ์ € ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • LRU (Least Recently Used) : ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๊ฑธ ๋‚ด๋ณด๋‚ด์ž. ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์„ ๋จผ์ € ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • LFU (Least Frequently Used) : ์ฐธ์กฐํšŸ์ˆ˜ ๊ฐ€์žฅ ์ ์€ ๊ฑธ ๋‚ด๋ณด๋‚ด์ž

๐Ÿ”ฎ FIFO, LRU์˜ ์ฐจ์ด์ ์ด ๋ญ˜๊นŒ์š”?

 

  • FIFO๋Š” ๋Œ€๊ฐœ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ•ญ๋ชฉ์ด ๋“ค์–ด์˜ค๋ฉด ํ์˜ ๋’ค์— ์ถ”๊ฐ€๋˜๊ณ , ๊ต์ฒด๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ํ์˜ ์•ž๋ถ€๋ถ„์—์„œ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋นˆ๋„๋‚˜ ์ตœ๊ทผ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ ๋งต ๋“ฑ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ๋ณต์žกํ•˜๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ ํŒจํ„ด์„ ๋” ์ž˜ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์–ด FIFO๋ณด๋‹ค ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LRU๋Š” ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ผ๋ฐ˜์ ์œผ๋กœ FIFO๋ณด๋‹ค ์บ์‹œ ํžˆํŠธ์œจ์ด ๋” ๋†’์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ ์š”๊ตฌ ํŽ˜์ด์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

 

ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ํ”„๋กœ์„ธ์Šค์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ์š”. ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ์˜์—ญ๋งŒ ๋กœ๋“œํ•œ ํ›„, ๋‹ค๋ฅธ ์˜์—ญ์€ ์š”์ฒญ์ด ์˜ฌ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด์„œ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•๊ณผ ์Šค์™€ํ•‘์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์š”๊ตฌ ํŽ˜์ด์ง•์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ์ž‘ ์‹œ์— ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๋Œ€์‹ , ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ์ ์žฌํ•˜๋Š” ์ „๋žต์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์—์„œ ํ•„์š”ํ•œ (์š”๊ตฌํ•˜๋Š”) ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ์˜์—ญ๋งŒ ๋กœ๋“œํ•œ ํ›„, ๋‹ค๋ฅธ ์˜์—ญ์€ ์š”์ฒญ์ด ์˜ฌ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ํŽ˜์ด์ง€ ๊ฐœ๋…์„ ํ™œ์šฉํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ•„์š”ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—†์„ ๋•Œ ์ด๋ฅผ ํŽ˜์ด์ง€ ํดํŠธ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์—์„œ ์Šค์™‘ ์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ์Šค๋ ˆ์‹ฑ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์ ˆ์ฐจ๋„ ์•„์‹œ๋‚˜์š”?

 

ํŽ˜์ด์ง€ ํดํŠธ(page fault)๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

  1. ํŽ˜์ด์ง€ ํดํŠธ ๊ฐ์ง€:
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ํ•˜๋“œ์›จ์–ด๋Š” ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์šด์˜์ฒด์ œ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด ์‹คํ–‰:
    • ์šด์˜์ฒด์ œ๋Š” ํŽ˜์ด์ง€ ํดํŠธ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด (Page Fault ISR) ์„ ์‹คํ–‰ํ•˜์—ฌ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋จผ์ € ํดํŠธ๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ ‘๊ทผํ•˜๋ ค๋Š” ์ฃผ์†Œ๊ฐ€ ์œ ํšจ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€, ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์Šค์™‘ ๊ณต๊ฐ„์—์„œ ํŽ˜์ด์ง€ ์ฐพ๊ธฐ:
    • ์œ ํšจํ•œ ํŽ˜์ด์ง€ ํดํŠธ์˜ ๊ฒฝ์šฐ, ์šด์˜์ฒด์ œ๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์˜ ์Šค์™‘ ๊ณต๊ฐ„(swap space)์—์„œ ์ฐพ์Šต๋‹ˆ๋‹ค. ์Šค์™‘ ๊ณต๊ฐ„์€ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์˜ ์ผ๋ถ€๋กœ, ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  4. ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„ ํ™•๋ณด:
    • ์šด์˜์ฒด์ œ๋Š” ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•  ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์Šค์™‘ ์•„์›ƒ(swap out)ํ•˜์—ฌ ๋””์Šคํฌ๋กœ ์˜ฎ๊ฒจ ๊ณต๊ฐ„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€ ๋กœ๋“œ:
    • ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์—์„œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.
  6. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ:
    • ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋ฉด, ์šด์˜์ฒด์ œ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  7. ํ”„๋กœ์„ธ์Šค ์žฌ๊ฐœ:
    • ๋ชจ๋“  ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ์šด์˜์ฒด์ œ๋Š” ์›๋ž˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์žฌ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ด์ œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ ์Šค๋ ˆ์‹ฑ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

  • ์Šค๋ ˆ์‹ฑ์ด๋ž€ ํŽ˜์ด์ง€ ๋ถ€์žฌ์œจ์ด ๋†’์€ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํ™˜๊ฒฝ์—์„œ ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •๋„๊ฐ€ ๋†’์•„์ง€๋ฉด์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•ด ์–ด๋Š ํ•œ๊ณ„๊ฐ€ ์ง€๋‚˜๋ฉด CPU ์ด์šฉ๋ฅ ์ด ์˜คํžˆ๋ ค ๋‚ฎ์•„์ง€๋Š” ์ฆ์ƒ ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ์š”, ์ฆ‰, ์‹ค์ œ ์‹œ์Šคํ…œ์ด ์ž‘๋™๋˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ๋นˆ๋ฒˆํžˆ ์ผ์–ด๋‚˜ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ ๊ฐˆ๋˜์—ˆ์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Swap์ด ํ™œ๋ฐœํ•ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CPU ์ด์šฉ๋ฅ ์ด ํ•˜๋ฝํ•˜๊ณ , OS๋Š” CPU ์ด์šฉ๋ฅ ์ด ๋‚ฎ์œผ๋ฏ€๋กœ ์˜คํžˆ๋ ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋Š” ์Šค๋ ˆ์‹ฑ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด์†Œํ•˜์ง€ ๋ชปํ•˜๋ฉด Out Of Memory ์ƒํƒœ๋กœ ํŒ๋‹จํ•ด ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ•ด์†Œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ Working Set ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ Page Fault Frequency ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • Working Set๋Š” ์ง€์—ญ์„ฑ (์บ์‹œ์˜ ๊ทธ ์ง€์—ญ์„ฑ ๋งž์Šต๋‹ˆ๋‹ค) ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•ด ๋‘๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ํŠน์„ฑ์„ ์ด์šฉ, ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐ๋˜๋Š” ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ๊ทธ ํŽ˜์ด์ง€ ์ˆ˜๋งŒํผ ์—ฌ๋ถ„ ํ”„๋ ˆ์ž„์ด ํ™•๋ณด๋˜๋ฉด ๊ทธ ๋•Œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค.
    • Page Fault Frequency : Page Fault ํผ์„ผํŠธ์˜ ์ƒํ•œ๊ณผ ํ•˜ํ•œ์„ ๋‘ก๋‹ˆ๋‹ค. ์ƒํ•œ์„ ๋„˜์œผ๋ฉด ํŽ˜์ด์ง€์—๊ฒŒ ์ง€๊ธ‰ํ•˜๋Š” ํ”„๋ ˆ์ž„ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ , ํ•˜ํ•œ์„ ๋„˜์œผ๋ฉด ์ง€๊ธ‰ ํ”„๋ ˆ์ž„ ๊ฐœ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฅ˜๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

  • ์ž์‹ ํ”„๋กœ์„ธ์Šค
    • fork๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“  ์ƒํƒœ, ๋ถ€๋ชจ์˜ ๋ฐ์ดํ„ฐ, ํž™, ์Šคํƒ, PCB ๋ณต์‚ฌ
  • ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค
    • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋™์ž‘ํ•˜๋ฉด์„œ ํŠน์ •ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • ๊ณ ์•„ ํ”„๋กœ์„ธ์Šค
    • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์ข…๋ฃŒ๋˜์–ด ๊ณ ๋ฆฝ๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค
  • ์ข€๋น„ ํ”„๋กœ์„ธ์Šค
    • ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ์ž‘์—… ์ข…๋ฃŒ์— ๋Œ€ํ•œ ์Šน์ธ์„ ๋ฐ›์ง€ ๋ชปํ•œ ํ”„๋กœ์„ธ์Šค

๐Ÿ”ฎ ์“ฐ๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” 2๊ฐ€์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

์“ฐ๋ ˆ๋“œ๋Š”, ๋…๋ฆฝ์ ์œผ๋กœ ์Šคํƒ ์˜์—ญ๊ณผ PC Register๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์“ฐ๋ ˆ๋“œ์˜ ์ •์˜์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

1) ๋…๋ฆฝ์ ์œผ๋กœ ์Šคํƒ ์˜์—ญ์„ ๊ฐ–๋Š” ์ด์œ  : 

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

 

2) ๋…๋ฆฝ์ ์œผ๋กœ PC Register๋ฅผ ๊ฐ–๋Š” ์ด์œ  : 

 PC Register ๊ฐ’์€, ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์–ด๋””๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์“ฐ๋ ˆ๋“œ๋Š” CPU๋ฅผ ํ• ๋‹น๋ฐ›์•˜๋‹ค๊ฐ€, ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด์„œ ์„ ์ ๋‹นํ•ด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์‹œ ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰์ด ๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ๋…๋ฆฝ์ ์œผ๋กœ PC Register ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค


๐Ÿ”ฎ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์™œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ํ•„์š”ํ•œ์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ CPU๊ฐ€ ์ฒ˜๋ฆฌ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. CPU๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์‹คํ–‰ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ๋˜๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ณ , ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋ฉด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ณผ์ •: 

1) CPU๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ PCB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค

2) ๋Œ€๊ธฐ์—ด์—์„œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ PCB๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

3) PCB์˜ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(๋ ˆ์ง€์Šคํ„ฐ)๊ฐ€ ๋กœ๋“œ๋˜์–ด ์ด์ „๊นŒ์ง€ ์ž‘์—…ํ•œ ๊ณณ์˜ ์ง€์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ์„ ํƒํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์„ ์ด์–ด์„œ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก (PCB)์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

- ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(Process Control Block, ์ค„์—ฌ์„œ PCB)์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” OS ์ปค๋„์˜ ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

 

- OS๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๊ณ ์œ ํ•œ PCB ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

- PCB๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์•ˆ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

- ํ”„๋กœ์„ธ์Šค๋Š” ์ˆ˜ํ–‰ํ•  ์ฐจ๋ก€๊ฐ€ ๋˜๋ฉด, CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋˜ ๋„์ค‘ ํ”„๋กœ์„ธ์Šค์˜ ์‹œ๊ฐ„์ด ๋ชจ๋‘ ๊ฒฝ๊ณผ๋˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋“ฑ์˜ ํ”„๋กœ์„ธ์Šค ์ „ํ™˜์ด ๋ฐœ์ƒํ•˜๋ฉด, ์ง„ํ–‰ํ•˜๋˜ ์ž‘์—…์„ ์ €์žฅํ•˜๊ณ  CPU ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ์ˆ˜ํ–‰ํ•˜๋˜ ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋“ค์„ PCB ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰ ์ฐจ๋ก€๊ฐ€ ์™€์„œ CPU ๋ฅผ ํ• ๋‹น๋ฐ›๊ฒŒ ๋˜๋ฉด, PCB ์— ์ €์žฅ๋˜์–ด์žˆ๋˜ ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์™€ ์ด์ „์— ์ข…๋ฃŒ๋๋˜ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ PCB์— ์ €์žฅํ•˜๊ณ , ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ PCB์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์„ Context Switching์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

- PCB ์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž (Process ID, PID) : ํ”„๋กœ์„ธ์Šค ์‹๋ณ„๋ฒˆํ˜ธ
  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ : `new`, `ready`, `running`, `waiting`, `terminated` ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅ
  • PC (ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ
  • CPU ๋ ˆ์ง€์Šคํ„ฐ
  • CPU ์Šค์ผ€์ฅด๋ง ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„, ์Šค์ผ€์ค„ ํ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ๋“ฑ
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ํ…Œ์ด๋ธ” ๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จ
  • ์ž…์ถœ๋ ฅ ์ƒํƒœ ์ •๋ณด : ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋“ค๊ณผ ์—ด๋ฆฐ ํŒŒ์ผ ๋ชฉ๋ก
  • ์–ด์นด์šดํŒ… ์ •๋ณด : ์‚ฌ์šฉ๋œ CPU ์‹œ๊ฐ„, ์‹œ๊ฐ„์ œํ•œ, ๊ณ„์ •๋ฒˆํ˜ธ ๋“ฑ

๐Ÿ”ฎ  ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

Interrupt(์ธํ„ฐ๋ŸฝํŠธ)๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋„์ค‘์— ์ž…์ถœ๋ ฅ ์š”์ฒญ ํ˜น์€ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉด ์‹คํ–‰ํ•˜๋˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉˆ์ถ”๊ณ  CPU๊ฐ€ ํ•ด๋‹น ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์ข…๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€์ธ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

CPU์— ๊ฐ€๊นŒ์šด ์ˆœ์„œ๋Œ€๋กœ ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ, ์ฃผ๊ธฐ์–ต์žฅ์น˜, ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜๊ฐ€ ๋งŽ์€ ์ด์œ ๋Š”, ์ ‘๊ทผ ์†๋„์— ๋”ฐ๋ฅธ ์ฐจ์ด๋ฅผ ๋‘๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. 

(๋ ˆ์ง€์Šคํ„ฐ > ์บ์‹œ > ์ฃผ๊ธฐ์–ต์žฅ์น˜ > ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜)


๐Ÿ”ฎ ์„œ๋ธŒ๋ฃจํ‹ด์„ ์•„์‹œ๋‚˜์š”?

 

์„œ๋ธŒ๋ฃจํ‹ด (ํ•จ์ˆ˜ ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ผ๊ณ ๋„ ํ•จ) ์€ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋ธ”๋ก์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž‘์—…์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์šด์˜์ฒด์ œ์˜ ์ง์ ‘์ ์ธ ๊ด€๋ฆฌ ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

C++์—์„œ ์„œ๋ธŒ๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•จ์ˆ˜(Function)๋ฅผ ์ •์˜ํ•˜๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ, ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค์˜ ์ œ์–ด ๋ช…๋ น์„ ์•„๋Š”๋Œ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”.

 

ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ช…๋ น์€ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ, ์‹คํ–‰, ์ข…๋ฃŒ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น๋“ค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `fork()`, `exec()`, `wait()`, `exit()` ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น๋“ค์€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ์˜ ์ž์› ๊ด€๋ฆฌ์™€ ์กฐ์ •์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ fork() ์™€ vfork() ๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”?

 

`fork()`

  • fork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ํ›„์—๋Š” ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ PID ๊ฐ’์„, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” 0 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

`vfork()` โœŒ๐Ÿป

  • vfork()๋Š” fork()์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” exec() ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ exit() ์„ ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€. ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์„ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒโœŒ๐Ÿป์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ ๋™์‹œ์„ฑ, ๋ณ‘๋ ฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”?

 

๋™์‹œ์„ฑ์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Multi-Programming)์—์„œ ๋‚˜์˜จ ๊ฐœ๋…์œผ๋กœ, ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•ด์„œ Context Switching์„ ํ†ตํ•ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฒˆ๊ฐˆ์•„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์‹ฑ๊ธ€ ์ฝ”์–ด์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

๋ณ‘๋ ฌ์„ฑ์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ (Multi-Processing)์—์„œ ๋‚˜์˜จ ๊ฐœ๋…์œผ๋กœ, ์‹ค์ œ๋กœ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋ฌผ๋ฆฌ์ ์ธ ์‹œ๊ฐ„ ๊ด€์ ์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CPU๊ฐ€ ๋ฉ€ํ‹ฐ ์ฝ”์–ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ ํ•˜๋‚˜๋ฅผ ํ”„๋กœ์„ธ์Šค ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž์› ๊ณต์œ ์™€ ํ†ต์‹ ์„ ํ•˜๋ ค๋ฉด IPC๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์ง€๋งŒ, ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ณด๋‹ค ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” ์ž์› ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹ ๊ณผ ์ž์› ๊ณต์œ ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค ๋Œ€๋น„ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ค์ง€๋งŒ, ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ  ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ „์ฒด ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์™œ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๊ณ , Context Switching ์‹œ, Stack ์˜์—ญ๋งŒ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์‹œ ์ž์› ํ• ๋‹นํ•˜๋Š” ์ฝœ์ด ์ค„์–ด๋“ค์–ด์„œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋™๊ธฐ ๋น„๋™๊ธฐ ๋ธ”๋กœํ‚น ๋…ผ๋ธ”๋กœํ‚น์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ๋™๊ธฐ (Synchronous) ๋Š” ์ž‘์—…์˜ ์ˆœ์ฐจ์ ์ธ ์ง„ํ–‰์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค์Œ ํŠธ๋žœ์žญ์…˜์€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ์ดˆ๊ธฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์—์„œ๋Š” ์ž‘์—…๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ์ž‘์—…์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ๋™๊ธฐ์  ์ฒ˜๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ (Asynchronous) ๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ์— ๋Œ€ํ•œ ์ฝœ๋ฐฑ์ด๋‚˜ ์ด๋ฒคํŠธ๊ฐ™์€ ์•Œ๋ฆผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: ์›น์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ๋™๊ธฐ์  ์ฒ˜๋ฆฌ์˜ ํ•œ๊ณ„, ํŠนํžˆ I/O ์ž‘์—…์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๊ฐ™์€ ๊ธด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ์ž‘์—…์—์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์„œ, ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋ธ”๋กœํ‚น์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋™๊ธฐ์  ์ž‘์—…์€ ๋ธ”๋กœํ‚น์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™๊ธฐ์ ์ด์ง€๋งŒ ๋„Œ๋ธ”๋กœํ‚น์ธ ์ž‘์—…์˜ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์—์„œ ๋ธ”๋กœํ‚น ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, recv() ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ •์ง€์‹œํ‚ค๊ณ  ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ์ดˆ๊ธฐ ์ปดํ“จํŒ…์—์„œ๋Š” ์ž‘์—… ์‹คํ–‰ ์‹œ ๋‹ค๋ฅธ ์ž‘์—…์ด ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์—ˆ๋Š”๋ฐ์š”, ์ด ๋ฐฉ์‹์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ , ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ˆ์ •์ ์ธ ์ ‘๊ทผ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋„Œ๋ธ”๋กœํ‚น์€ ์š”์ฒญํ•œ ์ž‘์—…์ด ์ฆ‰์‹œ ์™„๋ฃŒ๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ทธ ์ƒํƒœ๋ฅผ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉฐ, ๋‚˜์ค‘์— ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: ์ฃผ๋กœ I/O ์ž‘์—…์—์„œ ๋น ๋ฅธ ์‘๋‹ต์„ฑ์ด ํ•„์š”ํ•  ๋•Œ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„Œ๋ธ”๋กœํ‚น ์†Œ์ผ“์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ , ๊ทธ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธ polling ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ๋ธ”๋กœํ‚น ๋ฐฉ์‹์˜ ๋‹จ์ , ํŠนํžˆ ์‹œ์Šคํ…œ ์ž์›์ด๋‚˜ ์ž‘์—… ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•œ ํšจ์œจ์„ฑ ์ €ํ•˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹์€ ์ž‘์—…์ด ์ฆ‰์‹œ ์™„๋ฃŒ๋˜์ง€ ์•Š๋”๋ผ๋„ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ์ „ํ™˜ํ•ด์„œ CPU ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋™๊ธฐ/๋น„๋™๊ธฐ = ํ˜ธ์ถœ๋‹นํ•œ ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ๋ฅผ ๋ˆ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ
    ๋ธ”๋กœํ‚น/๋„Œ๋ธ”๋กœํ‚น = ์ œ์–ด๊ถŒ์ด ๋ˆ„๊ตฌ์—๊ฒŒ ๋Œ์•„๊ฐ€๋Š๋ƒ

๐Ÿ”ฎ Race Condition ๊ณผ Critical Section ์ด ๋ฌด์—‡์ด๊ณ , ๊ฒฝ์Ÿ ์ƒํƒœ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

๋‘ ๊ฐœ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ์ ‘๊ทผํ•˜๋ ค๊ณ  ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋Š” ๊ฒƒ์„ 'Race Condition (๊ฒฝ์Ÿ์ƒํƒœ)' ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณต์œ  ์ž์›์ด ์กด์žฌํ•˜๋Š” ๊ตฌ๊ฐ„์œผ๋กœ Race Condition ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ 'Critical Section (์ž„๊ณ„์˜์—ญ)' ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์ž„๊ณ„์˜์—ญ์— ๋Œ€ํ•œ ๊ฒฝ์Ÿ์ƒํƒœ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ•œ ๊ณต์œ ์ž์›์— ๋Œ€ํ•ด์„œ ํ•œ ์“ฐ๋ ˆ๋“œ์—๋งŒ ์ ‘๊ทผ์„ ํ—ˆ๋ฝํ•˜๋„๋ก ํ•˜๋Š” '์ƒํ˜ธ๋ฐฐ์ œ(Mutual Exclusion)' ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ์‹œ์— shared memory ๋“ฑ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ž์›์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ฒฝ์Ÿ ์ƒํƒœ (race condition) ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด๊ฐ€ ๊ทธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฎ  DeadLock(๊ต์ฐฉ์ƒํƒœ)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

DeadLock(๊ต์ฐฉ์ƒํƒœ)๋Š”, ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๋ฌดํ•œํžˆ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

DeadLock์ด ๋ฐœ์ƒํ•˜๊ธฐ ์œ„ํ•œ  4๊ฐ€์ง€์˜ ํ•„์š” ์ถฉ๋ถ„ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒํ˜ธ ๋ฐฐ์ œ (Mutual Exclusion)
    • ํ•œ ์ž์›์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ ์œ  ๋Œ€๊ธฐ (Hold and Wait)
    • ํ•˜๋‚˜์˜ ์ž์›์„ ์†Œ์œ ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ๋น„์„ ์  (Non-preemption)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ž์›์˜ ์‚ฌ์šฉ์„ ๋๋‚ผ ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๋บ์„ ์ˆ˜ ์—†๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ (Circular Wait)
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆœํ™˜์ ์œผ๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ž์›์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

 

๊ต์ฐฉ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์˜ 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ œ๊ฑฐํ•˜๋ฉด ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ Race Condition ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด์„œ '์ƒํ˜ธ ๋ฐฐ์ œ' ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•˜๊ธฐ๋Š” ํ˜„์‹ค์ ์œผ๋กœ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

  • ์˜ˆ๋ฐฉ(Prevention)
    • ๊ต์ฐฉ ์ƒํƒœ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ์‹
    • ์ž์› ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค.
  • ํšŒํ”ผ(Avoidance)
    • ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์„ ์ธ์ •ํ•˜๋ฉด์„œ๋„ ์ ์ ˆํ•˜๊ฒŒ ํšŒํ”ผํ•˜๋Š” ๋ฐฉ์‹
    • ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ ์‹œ์Šคํ…œ์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์•ˆ์ „ ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ์‚ฌ์ „์— ๊ฒ€์‚ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ž์›์„ ํ• ๋‹นํ•˜๊ณ , ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ํ•ด์ œํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
      • ์•ˆ์ „์ƒํƒœ: ์‹œ์Šคํ…œ์ด ๊ต์ฐฉ์ƒํƒœ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•œ ์ตœ๋Œ€ ์š”๊ตฌ๋Ÿ‰๋งŒํผ ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹นํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ
      • ํ•ญ์ƒ ์•ˆ์ „ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์œผ๋‚˜ ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์„ ๋ฏธ๋ฆฌ ์•Œ์•„์•ผ ํ•˜๊ณ  ํ•ญ์ƒ ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž์› ์ด์šฉ๋„๊ฐ€ ๋‚ฎ๋‹ค.
  • ํšŒ๋ณต(Recovery)
    • ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‹œ์Šคํ…œ์˜ ์ž์› ํ• ๋‹น ์ƒํƒœ๋ฅผ ๊ฐ–๊ณ  ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.
    • ํƒ์ง€ํ–ˆ๋‹ค๋ฉด ๋ฐ๋“œ๋ฝ์„ ํšŒ๋ณตํ•œ๋‹ค.
      • ๋ฐ๋“œ๋ฝ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘ ์ค‘๋‹จ์‹œํ‚ค๊ธฐ
      • ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ์ค‘๋‹จ ์‹œํ‚ฌ ๋•Œ๋งˆ๋‹ค ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ๋“œ๋ฝ์„ ํƒ์ง€ํ•˜๋ฉด์„œ ํšŒ๋ณต์‹œํ‚ค๊ธฐ
      • ์ž์› ์„ ์ ์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•˜๊ธฐ(๊ต์ฐฉ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์„ ์ ํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น)

๐Ÿ”ฎ  ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ ์—์„œ, DeadLock์ด ์–ด๋–จ ๋•Œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•ด ์ฃผ์„ธ์š”.

 

"์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ"
๋‹ค์„ฏ ๋ช…์˜ ์ฒ ํ•™์ž๊ฐ€ ์›ํƒ์— ์•‰์•„ ์žˆ๊ณ , ๊ฐ์ž์˜ ์•ž์—๋Š” ์ŠคํŒŒ๊ฒŒํ‹ฐ๊ฐ€ ์žˆ๊ณ  ์–‘์˜†์— ํฌํฌ๊ฐ€ ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ์ฒ ํ•™์ž๋Š” ๋‹ค๋ฅธ ์ฒ ํ•™์ž์—๊ฒŒ ๋ง์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋•Œ ์ฒ ํ•™์ž๊ฐ€ ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋จน๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–‘ ์˜†์˜ ํฌํฌ๋ฅผ ๋™์‹œ์— ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 

๋ชจ๋“  ์ฒ ํ•™์ž๊ฐ€ ๋ฐฉ์— ์ž…์žฅํ•œ ํ›„, ๊ฐ์ž์˜ ์™ผ์ชฝํฌํฌ๋ฅผ 5๋ช…์ด ๋ชจ๋‘ ๋“œ๋Š” ๊ฒฝ์šฐ์— DeadLock์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

1) 5๋ช… ๋ชจ๋‘ ์ž์‹ ์˜ ์™ผ์ชฝ ํฌํฌ๋ฅผ ๋“ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ '์ ์œ ๋Œ€๊ธฐ'

2) ๋‚จ์ด ํฌํฌ๋ฅผ ๋บ์–ด์ฃผ์ง€ ์•Š์Œ '๋น„์„ ์ '

3) ์„œ๋กœ ์˜ค๋ฅธ์ชฝ ํฌํฌ๋ฅผ ๋†“๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆผ 'ํ™˜ํ˜•๋Œ€๊ธฐ'

4) ๊ฐ ํฌํฌ์— ๋Œ€ํ•ด ํ•œ ์‚ฌ๋žŒ๋งŒ ๋“ค ์ˆ˜ ์žˆ์Œ '์ƒํ˜ธ๋ฐฐ์ œ'

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ์— ๋Œ€ํ•œ ์ž…์žฅ ์ •์›์„ ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋กœ ์„ค๊ณ„ํ•ด, ์ตœ๋Œ€ 4๋ช…๋งŒ ๋“ค์–ด์˜จ๋‹ค๋ฉด ๋ฐฉ ์•ˆ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์™ผ์ชฝ ํฌํฌ๋ฅผ ๋“ ๋‹ค ํ•˜๋”๋ผ๋„ DeadLock์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฎคํ…์Šค๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์˜ค์ง 1๊ฐœ๋งŒ์˜ ์Šค๋ ˆ๋“œ(๋˜๋Š” ํ”„๋กœ์„ธ์Šค)๋งŒ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
1๊ฐœ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๋ฝ์„ ํš๋“ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฝ์„ ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ์‹œ์— shared memory ๋“ฑ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ž์›์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ฒฝ์Ÿ ์ƒํƒœ (race condition) ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ๋Š” ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋ฎคํ…์Šค (mutex) ๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ (mutual exclusive) ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ž„๊ณ„ ์˜์—ญ (Critical Section) ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ์˜ Running Time ์ด ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. 


๐Ÿ”ฎ ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ฎคํ…์Šค์™€์˜ ์ฐจ์ด์ ์€์š”?

 

๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด๋Š” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ƒํ˜ธ๋ฐฐ์ œ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ์ค‘ ๋ฎคํ…์Šค๋Š” ๋ฝ์„ ๊ฐ€์ง„ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋™๊ธฐํ™” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋ ค๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฝ์„ ์–ป๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋˜์ง€ ์•Š๊ณ , ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ์Šคํ•€๋ฝ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

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


๐Ÿ”ฎ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

 

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋˜ ์ผ์„ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๊ณผ ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ ๋ณ„๋„์˜ ์ž์›์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๊ณต๊ฐ„ ๋˜๋Š” ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๊ณต๊ฐ„์ธ Heap(ํž™) ์˜์—ญ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ๋ฐฉ๋ฒ•์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. 

์‹ฌ์ง€์–ด ์Šค๋ ˆ๋“œ์˜ context switch(๋ฌธ๋งฅ ๊ตํ™˜)๋Š” ํ”„๋กœ์„ธ์Šค context switch ์™€๋Š” ๋‹ฌ๋ฆฌ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์šธ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ  ์ž์› ์†Œ๋ชจ๊ฐ€ ์ค„์–ด๋“ค๋ฉฐ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ์  ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๋“ค์„ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ์Šค๋ ˆ๋“œ๋กœ ๋‚˜๋ˆ  ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‹จ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฃผ์˜ํ•  ์ ์ด ์žˆ์„๊นŒ์š”?

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณต์œ ํ•˜๋Š” ์ž์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ์ž์›์— ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์ผ์ด ์—†์—ˆ์ง€๋งŒ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ๋Š” ์ด ๋ถ€๋ถ„์„ ์‹ ๊ฒฝ ์จ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํž™ ์˜์—ญ์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•˜์—ฌ ์—‰๋šฑํ•œ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋กœ ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ๋™๊ธฐํ™” ๋ฅผ ํ•ญ์ƒ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์ž‘์—… ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ปจํŠธ๋กคํ•˜๊ณ  ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋กœ ์ธํ•ด ๋ณ‘๋ชฉํ˜„์ƒ / ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณผ๋„ํ•œ ๋ฝ์œผ๋กœ ์ธํ•œ ๋ณ‘๋ชฉํ˜„์ƒ์„ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ Python์—์„œ์˜ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ•ด์ฃผ์‹œ๊ฒ ์–ด์š”?

 

ํŒŒ์ด์ฌ์€ GIL(Global Interpreter Lock) ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ๋ชจ๋“  ์ž์›์˜ Lock์„ ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๋งŒ ์ž์›์„ ์ปจ๋“œ๋กคํ•ด ๋™์ž‘ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. GIL ๋•๋ถ„์— ์ž์› ๊ด€๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, CPU ์ž‘์—…์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์†๋„ ๊ฐœ์„ ์„ ๋Š๋ผ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

I/O ๋™์ž‘์ด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋งŒ์œผ๋กœ ํฐ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CPU ๋™์ž‘์ด ๋งŽ์€ ๊ฒฝ์šฐ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ CPU ์Šค์ผ€์ค„๋ง์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์šฐ์„  ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•ด ๋งํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ณ , ์ด ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์›(CPU ๋“ฑ)์„ ๋™์‹œ์— ์š”๊ตฌํ•˜๋Š”๋ฐ ์ž์›์ด ์ œํ•œ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ œํ•œ๋œ ์ž์›๋“ค์„ ์–ด๋–ป๊ฒŒ(์ˆœ์„œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋“ฑ) ๋‚˜๋ˆ ์ค„ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •์ฑ…์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

CPU ํ•˜๋‚˜๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ์ˆœ๊ฐ„์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฎ CPU ์˜ ์„ฑ๋Šฅ ์ฒ™๋„์—” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

 

  • CPU Utilization(์ด์šฉ๋ฅ ) : CPU๊ฐ€ ๋†€์ง€ ์•Š๊ณ  ์ผํ•œ ์‹œ๊ฐ„
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰) : ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰, CPU๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ผ์„ ํ–ˆ๋Š”์ง€
  • Turnaround Time(์†Œ์š”์‹œ๊ฐ„, ๋ฐ˜ํ™˜์‹œ๊ฐ„) : CPU ์‚ฌ์šฉ ์‹œ๊ฐ„ + ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„ (์งง์„์ˆ˜๋ก ์ข‹๋‹ค)
  • Waiting Time(๋Œ€๊ธฐ์‹œ๊ฐ„) : ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready Queue์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์ „์ฒด ์‹œ๊ฐ„์˜ ํ•ฉ
  • Response Time(์‘๋‹ต์‹œ๊ฐ„) : ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready Queue์— ๋“ค์–ด๊ฐ€์„œ ์ตœ์ดˆ๋กœ CPU ์–ป๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

๐Ÿ”ฎ ์„ ์ , ๋น„์„ ์ ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์„ ์  ๋ฐฉ์‹์€, ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ CPU ํ• ๋‹น์„ ๋บ์–ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

System Call, Time Quantum, Interrupt ๋“ฑ์— ์˜ํ•ด ์„ ์ ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

 

๋น„์„ ์  ๋ฐฉ์‹์€, ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ ˆ๋Œ€๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋บ๊ธฐ์ง€ ์•Š๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๐ŸŒŸ

 

์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“œ์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค. ์ปค๋„์€ ์ปค๋„์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ž์›์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์™€ ์ปค๋„ ๋ชจ๋“œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šค๋ ˆ๋“œ๋„ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. 

 

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ(user-level thread)๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 

์ปค๋„์€ ์ด๋Ÿฌํ•œ ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ(Kernel-level thread)๋Š” ์ปค๋„์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ๋Š” 3๊ฐ€์ง€ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. ๋‹ค๋Œ€์ผ ๋ชจ๋ธ 

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ n๊ฐœ์— ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ 1๊ฐœ๊ฐ€ ๋งคํ•‘๋˜์–ด ์‚ฌ์šฉ์ž ์ˆ˜์ค€์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋ฉด, ๋‚˜๋จธ์ง€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋Š” ์ปค๋„ ๋ ˆ๋ฒจ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฉ€ํ‹ฐ ์ฝ”์–ด์˜ ๋ณ‘๋ ฌ์„ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋ฉด, ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ˜ธ์ถœ๋œ ์‹œ์Šคํ…œ ์ฝœ์ด ๋ธ”๋กํ‚น ํƒ€์ž…์ด๋ผ๋ฉด, ์ „์ฒด ํ”„๋กœ์„ธ์Šค(์ฆ‰, ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ)๊ฐ€ ๋ธ”๋ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ปค๋„์ด ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ปค๋„์€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐœ๋ณ„์ ์ธ ์‹คํ–‰ ๋‹จ์œ„๋กœ ๋ณด์ง€ ์•Š๊ณ , ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์˜ ์‹คํ–‰ ๋‹จ์œ„๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ๋กœ ์ธํ•ด ๋ธ”๋ก๋˜๋ฉด, ์ปค๋„์€ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ธ”๋กํ•ฉ๋‹ˆ๋‹ค.

 

2. ์ผ๋Œ€์ผ ๋ชจ๋ธ

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ 1๊ฐœ์— ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ 1๊ฐœ๊ฐ€ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋ฉด, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๋‹ค๋Œ€์ผ ๋ชจ๋ธ์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ์ˆ˜๋งŒํผ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

3. ๋‹ค๋Œ€๋‹ค ๋ชจ๋ธ

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ n๊ฐœ์— ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ m๊ฐœ๊ฐ€ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. (m <= n) 

์ด ๋ฐฉ์‹์€ ๋‹ค๋Œ€์ผ ๋ชจ๋ธ๊ณผ ์ผ๋Œ€์ผ ๋ชจ๋ธ์˜ ์žฅ์ ์„ ํฌํ•จํ•˜์ง€๋งŒ, ๊ตฌํ˜„์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”ฎ ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋ผ๋ฉด์„œ ์–ด๋–ป๊ฒŒ ์šด์˜์ฒด์ œ ๋ ˆ๋ฒจ์ธ ์ปค๋„ ์•ˆ์ด ์•„๋‹ˆ๋ผ ์ปค๋„ ๋ฐ–์—์„œ ์ƒ์„ฑํ•˜์—ฌ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์Šค๋ ˆ๋“œ๊ฐ€ ์ปค๋„ ๋ฐ–์— ์žˆ๋‹ค๊ตฌ์š”? 

 

์ด๊ฒƒ์€ ์‹ค์ œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ง ์ปค๋„ ๋ฐ–์— ์žˆ๊ณ  ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ „๋ถ€ ์ปค๋„ ๋‚ด๋ถ€์— ์žˆ์ง€๋งŒ ์ปค๋„์˜ ํ†ต์ œ๊ถŒ ์•ˆ์— ์žˆ๋Š”์ง€ ์ฐจ์ด์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปค๋„์—๋Š” '์ปค๋„ ๋ชจ๋“œ'์™€ '์‚ฌ์šฉ์ž ๋ชจ๋“œ' ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ '์‚ฌ์šฉ์ž ๋ชจ๋“œ'์—์„œ ๋™์ž‘ํ•˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ปค๋„์€ '์‚ฌ์šฉ์ž ๋ชจ๋“œ'๊ฐ€ ๋˜์–ด์„œ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์˜ ์‘๋‹ต์ด ์˜ค๋ฉด ๋‹ค์‹œ '์ปค๋„ ๋ชจ๋“œ'๋กœ ๋ณ€ํ™˜๋˜์–ด ์ด์–ด์„œ ์ปค๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ https://helloinyong.tistory.com/293

 

๐Ÿ”ฎ ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด ์ž‘์—… ๋‹จ์œ„์ธ๋ฐ, ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์Šค๋ ˆ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค ์—†์ด ์Šค๋ ˆ๋“œ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

 

์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์Šค๋ ˆ๋“œ๋Š” ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ์ƒ์„ฑ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ์„ธ์Šค ๊ฒธ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ํŠน์ง• ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์Šค๋ ˆ๋“œ๋Š” ์ปค๋„ ์Šค๋ ˆ๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ https://helloinyong.tistory.com/293


๐Ÿ”ฎ DMA (Direct Memory Accecc)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

๋ฐ์ดํ„ฐ์˜ ์ด๋™์—๋Š” CPU์˜ ๊ฐœ์ž…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” CPU์— ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CPU๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ DMA๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ํ•œ์ปด์˜คํ”ผ์Šค 'ํ•œ๊ธ€'์„ ํด๋ฆญ ํ›„, ๋นˆ ํ™”๋ฉด์— ์ปค์„œ๊ฐ€ ๊นœ๋นก์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, 'hello world!' ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ์š”?

  • ํ‚ค๋ณด๋“œ์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด ํ‚ค๋ณด๋“œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ CPU์—๊ฒŒ ํ‚ค๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • CPU๋Š” ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ด๋˜ ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ธํ„ฐ๋ŸฝํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด OS๋‚ด์— ์ •์˜๋œ ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์„ ์ฐพ์•„๊ฐ‘๋‹ˆ.
  • ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์€ ํ‚ค๋ณด๋“œ๋กœ ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ถ€๋ถ„์— ์ €์žฅํ•ด ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด ๋“ค์–ด์™”์Œ์„ ์•Œ๋ฆฌ๋ฉฐ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ง์ „ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌ์‹œ์ผœ ์ค‘๋‹จ๋˜์—ˆ๋˜ ์ž‘์—…์„ ์žฌ๊ฐœํ•ฉ๋‹ค.

๐Ÿ”ฎ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์„ธ์š”. ์žฅ๋‹จ์ ๋„ ์•Œ๋ ค์ฃผ์‹œ๊ตฌ์š”. ๋ฉ”์„ธ์ง€ ์ „๋‹ฌ ์‹œ ๋”œ๋ ˆ์ด์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋‹จ์ ์œผ๋กœ ๋Œ€๋‹ตํ•ด์ฃผ์„ธ์š”.

 

ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ ์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž์›์„ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ, IPC๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IPC๋Š” Inter Process Communication ์˜ ์•ฝ์–ด๋กœ, ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.


1. ํŒŒ์ดํ”„(Pipes)
- ์žฅ์ : ๋‹จ์ˆœํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ชจ-์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
- ๋‹จ์ : ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ ์ฝ๊ธฐ ํŒŒ์ดํ”„์™€ ์“ฐ๊ธฐ ํŒŒ์ดํ”„๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ฅผ ์ƒ์„ฑํ•œ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์‹œ ๋”œ๋ ˆ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ๋ฉ”์‹œ์ง€ ํ(Message Queues)
- ์žฅ์ : ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹œ์Šคํ…œ ํ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
- ๋‹จ์ : ํ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์— ๋”œ๋ ˆ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Shared Memory)
- ์žฅ์ : ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์ด๋‚˜ ๋ฉ”์‹œ์ง€ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
- ๋‹จ์ : ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์‹œ ๋”œ๋ ˆ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์ ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์†Œ์ผ“(Sockets)
- ์žฅ์ : ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์— ์ ํ•ฉํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋‹จ์ : ๊ตฌํ˜„์ด ๋ณต์žกํ•˜๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์œผ๋กœ ์ธํ•œ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋”œ๋ ˆ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์„ธ๋งˆํฌ์–ด (Semaphores)

์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•ด์„œ ๊ณต์œ  ์ž์›์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 


๐Ÿ”ฎ ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š” 

 

Trap ์€ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ช…์นญ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

์ธํ„ฐ๋ŸฝํŠธ๋Š” `Ctrl + C`๋ฅผ ๋ˆ„๋ฅผ๋•Œ ์ฒ˜๋Ÿผ ํ•˜๋“œ์›จ์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‹ ํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์žฅ์น˜ ๋‚ด์—์„œ ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. `interrupt vector`์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋™์ž‘์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Segmentation fault : ์ž˜๋ชป๋œ ํฌ์ธํ„ฐ ์ฐธ์กฐ, ๋ฐฐ์—ด ๋ฒ”์œ„ ์˜ค์ ‘๊ทผ, ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ, ํฌ์ธํ„ฐ ์˜ค์‚ฌ์šฉ

 

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ 

  • ๊ฐ์ข… ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋“ค์ด CPU์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ.
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ํ†ตํ•ด CPU์—๊ฒŒ ์ „๋‹ฌ
  • ์˜ˆ: ํ‚ค๋ณด๋“œ ์ž…๋ ฅ, ํƒ€์ด๋จธ ์‹ ํ˜ธ ๋“ฑ

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

  • ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป๋œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ ์ฒ˜๋ฆฌ
  • ์ž์‹ ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์‹œ์Šคํ…œ์ฝœ (์ด๋ฅผ Trap์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)
  • ์˜ˆ: System Call, Segmentation fault, 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ

๐Ÿ”ฎ DMA ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”

  • ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—ฐ์‚ฐ์ด CPU์— ์˜ํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์งˆ ๊ฒฝ์šฐ, ์ฃผ๋ณ€ ์žฅ์น˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์›ํ•  ๋•Œ๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด CPU ์—…๋ฌด๊ฐ€ ๋ฐฉํ•ด๋ฅผ ๋ฐ›๊ฒŒ ๋˜์–ด CPU์˜ ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • DMA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ๋ฒ„ํผ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฝ์–ด์˜ค๋Š” ์ž‘์—…์„ CPU๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, DMA๊ฐ€ ๋Œ€ํ–‰ํ•จ์œผ๋กœ์จ CPU๋Š” ์›๋ž˜ ํ•˜๋˜ ์ž‘์—…์„ ๋ฉˆ์ถ”๊ณ  ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.
  • DMA๋Š” ์ผ์ข…์˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ์„œ CPU๊ฐ€ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์š”์ฒญ์— ์˜ํ•ด ์ž์ฃผ ์ธํ„ฐ๋ŸฝํŠธ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ ์šด์˜์ฒด์ œ๋Š” ๋‹ค์ค‘ ์œ ์ €๊ฐ€ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์˜ ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ ์ž์›์˜ '๋ณดํ˜ธ'๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๋ณดํ˜ธ๋ฅผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[1] ์ž…์ถœ๋ ฅ์žฅ์น˜ ๋ณดํ˜ธ

  • A๊ฐ€ ํ”„๋ฆฐํ„ฐ์— ์ธ์‡„๋ฅผ ์š”์ฒญํ•˜์—ฌ ํ”„๋ฆฐํ„ฐ๊ฐ€ A์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ผ ๋•Œ, B๊ฐ€ ํ”„๋ฆฐํ„ฐ ์š”์ฒญ์„ ํ•˜๋ฉด A์˜ ์ž‘์—… ์ดํ›„์— B์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์™€ ๊ด€๊ณ„๋œ ํŠน๊ถŒ ๋ช…๋ น(in, out) ๋ช…๋ น์€ ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์šด์˜์ฒด์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

[2] ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ

  • A๊ฐ€ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” B๊ฐ€ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์Šต๋‹ˆ๋‹ค.
  • CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— MMU(Memory Management Unit)๋ฅผ ๋‘์–ด์„œ base, limit ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ์ฝ์–ด์„œ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋ถ„์„ ๋„˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

[3] CPU ๋ณดํ˜ธ

  • while ( n = 1) ๊ณผ ๊ฐ™์ด ์‹ค์ˆ˜ ํ˜น์€ ๊ณ ์˜๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์‹œ๊ฐ„์„ ๋…์ ํ•˜๋Š” ์ผ์„ ๋ฐฉ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ์ • ์ฃผ๊ธฐ๋กœ CPU์—๊ฒŒ ํƒ€์ด๋จธ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฑธ๋„๋ก ํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฑธ๋ฉด CPU๋Š” ์ง€๊ธˆ ํ•˜๋Š” ์ผ์„ ๋ฉˆ์ถ”๊ณ  ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์—๋Š” CPU ์‹œ๊ฐ„์ด ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ณจ๊ณ ๋ฃจ ๊ฐ€๋Š”์ง€, ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ง‘์ค‘๋˜๋Š”์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ฎ synchronized์— ๋Œ€ํ•ด ์•„๋Š” ๋ฐ”๋ฅผ ์ „๋ถ€ ์–˜๊ธฐํ•ด ์ฃผ์„ธ์š”.

  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ƒํ™ฉ์˜ ์ œ์–ด๋ฅผ ์œ„ํ•ด synchronized๋ฅผ ์ ๊ทน ํ™œ์šฉ.
  • ์–ด๋–ค ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ƒํ™ฉ์ด์—ˆ๋Š”์ง€, ์™œ synchronized๋ฅผ ์ผ๋Š”์ง€, synchronized๊ฐ€ mutex๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”์ง€
  • ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†์—ˆ๋Š”์ง€, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๊ณผ synchronized๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ์ง€,
  • ํŠน์ • ์ƒํ™ฉ์„ ์ œ์‹œํ•œ ๋’ค ์ด ๊ฒฝ์šฐ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ์ง€

๐Ÿ”ฎ ํ•จ์ˆ˜ํ˜ธ์ถœ๊ณผ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

  • ํ•จ์ˆ˜ํ˜ธ์ถœ์€ ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜ ํ˜น์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ €์žฅ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๊ตฌ์š”,
  • ์‹œ์Šคํ…œ ์ฝœ์€ ์šด์˜์ฒด์ œ์— ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ”ฎ ์ธํ„ฐ๋ŸฝํŠธ์™€ ์‹œ์Šคํ…œ ์ฝœ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

๐Ÿ”ฎ ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฃผ์ œ๋Š” ๋ฉด์ ‘์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. L์‚ฌ์˜ ๊ฒฝ์šฐ ์–ผ๋งˆ๋‚˜ ์จ๋ดค๋Š”์ง€ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์œผ๋กœ ๋“ฑ์žฅํ•œ ์ „๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์•ฝ ๊ธ€๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. C ์ˆ˜์ค€์ด ์•„๋‹ˆ๋”๋ผ๋„ Java, Python ์–ธ์–ด ๋ ˆ๋ฒจ์—์„œ ๋Œ๋ ค๋ณด๋ฉด์„œ ์‚ดํŽด๋ณผ๋ฒ•ํ•œ ์ค‘์š”ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด Covenant. ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๋ณด๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”!

  • ์Šค๋ ˆ๋“œ
    • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ, CPU ๋“ฑ์˜ ์ž์›์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • Stack๋งŒ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉฐ Code, Data, Heap์€ ์“ฐ๋ ˆ๋“œ๊ฐ„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ
    • ํ•œ ๊ฐœ์˜ ๋‹จ์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(์‘์šฉํ”„๋กœ๊ทธ๋žจ)์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ ํ›„ ์ž‘์—…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • 'ํ•œ๊ธ€'์—์„œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ”„๋ฆฐํŠธ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์„œ ์ˆ˜์ •์€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ณ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ ๊ฐ์†Œ ๋ฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ๋Š” ์ด๋ฏธ ๊ณต์œ ํ•˜๊ณ  ์žˆ๊ธฐ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ƒ๊ธธ ํ†ต์‹  ๋ถ€๋‹ด์„ ๊ฐ์†Œํ•ด์ค๋‹ˆ๋‹ค.
    • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋””๋ฒ„๊น…์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ž์› ๊ณต์œ  ๋ฌธ์ œ (์ผ๋ช… ๊ต์ฐฉ์ƒํƒœ) ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

๐Ÿ”ฎ  Deadlock์˜ ๋ฐœ์ƒ ์กฐ๊ฑด๊ณผ Decklock์„ ๊นจ๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

 

๋ฐ๋“œ๋ฝ์ด๋ž€?

  • ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ๊ณต์œ  ์ž์›์„ ํš๋“ํ•˜์ง€ ๋ชปํ•ด ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ  ์˜์›ํžˆ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์กฐ๊ฑด

๋‹ค์Œ ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ Deadlock์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒํ˜ธ๋ฐฐ์ œ (Mutual exclusion)
    • (1) ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  (2) ๊ฐœ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๋ผ๋ฉด ์ƒํ˜ธ๋ฐฐ์žฌ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
    • ์ƒํ˜ธ๋ฐฐ์ œ ์ƒํ™ฉ ์˜ˆ์‹œ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ์„ธ๋งˆํฌ์–ด
  • ์ ์œ  ๋Œ€๊ธฐ (Lock & Wait)
    • ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์ ์œ ํ•˜๋ฉด ์ž‘์—…์„ ๋งˆ์น ๋•Œ๊นŒ์ง€ ์ด๋ฏธ ์ ์œ ํ•œ ์ž์›์„ ๋‚ด๋†“์ž๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ์  ๋ถˆ๊ฐ€ (No Preemption)
    • ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ๋นผ์•—์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๋‚ด๋†“์•„์•ผ์ง€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ (Circular wait)
    • ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ž์›์ด ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์žˆ๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ฆด์‹œ ์›ํ˜•์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ฐ๋“œ๋ฝ์„ ๊นจ๋Š” ๋ฐฉ๋ฒ•

  • ์ƒํ˜ธ๋ฐฐ์ œ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋™์‹œ์— ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์€ ์ž์›์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์˜ ์ˆ˜๋ฅผ ์Šค๋ ˆ๋“œ ์ˆ˜ ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์ „ ํ•„์š”ํ•œ ์ž์›์ด ๋ชจ๋‘ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ž ๊ธˆ & ๋Œ€๊ธฐ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋Œ€๊ธฐ ํ•˜์ง€ ์•Š๋Š” ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ์ž์›์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ž์›์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ž์›์„ ๋ชจ๋‘ ๋‚ด๋†“์Šต๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ์ 
      • ๊ธฐ์•„ (Starvation): ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ํ•„์š”ํ•œ ์ž์›์„ ์ ์œ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ ์œ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž์›์ด ํ•œ ๋ฒˆ์— ํš๋“ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์ด ์ƒํ™ฉ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค.
      • ๋ผ์ด๋ธŒ๋ฝ (Livelock): ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๊ธฐ์— ์ž์›์„ ํš๋“ํ–ˆ๋‹ค๊ฐ€ ๋‚ด๋†“๋Š” ์ƒํ™ฉ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ์  ๋ถˆ๊ฐ€ ํ”ผํ•˜๋Š” ๋ฒ•
    • ์ž์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ์ž์›์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
    • ์ž์›์ด ํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์†Œ์œ ํ•œ ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ž์›์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์›์„ ์†Œ์œ ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด ์ž์‹ ์ด ์†Œ์œ ํ•œ ์ž์›์„ ๋ชจ๋‘ ํ’€์–ด์ฃผ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ ํ”ผํ•˜๋Š” ๋ฒ•
    • ๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€ํ•˜๋Š” ํ”ํ•œ ์ „๋ ฅ์ž…๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ํ˜น์€ ์ž์›๋“ค์— ์ˆœ์„œ๋ฅผ ์ค€ ๋’ค์— ๊ฐ ์Šค๋ ˆ๋“œ๋“ค์ด ์ž์›์„ ์š”์ฒญํ•  ๋•Œ ์šฐ์„ ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์š”์ฒญํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ์ž์›๋ณด๋‹ค ์šฐ์„ ๋„๊ฐ€ ํฐ ์ž์›์„ ์ „๋ถ€ ํ•ด์ œํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ž์› ์š”์ฒญ์„ ํ—ˆ๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ๋ฌธ์ œ์ 
      • ์ž์›์˜ ํ• ๋‹น ์ˆœ์„œ์™€ ์‚ฌ์šฉ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ž์›์— ์ˆœ์„œ๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฎ OS์—์„œ ํ”„๋กœ์„ธ์Šค๋Š” CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— MMU (Memory Management Unit) ๋ฅผ ๋‘์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GDB์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ•˜์—ฌ ์ ˆ๋Œ€์  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๊ฐ’์„ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

 

GDB์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ์šด์˜ ์ฒด์ œ์˜ ํŠน๋ณ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๋Š” ํŠน์ • ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์‹œ์Šคํ…œ ํ˜ธ์ถœ: ๋””๋ฒ„๊ฑฐ๋Š” `ptrace`์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผํ•˜๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

2. ์šด์˜์ฒด์ œ์˜ ๊ถŒํ•œ ๋ถ€์—ฌ: ๋””๋ฒ„๊ฑฐ๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ(์˜ˆ: root ๊ถŒํ•œ)์„ ๋ถ€์—ฌ๋ฐ›์•„, ๋ณด์•ˆ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์šฐํšŒํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ: ๋””๋ฒ„๊ฑฐ๋Š” ๋Œ€์ƒ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ , `read`์™€ `write` ์ž‘์—…์„ ํ†ตํ•ด ๋ณ€์ˆ˜์˜ ๊ฐ’๊ณผ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํ”„๋กœ์„ธ์Šค ์ œ์–ด: ๋””๋ฒ„๊ฑฐ๋Š” ๋Œ€์ƒ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€, ์žฌ๊ฐœ, ๋‹จ๊ณ„๋ณ„ ์‹คํ–‰ ๋“ฑ์„ ์กฐ์ž‘ํ•˜๋ฉฐ, ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์„ค์ •๊ณผ ๊ฐ™์€ ๋””๋ฒ„๊น… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ, ๋””๋ฒ„๊ฑฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ๋กœ ์ž‘์šฉํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ์ž์„ธํžˆ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.


๐Ÿ”ฎ ์ด์ค‘๋ชจ๋“œ์˜ ํŠน์ง•๊ณผ ์žฅ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”

 

์ด์ค‘ ๋ชจ๋“œ(Dual Mode) ์šด์˜์€ ์šด์˜ ์ฒด์ œ๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ(User Mode)์™€ ์ปค๋„ ๋ชจ๋“œ(Kernel Mode)์˜ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

1. ์‚ฌ์šฉ์ž ๋ชจ๋“œ์™€ ์ปค๋„ ๋ชจ๋“œ: ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ๋Š” ์ œํ•œ๋œ ์ ‘๊ทผ ๊ถŒํ•œ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ , ์ปค๋„ ๋ชจ๋“œ์—์„œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ์ž์›๊ณผ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2. ๋ณด์•ˆ ๊ฐ•ํ™”: ์ด์ค‘ ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์Šคํ…œ ์ž์›์— ๋Œ€ํ•œ ๋ฌด์ œํ•œ ์ ‘๊ทผ์„ ๋ง‰์•„, ์šด์˜ ์ฒด์ œ์™€ ์‹œ์Šคํ…œ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.
3. ์•ˆ์ •์„ฑ ํ–ฅ์ƒ: ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ, ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
4. ์ž์› ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ: ์ปค๋„ ๋ชจ๋“œ์—์„œ ์šด์˜ ์ฒด์ œ๋Š” ํ•˜๋“œ์›จ์–ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ 64๋น„ํŠธ์™€ 32๋น„ํŠธ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

 

64๋น„ํŠธ์™€ 32๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜์˜ ์ฐจ์ด๋Š” ์ฃผ๋กœ CPU๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์—์„œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

1. ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ง€์ • ๋Šฅ๋ ฅ: 64๋น„ํŠธ ์‹œ์Šคํ…œ์€ 32๋น„ํŠธ ์‹œ์Šคํ…œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ์ฃผ์†Œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ (32๋น„ํŠธ๋Š” ์ตœ๋Œ€ 4GB, 64๋น„ํŠธ๋Š” 16EB๊นŒ์ง€), ์ด๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
2. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ: 64๋น„ํŠธ ํ”„๋กœ์„ธ์„œ๋Š” ํ•œ ๋ฒˆ์— 64๋น„ํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด, 32๋น„ํŠธ ํ”„๋กœ์„ธ์„œ์— ๋น„ํ•ด ๋” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3. ์„ฑ๋Šฅ ๊ฐœ์„ : 64๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜๋Š” ๋” ๋งŽ์€ ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋” ๋„“์€ ๋ฐ์ดํ„ฐ ๋ฒ„์Šค๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
4. ์†Œํ”„ํŠธ์›จ์–ด ํ˜ธํ™˜์„ฑ: 64๋น„ํŠธ ์‹œ์Šคํ…œ์€ 32๋น„ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ๋ฐ˜๋Œ€๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ตœ์‹  ์†Œํ”„ํŠธ์›จ์–ด์™€ ์šด์˜์ฒด์ œ๋Š” ์ ์  64๋น„ํŠธ ์ตœ์ ํ™”๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ, 64๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜๋Š” ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ง€์ • ๋Šฅ๋ ฅ๊ณผ ๋” ๋†’์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ†ตํ•ด ํ˜„๋Œ€ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

+ ํฌ์ธํ„ฐ

64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 32๋น„ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธํ™˜ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ๊ฒฝ์šฐ ํฌ์ธํ„ฐ๋„ 32๋น„ํŠธ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 64๋น„ํŠธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋งˆ์šฐ์Šค๋กœ ํ•œ๊ธ€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ, ์ปดํ“จํ„ฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ผ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

Points: Interrupt, Process Scheduling, Disk Scheduling, Swapping, Thread

๋งˆ์šฐ์Šค๋กœ ํ•œ๊ธ€ ๋ฐ”๋กœ๊ฐ€๊ธฐ(๋‹จ์ถ• ์•„์ด์ฝ˜)๋ฅผ ํด๋ฆญํ•  ๋•Œ ์ปดํ“จํ„ฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

1. Interrupt (์ธํ„ฐ๋ŸฝํŠธ): ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋กœ ํ•œ๊ธ€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด, ๋งˆ์šฐ์Šค ํด๋ฆญ์€ ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์‹œ์Šคํ…œ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ˜„์žฌ CPU๊ฐ€ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ผ์‹œ ์ค‘๋‹จ์‹œํ‚ค๊ณ , ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

2. Process Scheduling (ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง): ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ํ”„๋กœ์„ธ์Šค์— CPU ์‹œ๊ฐ„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

3. Disk Scheduling (๋””์Šคํฌ ์Šค์ผ€์ค„๋ง): ํ•œ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํŒŒ์ผ๊ณผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋””์Šคํฌ์—์„œ ์ฝํ˜€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋””์Šคํฌ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋””์Šคํฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•˜์—ฌ, ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ํšจ์œจ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

4. Swapping (์Šค์™€ํ•‘): ๋ฉ”๋ชจ๋ฆฌ์— ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ, ์Šค์™€ํ•‘์„ ํ†ตํ•ด ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž ์‹œ ๋””์Šคํฌ๋กœ ์˜ฎ๊ธฐ๊ณ , ํ•œ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

5. Thread (์Šค๋ ˆ๋“œ): ํ•œ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ฒ˜๋ฆฌ, ๋ฌธ์„œ ๋กœ๋”ฉ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ๋“ฑ์ด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์€ ์‚ฌ์šฉ์ž์˜ ๊ฐ„๋‹จํ•œ ๋งˆ์šฐ์Šค ํด๋ฆญ ํ•˜๋‚˜์—๋„ ์—ฌ๋Ÿฌ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ, ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์€ ์ ์ ˆํ•œ ์‘๋‹ต์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฎ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค, ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ฐ๊ฐ ์ฐจ์ด์ ์€?

 

๋ชจ๋‘ ์ปดํ“จํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์ด์ง€๋งŒ, ๊ฐ๊ฐ์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ ์ƒํ™ฉ์—๋Š” ๋ช…ํ™•ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์€ ์—ฌ๋Ÿฌ ์ž‘์—…์˜ ๋™์‹œ ์‹คํ–‰์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์™€, ๋‹จ์ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์ ์žฌํ•ด CPU๊ฐ€ ์ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก, ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…์„ ์„ ํƒํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ

Reference

 

https://github.com/brave-people/brave-tech-interview/blob/main/contents/os.md

https://minhamina.tistory.com/235

https://juran-devblog.tistory.com/206

https://hoons-dev.tistory.com/95