CS๊ณต๋ถ€/์ปดํ“จํ„ฐ ๊ตฌ์กฐ&์šด์˜์ฒด์ œ

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

alswlfl 2026. 4. 28. 17:44

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

ํ”„๋กœ์„ธ์Šค๋Š” CPU ์Šค์ผ€์ค„๋ง์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ž‘์—…์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋œ ๊ฒƒ(= ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ)

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

ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ ์žฌ๋˜์–ด ์‹คํ–‰๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํฌ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค(foreground process): ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ๊ณต๊ฐ„์—์„œ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค(ex: ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด)
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค(background process): ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์ง€ ๋ชปํ•˜๋Š” ๊ณณ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค
    • ๋ฐ๋ชฌ(daemon): ์‚ฌ์šฉ์ž์™€ ๋ณ„๋‹ค๋ฅธ ์ƒํ˜ธ์ž‘์šฉ ์—†์ด ์ฃผ์–ด์ง„ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค 

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ปค๋„ ์˜์—ญ์—๋Š” ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB) ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๊ณ , ์‚ฌ์šฉ์ž ์˜์—ญ์—๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, ํž™ ์˜์—ญ, ์Šคํƒ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์ €์žฅ๋œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋‚ด ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ

์ฝ”๋“œ ์˜์—ญ(TEXT ์˜์—ญ)

- ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ช…๋ น์–ด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

- CPU๊ฐ€ ์ฝ๊ณ  ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๊ธฐ๊ฐ€ ๊ธˆ์ง€๋˜์–ด ์žˆ๋Š” ์ฝ๊ธฐ ์ „์šฉ(read-only)

- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋„์ค‘ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ํ• ๋‹น ์˜์—ญ

 

๋ฐ์ดํ„ฐ ์˜์—ญ

- ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์œ ์ง€ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

- ์ „์—ญ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜ ์ €์žฅ

- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋„์ค‘ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ํ• ๋‹น ์˜์—ญ

BSS segment: ์ „์—ญ ๋ณ€์ˆ˜, static & const๋กœ ์„ ์–ธ, 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋Š” ์ดˆ๊ธฐํ™”๊ฐ€ ์–ด๋–ค ๊ฐ’์œผ๋กœ๋„ ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ณ€์ˆ˜

Data segment: ์ „์—ญ ๋ณ€์ˆ˜, static & const๋กœ ์„ ์–ธ, 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ณ€์ˆ˜

 

ํž™ ์˜์—ญ

- ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“  ์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž)๊ฐ€ ์ง์ ‘ ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ์ €์žฅ ๊ณต๊ฐ„(ex: ๋™์  ๋ฐฐ์—ด malloc, ๊ฐ์ฒด new ๋“ฑ)์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋„์ค‘ ๋น„๊ต์  ์ž์œ ๋กญ๊ฒŒ ํ• ๋‹นํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

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

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(memory leak): ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์•„ ํ• ๋‹นํ•œ ๊ณต๊ฐ„์ด ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๋‚จ์•„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๋ฌธ์ œ

 

- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์  ํ• ๋‹น ์˜์—ญ

- ๋™์  ํ• ๋‹น์„ ์œ„ํ•ด ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ ๋ฐฉํ–ฅ(Bottom-up)์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•จ

- ๋Ÿฐํƒ€์ž„์— ํž™์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

๋Ÿฐ ํƒ€์ž„: ์ปดํŒŒ์ผ ๊ณผ์ •์„ ๋งˆ์นœ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์‹คํ–‰๋˜๊ณ  ๋™์ž‘๋˜๋Š” ์‹œ์ 

 

์Šคํƒ ์˜์—ญ

- ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฐ’๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ์‚ฌ๋ผ์ง€๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋ณต๊ท€ ์ฃผ์†Œ ๋“ฑ์ด ์ €์žฅ๋œ๋‹ค.

- ์Šคํƒ ํŠธ๋ ˆ์ด์Šค ํ˜•ํƒœ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.

