Computer Science ๐Ÿ“š/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •์ฒ˜๊ธฐ] ์šด์˜์ฒด์ œ

leejaejae 2024. 7. 16. 18:43

โ–  ์šด์˜์ฒด์ œ ์ข…๋ฅ˜

- ์œˆ๋„์šฐ (Window): ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•œ ์šด์˜์ฒด์ œ
- ์œ ๋‹‰์Šค (Unix): ๋ฏธ๊ตญ AT&T ๋ฒจ ์—ฐ๊ตฌ์†Œ์—์„œ ๊ฐœ๋ฐœํ•œ ์šด์˜์ฒด์ œ โ†’ ์ปค๋„(Kernel) / ์‰˜(Shell)๋กœ ๊ตฌ์„ฑ
- ๋ฆฌ๋ˆ…์Šค (Linux): ๋ฆฌ๋ˆ…์Šค ํ† ๋ฐœ์ฆˆ๊ฐ€ ์œ ๋‹‰์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์šด์˜์ฒด์ œ
- MacOS / iOS: ์• ํ”Œ์ด ์œ ๋‹‰์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์šด์˜์ฒด์ œ
- Android: ๊ตฌ๊ธ€์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๊ฐœ๋ฐฉํ˜• ๋ชจ๋ฐ”์ผ ์šด์˜์ฒด์ œ

โ€ป UNIX ๊ตฌ์„ฑ์š”์†Œ

์ปค๋„
(Kernel)
- ํ•˜๋“œ์›จ์–ด ๋ณดํ˜ธ / ํ”„๋กœ๊ทธ๋žจ ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 
- ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๊ธฐ์–ต ์žฅ์น˜ ๊ด€๋ฆฌ, ํŒŒ์ผ ๊ด€๋ฆฌ, ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ๋ณ€ํ™˜, ์‰˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
์‰˜
(Shell)
- ์‚ฌ์šฉ์ž์˜ ๋ช…๋ น ์ธ์‹/ํ•ด์„ ํ›„ ์ปค๋„๋กœ ์ „๋‹ฌ, ๋ช…๋ น์„ ์ˆ˜ํ–‰ (๋ฐ˜๋ณต์ ์ธ ๋ช…๋ น ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ ์ œ๊ณต)
- ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 
- ์ดˆ๊ธฐํ™” ํŒŒ์ผ์„ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ์„ค์ •
- UNIX Shell ํ™˜๊ฒฝ ๋ณ€์ˆ˜: set, env, printenv, setenv


โ–  ์ฃผ๊ธฐ์–ต์žฅ์น˜

  • RAM(Random Access Memory)
    • ํœ˜๋ฐœ์„ฑ (์ „์› off ์‹œ data ์—†์–ด์ง) / ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ์ €์žฅ
 ์†๋„์ง‘์ ๋„์ „๋ ฅ์†Œ๋ชจ์žฌ์ถฉ์ „์šฉ๋„
SRAM (์ •์ )๋น ๋ฆ„๋‚ฎ์Œ๋งŽ์Œ๋ถˆํ•„์š”์บ์‹œ
DRAM (๋™์ )๋Š๋ฆผ๋†’์Œ์ ์Œํ•„์š”์ฃผ๊ธฐ์–ต
  • ROM(Read Only Memory)
    • ์ „๋ ฅ๊ณต๊ธ‰ ์—†์–ด๋„ ๋‚ด์šฉ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ (๋น„ํœ˜๋ฐœ์„ฑ)
    • CMOS SETUP์œผ๋กœ ๊ฐ’ ์ˆ˜์ • ๊ฐ€๋Šฅ
    • H/W์™€ S/W์˜ ์ค‘๊ฐ„์ธ ์ผ์ข…์˜ ํŽŒ์›จ์–ด (firmware)
    • ์—…๋ฐ์ดํŠธ๋งŒ์œผ๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • ๋ถ€ํŒ… ์‹œ ๊ฐ€์žฅ ๋จผ์ € ๋™์ž‘ํ•˜์—ฌ ์ž์ฒด ์ง„๋‹จ (POST) ์‹คํ–‰
    • BIOS์—๋Š” ๋‚ ์งœ, ์ „์›๊ด€๋ฆฌ, ๋ถ€ํŒ…์ˆœ์„œ, ๊ธฐ๋ณธ๊ธ€๊ผด, ์นฉ์…‹, ์‹œ์Šคํ…œ ์•”ํ˜ธ (Windows ์•”ํ˜ธ X), PnP (Plug and Play), ํ•˜๋“œ๋””์Šคํฌ ํƒ€์ž…, ์•ˆํ‹ฐ๋ฐ”์ด๋Ÿฌ์Šค ๋“ฑ์˜ ์ •๋ณด ํฌํ•จ
