๐Ÿ“Œ[OS] Process

๋ชจ๊น…ยท2023๋…„ 4์›” 1์ผ
0

๐Ÿ“– 01. ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…

  • 3๊ฐ€์ง€๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์ด ํƒœ์–ด๋‚˜์„œ ์ญ‰ ์‹คํ–‰์ด ๋˜๋‹ค๊ฐ€ ์–ธ์  ๊ฐ€ ์ข…๋ฃŒ๊ฐ€ ๋ ํ…๋ฐ ๋ฌธ๋งฅ์ด๋ผ๋Š” ๊ฒƒ์€ ์ค‘๊ฐ„์„ ๋”ฑ ์งค๋ผ๋†“๊ณ  ๋ดค์„ ๋•Œ ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์‹œ์ ์ด ์–ด๋– ํ•œ ์ƒํƒœ์— ์žˆ๋Š”์ง€๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด ๋ฌธ๋งฅ์ด๋‹ค

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

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

  • ์ด์ฒ˜๋Ÿผ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“ ๊ฒƒ์„ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์šด์˜์ฒด์ œ์˜ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ง€๊ธˆ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์šด์˜์ฒด์ œ๋Š” ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์— PCB๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋†“๋Š”๋‹ค. -> CPU๋ฅผ ์–ผ๋งˆ๋‚˜ ์ค˜์•ผํ• ์ง€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ค˜์•ผํ• ์ง€, ๋‚˜์œ์ง“์„ ํ•˜๊ณ  ์žˆ์ง€๋Š” ์•Š๋Š”์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค.

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๊ธฐ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์ค‘์ผ๋•Œ๋Š” ๋งŒ์•ฝ ํ•จ์ˆ˜ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ๋ณธ์ธ์˜ ์Šคํƒ์—๋‹ค๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœํ•œ๋‹ค์Œ ๋ฆฌํ„ดํ•˜๊ณ  ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์Œ“์•„๋†“๊ฒŒ ๋œ๋‹ค. ๊ทผ๋ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ด ๋˜๋‹ค๊ฐ€ ๋ณธ์ธ์ด ํ•  ์ˆ˜ ์—†๋Š” ์ผ์„ ์šด์˜์ฒด์ œ์— ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค(system call)
    -> system call์„ ํ•˜๊ฒŒ ๋˜๋ฉด program counter๊ฐ€ ์ปค๋„ ์ฃผ์†Œ๊ณต๊ฐ„์˜ code๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.
    -> ์ปค๋„์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ปค๋„๋„ ํ•จ์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ํ•จ์ˆ˜ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ง€๋ฉด ์Šคํƒ์—๋‹ค๊ฐ€ ๊ด€๋ จ๋œ ์ •๋ณด๋“ค์„ ์Œ“์•„๋†“๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ปค๋„์ด๋ผ๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณต์œ ํ•˜๋Š” ์ฝ”๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋“  ๊ฐ„์— ์šด์˜์ฒด์ œํ•œํ…Œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์š”์ฒญํ•  ๋•Œ ์ปค๋„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๊ณ  ์ปค๋„์ด ๋ˆ„๊ตฌํ•œํ…Œ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‹คํ–‰์„ ํ•˜๋Š”์ง€ ๋งค๋ฒˆ ๋‹ค๋ฅด๋‹ค. ์ปค๋„์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ ธ์„œ ์Šคํƒ์—๋‹ค๊ฐ€ ์ •๋ณด๋ฅผ ์Œ“์„ ๋•Œ๋Š” ํ”„๋กœ์„ธ์Šค ๋ณ„๋กœ ์ปค๋„์„ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜ธ์ถœํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ์„œ ์Šคํƒ์„ ๋ณ„๋„๋กœ ๋‘๊ณ  ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ๋งŒ ์ •๋ณด๊ฐ€ ๊ผฌ์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ปค๋„ ์Šคํƒ์„ ๋ณ„๋„๋กœ ๋‘๊ณ  ์žˆ๋‹ค.

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