์Šคํƒ ํŠธ๋ ˆ์ด์Šค(stack trace): ํŠน์ • ์‹œ์ ์— ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ •๋ณด๋กœ, ๋ฌธ์ œ์˜ ๋ฐœ์ƒ ์ง€์ ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์–ด ๋””๋ฒ„๊น…์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

 

- ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ & ์ข…๋ฃŒ ์‹œ ์ œ๊ฑฐ๋˜๋Š” ํ™œ์„ฑํ™” ๋ ˆ์ฝ”๋“œ pop/push

- ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

- ์ปดํŒŒ์ผ ํƒ€์ž„์— ์Šคํƒ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

์ปดํŒŒ์ผ ํƒ€์ž„: ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜์–ด ๋จธ์‹ ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋˜๋Š” ๊ณผ์ •

 

์‚ฌ์šฉ์ž ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

ํž™ vs ์Šคํƒ

์Šคํƒ๊ณผ ํž™ ์˜์—ญ์€ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํƒ ์˜์—ญ์ด ํด์ˆ˜๋ก ํž™ ์˜์—ญ์ด ์ž‘์•„์ง€๊ณ . ์Šคํƒ ์˜์—ญ์ด ์ž‘์„์ˆ˜๋ก ํž™ ์˜์—ญ์ด ์ปค์ง„๋‹ค.

์œ ์ € ์˜์—ญ๋ณด๋‹ค ๋†’์€ ์ฃผ์†Œ์— ์ปค๋„ ์˜์—ญ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋„ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ €์˜ ์Šคํƒ ์˜์—ญ์€ ๋†’์€ ์ฃผ์†Œ → ๋‚ฎ์€ ์ฃผ์†Œ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋˜๊ณ , ํž™ ์˜์—ญ์€ ๋‚ฎ์€ ์ฃผ์†Œ → ๋†’์€ ์ฃผ์†Œ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

์Šคํƒ๊ณผ ํž™ ์˜์—ญ์ด ์„œ๋กœ ์ƒ๋Œ€์˜ ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๊ฒŒ ๋˜๋ฉด, ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Stack Overflow)์™€ ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Heap Overflow)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB, Process Control Block)

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

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

๊ตฌ์กฐ์ฒด(struct): ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ณตํ•ฉ ์ž๋ฃŒํ˜•์˜ ์ผ์ข…

 

- ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ(ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ)๋์„ ๋•Œ ์ปค๋„ ์˜์—ญ์— ๋งŒ๋“ค์–ด์ง€๊ณ , ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์ด ๋๋‚˜๋ฉด ํ๊ธฐ๋œ๋‹ค.

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

 

PCB ์ •๋ณด

https://velog.io/@sweet_sumin/PCBTCB

  • ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž(PID): ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๊ณ ์œ ํ•œ ID
  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ: ์‹คํ–‰, ๋Œ€๊ธฐ, ์ •์ง€ ์ƒํƒœ ๋“ฑ
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ: ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ
  • ์‹คํ–‰ ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•œ CPU ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’: ๋ˆ„์‚ฐ๊ธฐ(Accumulator), ์Šคํƒ ํฌ์ธํ„ฐ, ๋ฒ ์ด์Šค ๋ ˆ์ง€์Šคํ„ฐ ๋“ฑ
  • CPU ์Šค์ผ€์ค„๋ง ์ •๋ณด: CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ค‘๋‹จ๋œ ์‹œ๊ฐ„ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ •๋ณด: ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์ƒ ์ ์žฌ ์œ„์น˜
  • I/O ์ƒํƒœ ์ •๋ณด: ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ I/O ๋””๋ฐ”์ด์Šค ๋ชฉ๋ก
  • ๊ณ„์ • ์ •๋ณด: ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ์‚ฌ์šฉ๋œ CPU ์‚ฌ์šฉ๋Ÿ‰, ์‹คํ–‰ํ•œ ์œ ์ €์˜ ์ •๋ณด
  • ํฌ์ธํ„ฐ: ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ, ์ž์‹ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ, ํ• ๋‹น๋œ ์ž์›์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ์ •๋ณด ๋“ฑ. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„์ƒํƒœ๋‚˜ ๋Œ€๊ธฐ ์ƒํƒœ์ผ ๊ฒฝ์šฐ ํ๋กœ ์šด์˜์ด ๋˜๋Š”๋ฐ, PCB์„ ์—ฐ๊ฒฐ ์‹œ ํ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ ์‚ฌ์šฉ