Mask ROM์ œ์กฐ ๊ณผ์ •์—์„œ ์ €์žฅ๋œ ROM, ์ž„์˜ ์ˆ˜์ • ๋ถˆ๊ฐ€
PROMํ•œ๋ฒˆ๋งŒ ๊ธฐ๋ก ๊ฐ€๋Šฅ, ์ดํ›„๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ
EPROM์ž์™ธ์„  ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•œ ROM
EEPROM์ „๊ธฐ ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•œ ROM (ํ”Œ๋ž˜์‰ฌ ๋ฉ”๋ชจ๋ฆฌ)
- BIOS ROM์œผ๋กœ ํ™œ์šฉ ๋ฐ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ

 

โ–  ๊ธฐํƒ€ ๋ฉ”๋ชจ๋ฆฌ

  • ๋ ˆ์ง€์Šคํ„ฐ(Register)
    - CPU(์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜) ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•  ๋ช…๋ น์–ด๋‚˜ ์—ฐ์‚ฐ์˜ ์ค‘๊ฐ„ ๊ฐ’ ๋“ฑ์„ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ (๋ฉ”๋ชจ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„)

  • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ
    - SRAM์„ ์ด์šฉํ•˜์—ฌ CPU(๋น ๋ฆ„)๊ณผ ์ฃผ๊ธฐ์–ต์žฅ์น˜(๋Š๋ฆผ) ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด ํ•ด๊ฒฐ (๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ ์ผ์ข…)
    โ†’ ์บ์‹œ ์ ์ค‘๋ฅ ์ด ๋†’์„์ˆ˜๋ก ์‹œ์Šคํ…œ ์ฒ˜๋ฆฌ ์†๋„ ์ฆ๊ฐ€

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ
    - ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๋ฅผ ์ฃผ๊ธฐ์–ต์žฅ์น˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ (๊ธฐ์–ต์šฉ๋Ÿ‰ ํ™•๋Œ€)
    - ํฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ฐ€๋Šฅ / ๋งคํ•‘-mapping ๋ฐฉ์‹ ํ•„์š”

  • ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ
    - MP3๋‚˜ ๋””์ง€ํ„ธ์นด๋ฉ”๋ผ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ผ์ข…์˜ EEPROM(๋น„ํœ˜๋ฐœ์„ฑ)
    - ex. USB / SD Card / NAND Flash / SATA Memory

  • ๋ฒ„ํผ ๋ฉ”๋ชจ๋ฆฌ
    - ๋ฐ์ดํ„ฐ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•ด ๋‘ ์žฅ์น˜ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„ ์ฐจ์ด ํ•ด๊ฒฐ

  • ์—ฐ์ƒ(์—ฐ๊ด€) ๋ฉ”๋ชจ๋ฆฌ
    - ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์–ต์žฅ์น˜์— ์ ‘๊ทผ ํ›„ ๋ฐ์ดํ„ฐ ํ™•์ธ ๋‚ด์šฉ ์ฐธ์กฐ(๋งคํ•‘-mapping ๋ฐฉ์‹)
    - ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๋‚ด์šฉ์„ ์ฐธ์กฐ

