OS - Process 1

๋ฏผ์ฐฌํ™ยท2023๋…„ 10์›” 13์ผ
0

CS - OS(์šด์˜์ฒด์ œ)

๋ชฉ๋ก ๋ณด๊ธฐ
3/6

๐Ÿš€ OS - System Structure & Program Execution 2 ์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๐Ÿงฉ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…

  • "ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค"
  • ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ(context)
    • CPU ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ
      • Program Counter
      • ๊ฐ์ข… register
    • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„
      • code, data, stack
    • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ ๊ตฌ์กฐ
      • PCB(Process Control Block)
      • kernel stack

ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ(context) ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ทœ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค์ด๋‹ค. ์‚ฌ๋žŒ์œผ๋กœ ์น˜๋ฉด ํ˜„์žฌ ๊ธฐ์ค€ ๋‚ด ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ, IQ, ์•„๋Š” ์ง€์‹์ •๋„์ผ ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค ๋ฌธ๋งฅ์„ ์•Œ์•„์•ผ ํ•˜๋Š” ์ค‘์š”ํ•œ ์ด์œ ๋Š” time sharing๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. *ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ์‹คํ–‰๋˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์•Œ๊ณ  ๋ฐฑ์—…ํ•ด์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•ด์•ผ ๋‹ค์Œ์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ CPU๋ฅผ ์žก์•˜์„ ๋•Œ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿงฉ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ (process state)

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

New : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ์ค‘์ธ ์ƒํƒœ
Terminated : ์ˆ˜ํ–‰(execution)์ด ๋๋‚œ ์ƒํƒœ

Blocked : ์ž์‹ ์ด ์š”์ฒญํ•œ event๊ฐ€ ๋งŒ์กฑ๋˜๋ฉด Ready
Suspended : ์™ธ๋ถ€์—์„œ resumeํ•ด ์ฃผ์–ด์•ผ Active

๋ณดํ†ต์€ Ready ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด time sharing์„ ํ†ตํ•ด CPU๋ฅผ ์žก์•˜๋‹ค ๋†“์•˜๋‹ค ํ•˜๋ฉด์„œ ์ง„ํ–‰๋œ๋‹ค.

๐Ÿงฉ Process Control Block(PCB)

  • ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋‹น ์œ ์ง€ํ•˜๋Š” ์ •๋ณด
  • ์šด์˜์ฒด์ œ๊ฐ€ ์ž์‹ ์˜ data๋ถ€๋ถ„์— ๊ฐ–๊ณ  ์žˆ์Œ
  • ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค. (๊ตฌ์กฐ์ฒด๋กœ ์œ ์ง€)
    • (1) OS๊ฐ€ ๊ด€๋ฆฌ์ƒ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ณด
      • Process state, Process ID
      • scheduling information, priority
    • (2) CPU ์ˆ˜ํ–‰ ๊ด€๋ จ ํ•˜๋“œ์›จ์–ด ๊ฐ’
      • Program counter, registers
    • (3) ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ
      • code,data,stack์˜ ์œ„์น˜ ์ •๋ณด
    • (4) ํŒŒ์ผ ๊ด€๋ จ
      • Open file descriptors...

๐Ÿงฉ ๋ฌธ๋งฅ ๊ตํ™˜ (Context Switch)

  • CPU๋ฅผ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ณผ์ •
  • CPU์˜ ๋ฌธ๋งฅ๋“ค (๋ ˆ์ง€์Šคํ„ฐ ์ €์žฅ๊ฐ’,program counter๊ฐ’,memory map ๊ฐ’ ๋“ฑ๋“ฑ)
  • CPU๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜์–ด๊ฐˆ ๋•Œ ์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰
    • CPU๋ฅผ ๋‚ด์–ด์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB์— ์ €์žฅ(kernel ๋ฐ์ดํ„ฐ๋ถ€๋ถ„์—์„œ)
    • CPU๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์–ป๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ PCB์—์„œ ์ฝ์–ด์˜ด(kernel ๋ฐ์ดํ„ฐ๋ถ€๋ถ„์—์„œ)

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ System call์ด๋‚˜ Interrupt ๋ฐœ์ƒ ์‹œ ๋ฐ˜๋“œ์‹œ context switch๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์ด๋‹ค.
์œ„์—์„œ ์–ธ๊ธ‰ํ•œ context switch๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด System call์ด๋‚˜ Interrupt๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋Š” CPU๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—์„œ OS๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ, ์ด๊ฒƒ์€ context switch๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ทธ ํ›„ OS๊ฐ€ CPU๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋˜๋ฉด ๊ทธ๊ฒƒ์€ context switch๊ฐ€ ๋งž๋‹ค.

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

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

ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ฐ ํ๋“ค์„ ์˜ค๊ฐ€๋ฉฐ ์ˆ˜ํ–‰๋œ๋‹ค

๐Ÿงฉ ์Šค์ผ€์ค„๋Ÿฌ(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๋ฅผ ์ฃผ๋Š” ๋ฌธ์ œ
    • ์ถฉ๋ถ„ํžˆ ๋นจ๋ผ์•ผ ํ•จ
  • Medium-Term Scheduler(์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ or Swapper)

    • ์—ฌ์œ  ๊ณต๊ฐ„ ๋งˆ๋ จ์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์ซ“์•„๋ƒ„
    • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ์„œ memory๋ฅผ ๋บ๋Š” ๋ฌธ์ œ
    • degree of Multiprogramming์„ ์ œ์–ด
profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊ฟ‰๋‹ˆ๋‹ค

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