https://gist.github.com/taekwon-dev/9b68c27b95c5e0e8e13c73d56b3a4d0f

 

- ์—ฌ๋Ÿฌ PCB๋“ค์€ ์ปค๋„ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์€ ์‹คํ–‰ ์ค‘์ธ PCB์˜ ๋ชจ์Œ

- ์ƒˆ๋กญ๊ฒŒ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ PCB๋ฅผ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•˜๊ณ , ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์ข…๋ฃŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉ ์ค‘์ด๋˜ ์ž์› ํ•ด์ œํ•˜๊ณ  PCB๋„ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œํ•œ๋‹ค.

- ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ” ์‚ฌ์šฉ์œผ๋กœ ์šด์˜์ฒด์ œ๋Š” ๋น ๋ฅด๊ฒŒ PCB์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ข€๋น„ ํ”„๋กœ์„ธ์Šค: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜์–ด ์‚ฌ์šฉํ•œ ์ž์›์ด ํšŒ์ˆ˜๋˜์—ˆ์Œ์—๋„ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์— ์ข…๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค์˜ PCB๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ

ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”(https://velog.io/@sweet_sumin/PCBTCB)

 

๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)

๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค๋“ค์€ ํ•œ์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ์‹คํ–‰๋œ๋‹ค. (ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋œ๋‹ค = ์šด์˜์ฒด์ œ ์˜ํ•ด CPU์˜ ์ž์›์„ ํ• ๋‹น๋ฐ›์•˜๋‹ค)

ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์€ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ์— ์˜ํ•ด ์ œํ•œ๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ๋˜๋ฉด ์ •ํ•ด์ง„ ์‹œ๊ฐ„๋งŒํผ CPU๋ฅผ ์ด์šฉํ•˜๊ณ , ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž์‹ ์˜ ์ฐจ๋ก€๋ฅผ ์–‘๋ณดํ•˜๊ณ  ๋‹ค์Œ ์ฐจ๋ก€๊ฐ€ ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ์˜ˆ์‹œ

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