โ˜… H/W ์ฒ˜๋ฆฌ ์†๋„: ๋ ˆ์ง€์Šคํ„ฐ > ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ > ์ฃผ๊ธฐ์–ต ์žฅ์น˜ > ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜
 

โ–  ๊ธฐ์–ต์žฅ์น˜ ๊ด€๋ฆฌ ์ „๋žต

๋ฐ˜์ž… ์ „๋žต (Fetch)์š”๊ตฌ ๋ฐ˜์ž…ํŠน์ • ํ”„๋กœ๊ทธ๋žจ/๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋ฅผ '์š”๊ตฌ'ํ•  ๋•Œ ์ ์žฌ
์˜ˆ์ƒ ๋ฐ˜์ž…๋ฏธ๋ž˜์˜ ์ฐธ์กฐ๊ฐ€ '์˜ˆ์ƒ'๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์žฌ
๋ฐฐ์น˜ ์ „๋žต (Placement)์ตœ์ดˆ ์ ํ•ฉ (First Fit)์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ '์ฒซ ๋ฒˆ์งธ' ๋ถ„ํ•  ์˜์—ญ์— ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜
์ตœ์  ์ ‘ํ•ฉ (Best Fit)๋‹จํŽธํ™”๋ฅผ '์ตœ์†Œํ™”'ํ•˜๋Š” ๋ถ„ํ•  ์˜์—ญ์— ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜
์ตœ์•… ์ ํ•ฉ (Worst Fit)๋‹จํŽธํ™”๋ฅผ '์ตœ๋Œ€ํ™”'ํ•˜๋Š” ๋ถ„ํ•  ์˜์—ญ์— ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜
๊ต์ฒด ์ „๋žต(Replacement)์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ ์ž ํ•  ๋•Œ ๊ธฐ์กด ์‚ฌ์šฉ ์ค‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฒด
ex. FIFO, OPT, LRU, LFU, NUR ใƒปใƒปใƒป

 

โ–  ํŽ˜์ด์ง€ ๋ถ„ํ•  ๊ธฐ๋ฒ•

1) ํŽ˜์ด์ง• ๊ธฐ๋ฒ• (Paging)
- ๊ฐ€์ƒ๊ธฐ์–ต์žฅ์น˜์— ๋ณด๊ด€๋œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ฃผ๊ธฐ์–ต์žฅ์น˜์˜ ์˜์—ญ์„ ๋™์ผ(์ผ์ •) ํฌ๊ธฐ๋กœ ๋ถ„ํ•  ํ›„ ๋‚˜๋ˆ ์ง„ ํ”„๋กœ๊ทธ๋žจ(ํŽ˜์ด์ง€)์„ ๋™์ผํ•˜๊ฒŒ ๋‚˜๋ˆ ์ง„ ์ฃผ๊ธฐ์–ต์žฅ์น˜์ด ์˜์—ญ(ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„)์— ๋ฐฐ์น˜ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ• (๋‚ด๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ)

โ–ถ๏ธŽ ์ž‘์€ ํŽ˜์ด์ง€ ํฌ๊ธฐ: ํŽ˜์ด์ง€ ๋‹จํŽธํ™” ๊ฐ์†Œ / ํŽ˜์ด์ง€ ์ด๋™์‹œ๊ฐ„ ๊ฐ์†Œ / ์›Œํ‚น ์…‹ ์œ ์ง€ / ๋งต ํ…Œ์ด๋ธ” ํฌ๊ธฐ ์ปค์ง€๋ฉฐ ๋งคํ•‘ ์†๋„ ๊ฐ์†Œ / ์ž…์ถœ๋ ฅ ์‹œ๊ฐ„ ์ฆ๊ฐ€
โ–ถ๏ธŽ ํฐ ํŽ˜์ด์ง€ ํฌ๊ธฐ: ๋งต ํ…Œ์ด๋ธ” ํฌ๊ธฐ ์ž‘์•„์ง€๋ฉฐ ๋งคํ•‘ ์†๋„ ์ฆ๊ฐ€ / ์ž…์ถœ๋ ฅ ์‹œ๊ฐ„ ๊ฐ์†Œ / ํŽ˜์ด์ง€ ๋‹จํŽธํ™” ์ฆ๊ฐ€ / ํŽ˜์ด์ง€ ์ด๋™์‹œ๊ฐ„ ์ฆ๊ฐ€ / ๋ถˆํ•„์š” ๋ฐ์ดํ„ฐ ์ ์žฌ 


2) ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ๊ธฐ๋ฒ• (Segmentation)
- ๊ฐ€์ƒ๊ธฐ์–ต์žฅ์น˜์— ๋ณด๊ด€๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋ถ„ํ•  ํ›„ (Segment) ์ฃผ๊ธฐ์–ต ์žฅ์น˜์— ๋ฐฐ์น˜ ๋ฐ ์‹คํ–‰ (์™ธ๋ถ€ ๋‹จํŽธํ™” ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ)
 

โ–  ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • OPT
    • ์•ž์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํŽ˜์ด์ง€ ๊ต์ฒด
    • ํŽ˜์ด์ง€ ๋ถ€์žฌ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ๊ฒŒ ๋ฐœ์ƒ / ํšจ์œจ์  ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • FIFO(First-in First-out)
    • ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์™€ ๊ฐ€์žฅ ์˜ค๋ž˜ ์žˆ์—ˆ๋˜ ํŽ˜์ด์ง€ ๊ต์ฒด
  • LRU(Least Recently Used)
    • ์ตœ๊ทผ์— ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€(์˜ค๋ž˜ ์ „์— ์‚ฌ์šฉ๋œ)ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด
  • LFU(Least Frequently Used)
    • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด / ํ™œ๋ฐœํ•œ ํŽ˜์ด์ง€๋Š” ๊ต์ฒด X

 

โ–  ํ”„๋กœ์„ธ์Šค(Process)

- ํ”„๋กœ์„ธ์„œ(CPU)์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” ์‚ฌ์šฉ์ž/์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ
- ํ”„๋กœ์„ธํŠธ ์ œ์–ด ๋ธ”๋ก (PCB, Process Control Block)์— ์‹๋ณ„์ž, ์ƒํƒœ ๋“ฑ์˜ ์ค‘์š” ์ •๋ณด๋ฅผ ์ €์žฅ
- ๊ฐ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์‹œ ๊ณต์œ  PCB ์ƒ์„ฑ, ์ž‘์—… ์™„๋ฃŒ ํ›„ PCB ์ œ๊ฑฐ

โ€ป Dispatch: ์ค€๋น„ ์ƒํƒœ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „์ด๋˜๋Š” ๊ณผ์ •
โ€ป Wake up: ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „์ด
โ€ป Contect Switching(๋ฌธ๋งฅ ๊ตํ™˜): ์ด์ „ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ ๋‚ด์šฉ ๋ณด๊ด€ํ•˜๊ณ  ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ ์žฌํ•˜๋Š” ๊ณผ์ •
 

โ–  ์Šค๋ ˆ๋“œ(Thread): ํ”„๋กœ์„ธ์Šค ๋‚ด ์ž‘์—… ๋‹จ์œ„ / ํ”„๋กœ๊ทธ๋žจ ๋‹จ์œ„

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

โ–  ์Šค์ผ€์ฅด๋ง: ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ๋ฒ•