๐Ÿ“– 02. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ (Process State)

  • ํ”„๋กœ์„ธ์Šค๋Š” ์ƒํƒœ(state)๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์ˆ˜ํ–‰๋œ๋‹ค.
    • Running
      -> CPU๋ฅผ ์žก๊ณ  instruction์„ ์ˆ˜ํ–‰์ค‘์ธ ์ƒํƒœ
    • Ready
      -> CPU๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ(๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๊ณ )
    • Blocked (wait, sleep)
      -> CPU๋ฅผ ์ฃผ์–ด๋„ ๋‹น์žฅ instruction์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ
      -> Process ์ž์‹ ์ด ์š”์ฒญํ•œ event(์˜ˆ:I/O)๊ฐ€ ์ฆ‰์‹œ ๋งŒ์กฑ๋˜์ง€ ์•Š์•„ ์ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ
      -> (์˜ˆ) ๋””์Šคํฌ์—์„œ file์„ ์ฝ์–ด์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • New: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ์ค‘์ธ ์ƒํƒœ
    • Terminated: ์ˆ˜ํ–‰(execution)์ด ๋๋‚œ ์ƒํƒœ
  • ์ปดํ“จํ„ฐ ์•ˆ์— CPUํ•˜๋‚˜ ๋ฐ–์— ์—†๋‹ค.
    -> CPU๋ฅผ ์žก๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜๋ฐ–์— ์—†๋‹ค.
    -> CPU๋ฅผ ์žก๊ณ  instruction์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ Running์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • CPU๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค.
    -> ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ƒํƒœ๋ฅผ Ready์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.
    -> ๋ชจ๋“  ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๊ณ  CPU์ œ์–ด๊ถŒ๋งŒ ๋ฐ›์œผ๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • CPU๋ฅผ ์ค˜๋„ instruction์„ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค. ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” I/O์ž‘์—…์„ ํ•œ๋‹ค๋˜์ง€, ๋””์Šคํฌ์—์„œ ๋ฌด์—‡์„ ์ฝ์–ด์™€์•ผ ํ•˜๋Š”๋ฐ ๊ทธ ์ฝ์–ด์˜จ ๋‚ด์šฉ์„ ๋ณด๊ณ  ๋‚˜์„œ์•ผ ๋‹ค์Œ instruction์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋Ÿฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ์ฆ‰ CPU๋ฅผ ์–ป์–ด๋ด์•ผ ๋‹น์žฅ instruction์ˆ˜ํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ทธ๋Ÿฐ ํ”„๋กœ์„ธ์Šค์ธ ์ƒํƒœ๋ฅผ Blocked (wait, sleep)์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ์— ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ code๋ถ€๋ถ„์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š๊ณ  ๋””์Šคํฌ์— ๋‚ด๋ ค๊ฐ€ ์žˆ๋‹ค๋ฉด CPU๋ฅผ ์ค˜๋ดค์ž ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ด๋‹ค.

๐Ÿ“– 03. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋„

  • ์ฒ˜์Œ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ์ค‘์ธ ์ƒํƒœ๊ณ  (new)
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋˜๋ฉด ready์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ด๋•Œ ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋‹น์žฅ CPU์—์„œ instruction์— ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    -> CPU๋ฅผ ์–ป๊ฒŒ ๋˜๋ฉด running์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
    -> running์ƒํƒœ์—์„œ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๋Š”๋ฐ
    -> ํ•˜๋‚˜๋Š” ์ž์ง„ํ•ด์„œ CPU๋ฅผ ๋‚ด๋†“๋Š” ๊ฒƒ : I/O๊ฐ™์ด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์„œ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋ด์•ผ instruction์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
    -> blocked ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
    -> ๋‹ค๋ฅธ๊ฒƒ์€ ๋‚˜๋Š” CPU๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ Timer interrupt๊ฐ€ ๋“ค์–ด์™€์„œ ready์ƒํƒœ๋กœ ์ „ํ™˜
    -> ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋‹ค๊ฐ€ ๋ณธ์ธ์˜ ์ผ์ด ๋๋‚˜๋ฉด terminated์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