๋ฐฑ์—… ๋Œ€์ƒ์ด ๋˜๋Š” ์ค‘๊ฐ„ ์ •๋ณด, ์ฆ‰ ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰์„ ์žฌ๊ฐœํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์–ตํ•ด์•ผ ํ•  ์ •๋ณด๋ฅผ ๋ฌธ๋งฅ(context)๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ PCB์— ๋ช…์‹œ๋œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋‹ค ๋˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์šด์˜์ฒด์ œ๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ PCB์— ๋ฌธ๋งฅ์„ ๋ฐฑ์—…ํ•˜๊ณ , ๋’ค์ด์–ด ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ๋ณต๊ตฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์‹คํ–‰์„ ๋ฌธ๋งฅ ๊ตํ™˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฌธ๋งฅ ๊ตํ™˜์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Š์ž„์—†์ด ๋น ๋ฅด๊ฒŒ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰๋˜๋Š” ์›๋ฆฌ์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ ๊ตํ™˜ ์˜ˆ์‹œ(https://velog.io/@yslys/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EC%96%B4-%EB%B8%94%EB%A1%9D%EA%B3%BC-%EB%AC%B8%EB%A7%A5%EA%B5%90%ED%99%98)

  1. ์š”์ฒญ ๋ฐœ์ƒ: ์ธํ„ฐ๋ŸฝํŠธ๋‚˜ ํŠธ๋žฉ์— ์˜ํ•ด์„œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ด ex) I/O ์ž…์ถœ๋ ฅ, ์˜ˆ์™ธ, ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ
  2. PCB์— ํ”„๋กœ์„ธ์Šค ์ •๋ณด ์ €์žฅ: ๊ธฐ์กด์— ์‹คํ–‰์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค P1๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋“ค์„ PCB1์— ์ €์žฅ(running → waiting)
  3. CPU์— ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹น: ์šด์˜์ฒด์ œ๋Š” ์ƒˆ๋กญ๊ฒŒ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค P2์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•ด๋‹น PCB์—์„œ ๊ฐ€์ ธ์™€ CPU ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌ
  4. ์š”์ฒญ ๋ฐœ์ƒ: ์ธํ„ฐ๋ŸฝํŠธ๋‚˜ ํŠธ๋žฉ์— ์˜ํ•ด ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ด, P2์˜ ์ƒํƒœ๋ฅผ PCB2์— ์ €์žฅ
  5. PCB1์— ์ €์žฅ๋œ P1์˜ ์ƒํƒœ ๋ถˆ๋Ÿฌ์™€ ๋ณต๊ตฌ
  6. P1 ์‹คํ–‰

 

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


ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฑฐ์น˜๋ฉฐ ์‹คํ–‰๋˜๋Š”๋ฐ, ์šด์˜์ฒด์ œ๋Š” PCB๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ธ์‹ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ(https://0woy.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%99%80-%EC%BB%B4%ED%93%A8%ED%84%B0?category=1221426&utm_source=chatgpt.com%EF%BB%BF)

  1. ์ƒ์„ฑ ์ƒํƒœ(new)
    ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑ ์ค‘์ธ ์ƒํƒœ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด PCB๋ฅผ ํ• ๋‹น๋ฐ›์€ ์ƒํƒœ์ด๋‹ค. ์ƒ์„ฑ ์ƒํƒœ๋ฅผ ๊ฑฐ์ณ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜์–ด CPU์˜ ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  2. ์ค€๋น„ ์ƒํƒœ(ready)
    ๋‹น์žฅ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž์‹ ์˜ ์ฐจ๋ก€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋–„๋ฌธ์— ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ์ฆ‰, CPU ์Šค์ผ€์ค„๋Ÿฌ๋กœ๋ถ€ํ„ฐ CPU ์†Œ์œ ๊ถŒ์ด ๋„˜์–ด์˜ค๊ธธ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๋‹ค.
    ์ค€๋น„ ์ƒํƒœ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์œผ๋ฉด ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ, ์ „ํ™˜๋˜๋Š” ๊ฒƒ์„ ๋””์ŠคํŒจ์น˜(dispatch)๋ผ๊ณ  ํ•œ๋‹ค.
  3. ์‹คํ–‰ ์ƒํƒœ(running)
    CPU ์†Œ์œ ๊ถŒ๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋กœ, ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Instruction์„ ์ˆ˜ํ–‰ ์ค‘์ธ ์ƒํƒœ(CPU burst)
    ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ์‹คํ–‰ ๋„์ค‘ ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•ด ์ž…์ถœ๋ ฅ์žฅ์น˜์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฉด ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
    Instruction: ์ปดํ“จํ„ฐ๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ๊ธฐ์ˆ ํ•œ ๋ช…๋ น๋“ค ํ˜น์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, CPU๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๊ฐ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ (fetch), ํ•ด์„(decode) ํ›„ ์‹คํ–‰(execute)ํ•˜๋Š” ์‚ฌ์ดํด ๋ฐ˜๋ณต(์ด๋•Œ, ๋ช…๋ น์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•จ)
    cpu brust: ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu๋ฅผ ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ์—ฐ์†์ ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ๊ฐ„์œผ๋กœ, I/O ์ž‘์—… ์—†์ด ์˜ค์ง CPU์—์„œ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰
  4. ๋Œ€๊ธฐ ์ƒํƒœ(blocked)
    ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๋ฐ”๋กœ ํ™•๋ณดํ•  ์ˆ˜ ์—†๋Š” ์ž์›์„ ์š”์ฒญํ•˜๋Š” ๋“ฑ ๊ณง์žฅ ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด์— ๋†“์ด๋Š” ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.(I/O ์ธํ„ฐ๋ŸฝํŠธ)
    ๋Œ€๊ธฐ ์ƒํƒœ์˜€๋˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๋“ฑ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜์–ด CPU ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  5. ์ข…๋ฃŒ ์ƒํƒœ(terminated)
    ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ์ƒํƒœ๋กœ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์šด์˜์ฒด์ œ๋Š” PCB์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.
    ๋น„์ž๋ฐœ์  ์ข…๋ฃŒ: ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๋น„์ž๋ฐœ์  ์ข…๋ฃŒ(abort)
    โ‘  ์ž์‹ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์ด ํ•œ๊ณ„์น˜๋ฅผ ๋„˜๊ฒผ์„ ๋•Œ
    โ‘ก ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋์„ ๋•Œ
    โ‘ข ์‚ฌ์šฉ์ž๊ฐ€ process.kill ๋“ฑ ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒํ•  ๋•Œ
๋ธ”๋กœํ‚น ์ž…์ถœ๋ ฅ(blocking I/O): ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ๋„์ค‘ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ ‘์–ด๋“ค๊ณ , ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜์–ด ์‹คํ–‰์„ ์žฌ๊ฐœํ•˜๋Š” ์ž…์ถœ๋ ฅ ์œ ํ˜•
๋…ผ๋ธ”๋กœํ‚น ์ž…์ถœ๋ ฅ(non-blocking I/O): ์ž…์ถœ๋ ฅ์žฅ์น˜์—๊ฒŒ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ๋งก๊ธด ๋’ค, ๊ณง๋ฐ”๋กœ ์ด์–ด์งˆ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž…์ถœ๋ ฅ ์œ ํ˜•

 


๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค(multi-process)

๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋กœ ์ƒ์„ฑํ•ด ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

ex) ์›น ๋ธŒ๋ผ์šฐ์ € ํƒญ - ํ•˜๋‚˜์˜ ํƒญ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌ

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