1) ์„ ์ ํ˜•: ์šด์˜์ฒด์ œ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ๊ฐ•์ œ ๋นผ์•—์Œ
โ†’ ํ”„๋กœ์„ธ์„œ ๋ณ„ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์— ์ˆœ์„œ ์กฐ์ •์œผ๋กœ ํšจ์œจ์  ์šด์˜ ๊ฐ€๋Šฅ / ๋†’์€ ์˜ค๋ฒ„ํ—ค๋“œ

  • RR(Round Robin):
    • ์šฐ์„  ์ˆœ์œ„ ์—†์ด ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ CPU ํ• ๋‹น (๊ณต์ •ํ•œ ์ž์› ๋ถ„๋ฐฐ), ๋„์ฐฉํ•œ ์ˆœ์„œ์— ๋”ฐ๋ผ
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ• ๋‹น๋œ ์‹œ๊ฐ„ ๋งŒํผ๋งŒ ์‹คํ–‰ ํ›„ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ๋„˜๊ฒจ์ฃผ๊ณ  ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ํ์˜ ๊ฐ€์žฅ ๋’ท์ž๋ฆฌ์— ๋ฐฐ์น˜๋จ
  • SRT(Shortest Remaining Time)
    • ๋น„์„ ์ ํ˜• SJF ๊ธฐ๋ฒ•์„ ์„ ์  ์Šค์ผ€์ฅด๋ง ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ
    • ์ž”์—ฌ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์— CPU ์šฐ์„  ํ• ๋‹น
  • ๋‹ค๋‹จ๊ณ„ ํ
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃนํ™” ํ›„ ๊ฐ ๊ทธ๋ฃน๋งˆ๋‹ค ๋‹ค๋ฅธ ์ค€๋น„ ์ƒํƒœ ํ๋ฅผ ์‚ฌ์šฉ
    • ํ•˜์œ„ ์ค€๋น„ ์ƒํƒœ์˜ ํ ์‹คํ–‰ ๊ฐ„ ์ƒ์œ„ ์ค€๋น„ ์ƒํƒœ ํ ์œ ์ž… ์‹œ ์ƒ์œ„ ํ”„๋กœ์„ธ์„œ์— CPU ์šฐ์„  ํ• ๋‹น
  • ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ
    • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„  ์ˆœ์œ„ ์ค€๋น„ ํ์— ๋“ฑ๋ก๋˜๋ฉฐ ๋“ฑ๋ก๋œ ํ”„๋กœ์„ธ์Šค๋Š” FCFS ์ˆœ์„œ๋กœ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰
    • ๋‹จ๊ณ„๊ฐ€ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก ์‹œ๊ฐ„ ํ• ๋‹นํ–ฅ(Time Quantum)์ด ์ฆ๊ฐ€


2) ๋น„์„ ์ ํ˜•: ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” CPU๋ฅผ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ
โ†’ ๋‚ฎ์€ ์ฒ˜๋ฆฌ์œจ / ์ ์€ ์˜ค๋ฒ„ํ—ค๋“œ

  • FCFS(First Come First Serve): ํ”„๋กœ์„ธ์„œ ๋„์ฐฉ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์ˆœ์„œ ๊ฒฐ์ •(=FIFO)
  • SJF(Shortest Job First): ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์„œ ์ค‘ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ
  • HRN(Hightest Response ratio Next)
    • ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•ด ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ ๊ฒฐ์ •
      โ†’ ์šฐ์„  ์ˆœ์œ„ = (๋Œ€๊ธฐ์‹œ๊ฐ„ + ์„œ๋น„์Šค ์‹œ๊ฐ„) / ์„œ๋น„์Šค ์‹œ๊ฐ„
    • ์‹คํ•ผ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋ถˆ๋ฆฌํ•œ SJF๊ธฐ๋ฒ• ๋ณด์•ˆ

 

โ–  ๊ต์ฐฉ ์ƒํƒœ (Dead Lock): ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์š”๊ตฌํ•˜๋ฉฐ ๋ฌดํ™˜์ • ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

[ ๊ต์ฐฉ ์ƒํƒœ ํ•„์š” ์ถฉ๋ถ„ ์กฐ๊ฑด ]

์ƒํ˜ธ ๋ฐฐ์ œ (Mutual Exclustion)ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉ
์ ์œ  ๋ฐ ๋Œ€๊ธฐ (Hold and Wait)์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์„ ์ถ”๊ฐ€๋กœ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์กด์žฌ
๋น„์„ ์  (Non-preemption)๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ์„ ์  ๋ถˆ๊ฐ€
ํ™˜ํ˜• ๋Œ€๊ธฐ (Circular Wait)ํ”„๋กœ์„ธ์Šค๋“ค์ด ์›ํ˜•์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ์•ž/๋’ค ํ”„๋กœ์„ธ์Šค ์ž์›์„ ์š”๊ตฌ