๐Ÿ“– 04. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์•ˆ์—์„œ Running์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด CPU๋ฅผ ๋บ๊ธฐ๊ณ  Ready queue ๋งจ ๋’ค๋กœ ๊ฐ„๋‹ค. ๊ทธ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–ป๋Š”๋‹ค.

  • CPU์—์„œ Running์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ Disk์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฝ์–ด์™€์•ผ ํ•œ๋‹ค๋ฉด?
    -> CPU์•ˆ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋Š” blocked๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ๋””์Šคํฌ์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๋Š” ๊ณณ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค„์„ ์„œ๊ฒŒ ๋œ๋‹ค.
    -> ๋””์Šคํฌ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜จ ๊ฒƒ๋“ค์„ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ง€ํœ˜ํ•˜์— ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    -> ๋งŒ์•ฝ ๋””์Šคํฌ์—์„œ ๋“ค์–ด์˜ค๋Š” ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ CPUํ•œํ…Œ interrupt๋ฅผ ๊ฑด๋‹ค.
    -> CPU๋Š” ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๊ฒ ์ง€๋งŒ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋“ค์–ด์™”๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋˜ ์ž‘์—…์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  CPU์ œ์–ด๊ถŒ์ด ์šด์˜์ฒด์ œ(์ปค๋„)์—๊ฒŒ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.
    -> ์•„๊นŒ I/O๋ฅผ ์š”์ฒญํ–ˆ๋˜ ํ”„๋กœ์„ธ์Šค์˜ I/O์ž‘์—…์ด ๋๋‚ฌ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ blocked์—์„œ Ready๋กœ ๋ฐ”๊ฟ”์„œ CPU๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

  • ํ•˜๋“œ์›จ์–ด์˜ ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ์ž์› ์ค‘์—๋Š” ๊ณต์œ ๋ฐ์ดํ„ฐ๋ผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•œ๋‹ค. ๊ณต์œ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ์ฆ‰, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋„์ค‘์— CPU์˜ ์ œ์–ด๊ถŒ์„ ๋บ๊ธฐ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋ฉด ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋ง‰์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. -> ์›๋ž˜ ๊ณต์œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ณต์œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” queue์— ๊ฐ€์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.(blocked)

  • I/O queue๋“  Resource queue๋“  ์ž‘์—…์ด ๋๋‚˜๋ฉด Ready queue์— ์ค„์„œ๊ฒŒ ๋œ๋‹ค.

  • ๊ฐ ๋””๋ฐ”์ด์Šค์— ์กด์žฌํ•˜๋Š” queue๋ผ๋Š” ๊ฒƒ์€ ์šด์˜์ฒด์ œ ์ปค๋„์ด ๋ณธ์ธ์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ž๋ฃŒ๊ตฌ์กฐ๋กœ queue๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ  ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉด์„œ Ready์ƒํƒœ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์€ CPU๋ฅผ ์ฃผ๊ณ  blocked์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“คํ•œํ…Œ๋Š” CPU๋ฅผ ์ฃผ์ง€ ์•Š๊ณ , ์ด๋Ÿฐ์‹์œผ๋กœ ์šด์˜์„ ํ•œ๋‹ค.

๐Ÿ“– 05. Process Control Block (PCB)

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

  • PCB
    • ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋‹น ์œ ์ง€ํ•˜๋Š” ์ •๋ณด
    • ๋‹ค์Œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค (๊ตฌ์กฐ์ฒด๋กœ ์œ ์ง€)
      -> (1) OS๊ฐ€ ๊ด€๋ฆฌ์ƒ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ณด
      • Process state, Process ID
      • scheduling information, priority
      -> (2) CPU ์ˆ˜ํ–‰ ๊ด€๋ จ ํ•˜๋“œ์›จ์–ด ๊ฐ’
      • Program counter, register
      -> (3) ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ
      • Code, data, stack์˜ ์œ„์น˜ ์ •๋ณด
      -> (4) ํŒŒ์ผ ๊ด€๋ จ
      • Open file descriptors...
  • PCB๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๋„ 4๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.
    ์ฒซ๋ฒˆ์งธ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌ์ƒ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ณด๊ฐ€ ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ PCB๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋Ÿฐ๋‹์ด์•ผ ๋ธ”๋Ÿญ๋“œ๋ƒ ๋“ฑ, ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์•„์ด๋””๋ฅผ ์ค˜์„œ ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.
    ๋‘๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค. CPU์—๋‹ค๊ฐ€ ์–ด๋–ค ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’๋“ค์„ ๋„ฃ์–ด์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๊ฐ€
    ์„ธ๋ฒˆ์งธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ๋œ ๋ฌธ๋งฅ์ด๋‹ค. ์ฝ”๋“œ ๋ฐ์ดํ„ฐ ์Šคํƒ์ด ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ์œ„์น˜ํ•ด ์žˆ๋Š”๊ฐ€
    ๋„ค๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฆ‰ ์˜คํ”ˆํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ๊ทธ ์™ธ ๋ฆฌ์†Œ์Šค์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋“ค
    ์ด ๋„ค๊ฐ€์ง€๊ฐ€ PCB์˜ ๊ตฌ์„ฑ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค.