[์žฅ์ ]

  • ์•ˆ์ •์„ฑ: ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ์–ด๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ
  • ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ํ™œ์šฉ: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ์šด์˜์ฒด์ œ์—์„œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›: ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„์˜ ์ž์› ๊ด€๋ฆฌ๊ฐ€ ์ฒด๊ณ„์ ์ž„

[๋‹จ์ ]

  • IPC๊ฐ€ ๋†’์Œ: ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ ค๋ฉด ๋ณ„๋„ ํ†ต์‹  ๋ฐฉ์‹์ด ํ•„์š”ํ•จ
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ๋†’์Œ: ํ”„๋กœ์„ธ์Šค ์ „ํ™˜ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋…๋ฆฝ์„ฑ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜(ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฌธ๋งฅ ์ „ํ™˜ ์‹œ ์บ์‹œ ๋ฏธ์Šค ๋ฐœ์ƒ)
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋งŽ์Œ: ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ฐจ์ง€

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(multi-thread)

์Šค๋ ˆ๋“œ(thread): ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์‹คํ–‰ ๋‹จ์œ„๋กœ, ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
- ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ๋Š” Stack์„ ์ œ์™ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๊ณต์œ 

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
ex) ์›น ์„œ๋ฒ„ - ๋™์‹œ์— ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ฒ˜๋ฆฌ, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - ์˜์ƒ/์Œํ–ฅ ์žฌ์ƒ๊ณผ ๊ธฐํƒ€ ์ž‘์—… ๋™์‹œ ์ˆ˜ํ–‰

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

[์žฅ์ ]

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

[๋‹จ์ ]

  • ๋™๊ธฐํ™” ๋ฌธ์ œ: ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•ด์•ผ ํ•จ
  • ๋””๋ฒ„๊น… ์–ด๋ ค์›€: ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜์–ด ๋ฒ„๊ทธ ์ถ”์  ๋ณต์žก
  • ๋ฐ๋“œ๋ฝ ๊ฐ€๋Šฅ์„ฑ: ์Šค๋ ˆ๋“œ ๊ฐ„ ์ž์› ๊ฒฝ์Ÿ์œผ๋กœ ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ vs ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •์—์„œ PCB ๋˜๋Š” TCB๋ฅผ ์‚ฌ์šฉํ•ด ๋ ˆ์ง€์Šคํ„ฐ, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ์Šคํƒ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ๋ณต์›ํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ํ˜น์€ I/O ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ PCB๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ์ปดํ“จํ„ฐ๋Š” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์–ด๋–ค ์‹œ์ ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋‹จ ํ•œ ๊ฐœ์ด๋‹ค.

  1. ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ €์žฅ: ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, PC, ์Šคํƒ ํฌ์ธํ„ฐ ๋“ฑ์„ PCB์— ์ €์žฅ
  2. ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค PCB ๋กœ๋“œ: PCB ์ •๋ณด ๊ฐ€์ ธ์™€ CPU์— ๋ณต์›
  3. ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ๋ณ€๊ฒฝ: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฃผ์†Œ ๊ณต๊ฐ„์ด ๋‹ค๋ฅด๋ฏ€๋กœ MMU ์„ค์ • ๋ณ€๊ฒฝ, TLB FLUSH ๋ฐœ์ƒ
  4. CPU๊ฐ€ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