[ ๊ต์ฐฉ ์ƒํƒœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ]

์˜ˆ๋ฐฉ (Prevention)- ๊ต์ฐฉ๋ฐœ์ƒ 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์‚ฌ์ „์— ์ œ๊ฑฐํ•˜์—ฌ ์˜ˆ๋ฐฉ
ํšŒํ”ผ (Avoidance)- ๋ฐœ์ƒ๋œ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ์ ์ ˆํžˆ ํ”ผํ•ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•
โ€ป ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์€ํ–‰์—์„œ ๋ชจ๋“  ๊ณ ๊ฐ์˜ ์š”๊ตฌ๊ฐ€ ์ถฉ์กฑ๋˜๋„๋ก ํ˜„๊ธˆ์„ ํ• ๋‹นํ•˜๋Š” ๋ฐ์„œ ์œ ๋ž˜
๋ฐœ๊ฒฌ (Detection)- ๊ต์ฐฉ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๋ฐ ์ž์›์„ ๋ฐœ๊ฒฌ / ์ ๊ฒ€
ํšŒ๋ณต (Recovery)- ๊ต์ฐฉ์ƒํƒœ ์œ ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ / ํ”„๋กœ์„ธ์Šค ๋‚ด ํ• ๋‹น๋œ ์ž์› ์„ ์ 


โ€ป ๊ธฐ์–ต์žฅ์น˜ ๊ด€๋ จ ์šฉ์–ด

์Šค๋ž˜์‹ฑ (Thrashing)- ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๋ณด๋‹ค ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ๊ฐ„์ด ๋” ๋งŽ์•„์ง€๋Š” ์ƒํƒœ
- ์ „์ฒด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ €ํ•˜ / ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‹ค๋ฐœ ์‹œ ์Šค๋ž˜์‹ฑ ๋ฐœ์ƒ

[ ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•]
๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ ์ • ์ˆ˜์ค€ ์œ ์ง€ / ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค ์ค‘๋‹จ / ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋นˆ๋„ ์กฐ์ ˆ / ์›Œํ‚น ์…‹ ์œ ์ง€

์ง€์—ญ์„ฑ (Locality)- ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๊ฐ„ ์ฃผ๊ธฐ์–ต์žฅ์น˜ ์ฐธ์กฐ ์‹œ ์ผ๋ถ€ ํŽ˜์ด์ง€๋งŒ ์ง‘์ค‘ ์ฐธ์กฐ

- ์‹œ๊ฐ„ ๊ตฌ์—ญ์„ฑ: ํ•œ ํŽ˜์ด์ง€๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ง‘์ค‘์ ์œผ๋กœ ์•ก์„ธ์Šค โ†’ ๋ฐ˜๋ณต/์ˆœํ™˜(Loop), ์Šคํƒ(Stack), ๋ถ€ ํ”„๋กœ๊ทธ๋žจ(Sub Routine)
- ๊ณต๊ฐ„ ๊ตฌ์—ญ์„ฑ: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ธ์ ‘ํ•œ ํŽ˜์ด์ง€๋“ค๋„ ์ง‘์ค‘ ์ฐธ์กฐ โ†’ ๋ฐฐ์—ด์ˆœํšŒ(Array Traversal), ์ˆœ์ฐจ์  ์ฝ”๋“œ ์‹คํ–‰
์›Œํ‚น ์…‹ (Working Set)- ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ž์ฃผ ์ฐธ์กฐํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์„ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ƒ์ฃผ์‹œ์ผœ ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐ ๊ต์ฒด ํ˜„์ƒ์„ ์ตœ์†Œํ™” โ†’ ๊ธฐ์–ต์žฅ์น˜ ์‚ฌ์šฉ ์•ˆ์ •ํ™”
ํŽ˜์ด์ง€ ๋ถ€์žฌ - ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ค‘ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ๋ˆ„๋ฝ(๋ถ€์žฌ)