๐Ÿ“– 06. ๋ฌธ๋งฅ ๊ตํ™˜ (Context Switch)

  • CPU๋ฅผ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ณผ์ •
  • CPU๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜์–ด๊ฐˆ ๋•Œ ์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰
    • CPU๋ฅผ ๋‚ด์–ด์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ์ €์žฅ
    • CPU๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์–ป๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ PCB์—์„œ ์ฝ์–ด์˜ด

-> ํ˜„์žฌ CPU์— ์กด์žฌํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ PCB์— ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ PCB๋Š” ์ปค๋„ data์˜์—ญ์— ์กด์žฌํ•˜๋ฉฐ ์ปค๋„์ด ๊ด€๋ฆฌ(Context Switch ๋“ฑ)๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„ ๋ณธ์ธ์˜ data ์˜์—ญ์— ์žˆ์Œ!

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

  • ํƒ€์ด๋จธ๊ฐ€ ๋๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋นผ์•—๊ฒจ์•ผ ๋œ๋‹ค๋ฉด CPU์•ˆ์— ์ •๋ณด๋ฅผ ๊ทธ๋ƒฅ ์ง€์›Œ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์Œ์— CPU๋ฅผ ์–ป์—ˆ์„ ๋•Œ ํ•ด๋‹น ์‹œ์ ๋ถ€ํ„ฐ ์žฌ๊ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋งต์˜ ๊ฐ’์„ PCB์— ์ €์žฅ์„ ํ•œ๋‹ค.

  • ๋ณต์› ํ•  ๋•Œ PCB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  CPU๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.

  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์—์„œ ์ปค๋„๋กœ CPU์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์„ Context Switch๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค.
    -> ์‚ฌ์šฉ์ž -> ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์„ Context Switch๋ผ๊ณ  ํ•œ๋‹ค.

  • ๋ฌธ๋งฅ๊ตํ™˜์ด ์ผ์–ด๋‚˜๋ฉด ๋ณดํ†ต ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์ง€์›Œ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค.
    -> cache memory flush

๐Ÿ“– 07. ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ค„๋ง ํ•˜๊ธฐ ์œ„ํ•œ ํ

  • Job queue
    • ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
  • Ready queue
    • ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU๋ฅผ ์žก์•„์„œ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
  • Device queues
    • I/O device์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ
  • ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ ํ๋“ค์„ ์˜ค๊ฐ€๋ฉฐ ์ˆ˜ํ–‰๋œ๋‹ค.

๐Ÿ“– 08. Ready Queue์™€ ๋‹ค์–‘ํ•œ Device Queue

  • ์‚ฌ์‹ค์€ queue์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค„์„œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ PCB๊ฐ€ ์ค„ ์„œ ์žˆ์Œ!
    -> PCB์— ํฌ์ธํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– 09. ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ํ์˜ ๋ชจ์Šต