TLB Flush
CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ TLB์— ์ €์žฅํ•œ (page, frame) ๋งคํ•‘ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ง€์šฐ๋Š” ๊ณผ์ •์œผ๋กœ, ์ฃผ๋กœ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

 

์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ณผ์ •

  1. ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ ์ €์žฅ: ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, PC, ์Šคํƒ ํฌ์ธํ„ฐ ๋“ฑ TCB์— ์ €์žฅ
  2. ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ์˜ TCB ๋กœ๋“œ
  3. CPU๊ฐ€ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์‹คํ–‰

์ฆ‰, ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ๋” ๋‚ฎ๋‹ค.

 

TCB(Thread Control Block)

PCB๋ณด๋‹ค ์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ PCB๋Š” ์ปค๋„ ์˜์—ญ์— ์žˆ๊ณ  TCB๋Š” ์œ ์ € ์˜์—ญ๊ณผ ์ปค๋„ ์˜์—ญ ๋‘˜ ๋‹ค ์žˆ์„ ์ˆ˜ ์žˆ์Œ

  • Thread ID: ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์šด์˜์ฒด์ œ์—์„œ ์Šค๋ ˆ๋“œ์— ํ• ๋‹นํ•˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž
  • ์Šค๋ ˆ๋“œ ์ƒํƒœ: ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ง„ํ–‰๋œ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ์Šค๋ ˆ๋“œ ์ƒํƒœ
  • CPU ์ •๋ณด: ์Šค๋ ˆ๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€, ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ๋“ฑ OS๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ
  • ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„: ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ Ready ๋Œ€๊ธฐ์—ด์—์„œ ๋‹ค์Œ์— ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ์Šค๋ ˆ๋“œ์˜ ๊ฐ€์ค‘์น˜
  • PCB๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ: ์ด ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์„ ํŠธ๋ฆฌ๊ฑฐํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • stack ํฌ์ธํ„ฐ: ์Šค๋ ˆ๋“œ๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ์ €์žฅํ•˜๋Š” ๊ณณ

1) ์œ ์ € ์˜์—ญ(์š”์ฆ˜์€ ๊ฑฐ์˜ ์‚ฌ์šฉ ์•ˆํ•จ)

์œ ์ € ์˜์—ญ ๋‚ด TCB(https://velog.io/@sweet_sumin/PCBTCB)

- ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์ € ์˜์—ญ์˜ heap์—์„œ ํ•œ๋‹ค.

- ์Šค๋ ˆ๋“œ ๊ด€๋ จ ๋ชจ๋“  ๋™์ž‘์ด ์‚ฌ์šฉ์ž ์˜์—ญ

 

2) ์ปค๋„ ์˜์—ญ

 

์ปค๋„ ์˜์—ญ ๋‚ด TCB(https://velog.io/@sweet_sumin/PCBTCB)

- ์ปค๋„์—์„œ ์Šค๋ ˆ๋“œ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ž‘์—…(์Šค์ผ€์ค„๋ง, ์‹คํ–‰)์„ ๊ด€๋ฆฌํ•œ๋‹ค.

- ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ์Šค๋ ˆ๋“œ๊ฐ€ 1:1 ๋งคํ•‘๋˜์–ด ์žˆ๋‹ค.

- ์ปค๋„์ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ์ •๋ณด๊นŒ์ง€ ์œ ์ง€ํ•œ๋‹ค.

- ์Šค์ผ€์ค„๋ง๊ณผ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ๋” ๋งŽ์€ ์ž์›์ด ํ•„์š”ํ•˜๋‹ค.

- ์Šค๋ ˆ๋“œ ๊ตํ™˜์— ์ปค๋„ ๊ฐœ์ž…์œผ๋กœ ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ์ปค๋„ ์˜์—ญ์œผ๋กœ ์ „ํ™˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.


 ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC, Inter-Process Communication)

ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์›์„ ๊ณต์œ ํ•˜์ง€ ์•Š์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋„ ์ž์›์„ ๊ณต์œ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)๋ผ๊ณ  ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์ด ์žˆ๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ

๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋‘๋Š” ํ†ต์‹  ๋ฐฉ์‹์ด๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ด์„œ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹

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

๋ฉ”์‹œ์ง€ ์ „๋‹ฌ

ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์ฃผ๊ณ ๋ฐ›์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค๋„์„ ๊ฑฐ์ณ ์†ก์ˆ˜์‹  ๋˜๋Š” ํ†ต์‹  ๋ฐฉ์‹์ด๋‹ค.

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

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

ํŒŒ์ดํ”„(pipe)