๐Ÿ“– 10. ์Šค์ผ€์ค„๋Ÿฌ (Scheduler)

  • Long-term scheduler (์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ or job scheduler)
    • ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ๊ฒƒ๋“ค์„ ready queue๋กœ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •
    • ํ”„๋กœ์„ธ์Šค์— memory(๋ฐ ๊ฐ์ข… ์ž์›)์„ ์ฃผ๋Š” ๋ฌธ์ œ
      = degree of Multiprogramming์„ ์ œ์–ด
    • time sharing system์—๋Š” ๋ณดํ†ต ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์—†์Œ (๋ฌด์กฐ๊ฑด ready)
  • Short-term scheduler (๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ or CPU scheduler)
    • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์Œ๋ฒˆ์— running์‹œํ‚ฌ์ง€ ๊ฒฐ์ •
    • ํ”„๋กœ์„ธ์Šค์— CPU(๋ฐ ๊ฐ์ข… ์ž์›)๋ฅผ ์ฃผ๋Š” ๋ฌธ์ œ
    • ์ถฉ๋ถ„ํžˆ ๋นจ๋ผ์•ผ ํ•จ (millisecond ๋‹จ์œ„)
  • Medium-Term Scheduler (์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ or Swapper)
    • ์—ฌ์œ  ๊ณต๊ฐ„ ๋งˆ๋ จ์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์ซ“์•„๋ƒ„
    • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ์„œ memory๋ฅผ ๋บ๋Š” ๋ฌธ์ œ
    • degree of Multiprogramming์„ ์ œ์–ด
  • ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ˆœ์„œ๋ฅผ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ.

  • ํ”„๋กœ์„ธ์Šค๋Š” new์—์„œ ์ž ์‹œ ๋จธ๋ฌผ๋ €๋‹ค๊ฐ€ ready๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ ๋„˜์–ด๊ฐ€๋Š” ๋„์ค‘ ์–ด๋–ค์ผ์ด ๋ฐœ์ƒํ•˜๋Š”๋ƒ
    -> memory์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ admitedํ•œ๋‹ค. ์ฆ‰, admited๋˜์–ด์•ผ ready์ƒํƒœ์— ์˜ฌ๋ผ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    -> ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ด€์—ฌํ•จ

  • ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready๋กœ ๋ณด๋‚ผ์ง€ ๋ง์ง€ ๊ฒฐ์ •
    -> ์• ์ดˆ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐ์ ˆ

  • Multiprogramming : ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ

  • degree of Multiprogramming : ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ˆ˜

  • ๋ฉ”๋ชจ๋ฆฌ์— ์ ๋‹นํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ƒ ์ค‘์š”ํ•œ๋ฐ ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ด๋ฅผ ์ ์ ˆํžˆ ์ œ์–ดํ•ด์คŒ
    -> ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋‚˜๋ฐ–์— ์—†์œผ๋ฉด ๊ทธ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ I/O๋ฅผ ํ•˜๊ฒŒ๋˜๋ฉด CPU๋Š” ๋†€๊ฒŒ๋œ๋‹ค.
    -> ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ผญ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์— ์ข‹์ง€ ์•Š๋‹ค.

  • ๊ทธ๋Ÿฌ๋‚˜ ํƒ€์ž„ ์…ฐ์–ด๋ง ์‹œ์Šคํ…œ์—๋Š” ์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์—†๊ณ  ๋ฌด์กฐ๊ฑด ๋ ˆ๋””์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
    -> ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์€ degree of Multiprogramming์„ ๋ˆ„๊ฐ€ ์กฐ์ ˆํ•˜๋Š๋ƒ?
    -> ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ด€๋ฆฌ!

  • ์ง€๊ธˆ ์‹œ์Šคํ…œ์—๋Š” ์‹œ์ž‘๋˜๋ฉด ์ผ๋‹จ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ค€๋‹ค.
    -> ๋™์‹œ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.
    -> ๊ทธ๋Ÿฐ๊ฒƒ์„ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
    -> ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณจ๋ผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ†ต์งธ๋กœ ์ซ“์•„๋‚ธ๋‹ค.
    -> degree of Multiprogramming ์กฐ์ ˆ

  • ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๊ฐ€ ์ถ”๊ฐ€๊ฐ€ ๋˜์—ˆ๋‹ค.
    -> Suspended (stoped)
  • ์™ธ๋ถ€์ ์ธ ์š”์ธ
  1. ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ
  2. ์‚ฌ๋žŒ
    -> ์žฌ๊ฐœํ•˜๋ ค๋ฉด ์‚ฌ๋žŒ์ด resumeํ•ด์ฃผ์–ด์•ผ ํ•จ

  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ running์„ ํ•˜๋‹ค๊ฐ€ ์šด์˜์ฒด์ œ์— CPU๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค๊ณ  ํ•ด์„œ ์šด์˜์ฒด์ œ๊ฐ€ runningํ•œ๋‹ค๊ณ  ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ runningํ•œ๋‹ค๊ณ  ํ•˜๋Š”๊ฒƒ์„ ์œ ๋…ํ•ด์•ผ ํ•œ๋‹ค.

  • ์™ธ๋ถ€์—์„œ ์ œ์–ดํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ธ ์ƒํƒœ๋ฅผ inactive์ƒํƒœ๋ผ๊ณ  ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ์˜ํ•ด active์ƒํƒœ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค.

  • blocked์ƒํƒœ์—์„œ swap๋˜๋ฉด Suspended Blocked์ƒํƒœ๊ฐ€, Ready์ƒํƒœ์—์„œ swap๋˜๋ฉด Suspended Ready์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

  • Swap์ด ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— CPU๊ฐ€ ์ž‘์—…์„ ํ•  ์ˆœ ์—†์ง€๋งŒ blocked(I/O)์ƒํƒœ์—์„œ Swap์ด ๋œ๋‹ค๋ฉด ํ•˜๋ฉด Suspended Blocked๊ฐ€ ๋˜๋”๋ผ๋„ I/O์ž‘์—…์„ ๋๋‚ด๊ณ  Suspended Ready์ƒํƒœ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค.





[์ถœ์ฒ˜] ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜

profile
๋ฉˆ์ถ”์ง€ ์•Š๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€