๋‹จ๋ฐฉํ–ฅ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹  ๋„๊ตฌ๋กœ, ํŒŒ์ดํ”„์˜ ํ•œ ์ชฝ ๋ฐฉํ–ฅ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋ฉด ํŒŒ์ดํ”„ ๋ฐ˜๋Œ€์ชฝ์œผ๋กœ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ, ์ฝ๊ธฐ์šฉ ํŒŒ์ดํ”„์™€ ์“ฐ๊ธฐ์šฉ ํŒŒ์ดํ”„ 2๊ฐœ๋ฅผ ์ด์šฉํ•ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ

  • ๋ณด๋‚ด์ง„ ์ˆœ์„œ๋Œ€๋กœ๋งŒ ๋ฐ›๋Š”๋‹ค.(ordering)
  • Pipe์— ์“ฐ์—ฌ์ง€๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ปค๋„(buffer)์— ์ €์žฅ๋˜๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค.(๋™๊ธฐํ™” ๋ณด์žฅ, ํ•œ ์‹œ์ ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

https://velog.io/@jh9485/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-12-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%B5%EC%9C%A0-IPC-Signal-Pipe

- ์ต๋ช… ํŒŒ์ดํ”„: ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ , ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์ง€๋ช… ํŒŒ์ดํ”„(=๋„ค์ž„๋“œ ํŒŒ์ดํ”„): ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋ฉฐ, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋ผ ์•„๋‹ˆ๋ผ, ์ž„์˜์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์‹œ๊ทธ๋„(signal)

ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋น„๋™๊ธฐ์ ์ธ ์‹ ํ˜ธ๋กœ, ์‹œ๊ทธ๋„์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•ด IPC๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ๊ทธ๋„์ด ๋ฐœ์ƒํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๊ณผ์ •๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํ•˜๋˜ ์ผ์„ ์ž ์‹œ ์ค‘๋‹จํ•˜๊ณ , ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰ํ•œ ๋’ค ์‹คํ–‰ ์žฌ๊ฐœํ•œ๋‹ค.
  • ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ์ง์ ‘ ํŠน์ • ์‹œ๊ทธ๋„์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , ์ง์ ‘ ์ผ๋ถ€ ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋Ÿฌ๋ฅผ (์žฌ)์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์†ก์‹  ํ”„๋กœ์„ธ์Šค: ์—ฌ๋Ÿฌ ์‹ ํ˜ธ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋ณด๋ƒ„
    - ์ด ๋™์ž‘์€ ์ˆ˜์‹ ํ•  ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ฌด๊ด€, ๋น„๋™๊ธฐ์ 
  • ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค: ์‹œ๊ทธ๋„ ์ˆ˜์‹  ์‹œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
    - Ignore: ๋ฌด์‹œ(์ด ๊ฒฝ์šฐ์—๋„ SIGSTOP, SIGKILL ๋“ฑ์€ ๋ฌด์‹œ๋˜์ง€ ์•Š์Œ)
    - Block: ์‹ ํ˜ธ๋ฅผ ๋ถ™์žก์•„ ๋‘ (๋‚˜์ค‘์— ์ฒ˜๋ฆฌ)
    - Handle: ์‹œ๊ทธ๋„์„ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ”๋กœ ์ฒ˜๋ฆฌ(signal handler ๊ตฌํ˜„)
    - ์ปค๋„์ด ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ๊ทธ๋„์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•จ(๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ default ์ฝ”๋“œ๋ฅผ ๊ฐ–๊ฒŒ ๋จ)
  • ์‹œ๊ทธ๋„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ง์ ‘์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์ง€๋Š” ์•Š์ง€๋งŒ, ๋น„๋™๊ธฐ์ ์œผ๋กœ ์›ํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    - ํ”„๋กœ์„ธ์Šค A๊ฐ€ ํ”„๋กœ์„ธ์Šค B์—๊ฒŒ ์‹œ๊ทธ๋„์„ ๋ณด๋ƒ„
    - ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค B๊ฐ€ ์Šค์ผ€์ค„๋ง ๋˜์–ด์•ผ ๊ฐ€๋Šฅํ•จ

์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(RPC, Remote Procedure Call)

์›๊ฒฉ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” IPC ๊ธฐ์ˆ ๋กœ, ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ํŠน์ • ์ฝ”๋“œ ์‹คํ–‰์ด ๋กœ์ปฌ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์ด๋ผ๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰์ด ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์ธ ์…ˆ์ด๋‹ค.

  • RPC๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ํ”Œ๋žซํผ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹ ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ(์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ํ™˜๊ฒฝ)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
  • RPC ๊ด€๋ จ ๊ธฐ๋Šฅ์€ RPC ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ(ex: gRPC)

์†Œ์ผ“

๋™์ผํ•œ ์ปดํ“จํ„ฐ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ TCP์™€ UDP๊ฐ€ ์žˆ๋‹ค.


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™์ด๋‹ค

 

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™์ด๋‹ค with CS ๊ธฐ์ˆ  ๋ฉด์ ‘ | ๊ฐ•๋ฏผ์ฒ  - ๊ต๋ณด๋ฌธ๊ณ 

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

product.kyobobook.co.kr

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

 

์šด์˜์ฒด์ œ ๊ฐœ์š”, ํ”„๋กœ์„ธ์Šค & ์Šค๋ ˆ๋“œ

์šด์˜์ฒด์ œ์˜ ์—ญํ• ๊ณผ ๊ตฌ์กฐ์šด์˜์ฒด์ œ ์—ญํ• CPU ์Šค์ผ€์ค„๋ง๊ณผ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌCPU ์†Œ์œ ๊ถŒ์„ ์–ด๋–คํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ• ์ง€, ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ๊ณผ ์‚ญ์ œ, ์ž์› ํ• ๋‹น ๋ฐ ๋ฐ˜ํ™˜ ๊ด€๋ฆฌ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ค

0woy.tistory.com

 

์‚ฌ์šฉ์ž ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

 

[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (Heap vs Stack)

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

codingwell.tistory.com

TLB

 

[์šด์˜์ฒด์ œ] TLB(Translation Lookaside Buffer)

page table์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š”๋ฐ, CPU๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋‘ ๋ฒˆ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ page table์— ์ ‘๊ทผ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด page table์— ์ ‘๊ทผํ•œ๋‹ค.page

server-technology.tistory.com

PCB์™€ TCB

 

PCB(Process Control Block) & TCB(Thread Control Block)

๊ธฐ์ดˆ๋ฅผ ๋ณด์™„ํ•˜์ž

velog.io

IPC: ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ

 

์šด์˜์ฒด์ œ (12) - ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ , IPC, Signal, Pipe

์šด์˜์ฒด์ œ ์ˆ˜์—…์„ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.ํ”„๋กœ์„ธ์Šค์˜ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ๊ณต์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์€ ์œ ์ €

velog.io