ํฌ์ŠคํŠธ

Process, Processor, Thread

Process, Processor, Thread

2024-04-27. 20:19 : ๊ธ€ ๊ณ„์Šน.
2023-11-10-Process-Processor: ๐ŸŒ‘ Process, Processor

๐Ÿ’ซ Q


  • ํ”„๋กœ์„ธ์Šค, ํ”„๋กœ์„ธ์„œ, ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.
  • ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ซ Processor | ํ”„๋กœ์„ธ์„œ


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

GPU, DMA์™€ ๊ฐ™์ด ์ œํ•œ๋œ ๊ธฐ๋Šฅ๋งŒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ๋„ ์žˆ๋‹ค.

๐Ÿ’ซ Process | ํ”„๋กœ์„ธ์Šค


  • ๋ฒ„ํผ Buffer
    • ์ž„์‹œ ๋ณด๊ด€ ์žฅ์†Œ
    • ~= Cache ์ข€ ๋ณต์‚ฌ๊ฐ€ ๋น ๋ฅธ ๊ณณ์— ๋‘๋Š” ์ž„์‹œ ๋ณด๊ด€ ์žฅ์†Œ
  • ํ”„๋กœ์„ธ์Šค ๋ฐ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ

  • ํ”„๋กœ์„ธ์Šค
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด, ๋ชฉ์  ์ฝ”๋“œ๋กœ (๊ธฐ๊ณ„์–ด ์ฝ”๋“œ)๋กœ ๋ฒˆ์—ญ๋˜์–ด ๋””์Šคํฌ์— ์ €์žฅ๋œ ํ›„ ์šด์˜์ฒด์ œ์˜ ๋„์›€์œผ๋กœ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ ์žฌ๋˜์–ด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ
    • ํ•œ ๋งˆ๋””๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์‹คํ–‰ ์ค‘์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ
  • ํ”„๋กœ์„ธ์Šค ์†์„ฑ
    • ๊ณ ์œ  ๋ฒˆํ˜ธ PID Process Identification Number
    • ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด
    • ์ƒํƒœ Status
    • ์ง„ํ–‰์ง€์  Counter
    • ๋ฌธ๋งฅ Context
    • ์šฐ์„ ์ˆœ์œ„ Priority
    • ์ž์›๋ชฉ๋ก Process Resource
    • ํšŒ๊ณ„์ •๋ณด Accounting Information
    • ๊ธฐํƒ€
  • LDA x
  • ADD y
  • STA z
  • โ†’ z = x + y;

  • ์ค‘๊ฐ„์ด ํƒ€์ž„์•„์›ƒ์ด ๋˜๋ฉด ๊ทธ ์‹œ์ ์˜ ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•˜๊ณ 
  • ๋‹ค์‹œ ๋Œ์•„์™”์„ ๋•Œ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰, ์—ฐ์†์„ฑ
  • ์ €์žฅํ•˜๋Š” CPU์˜ ๋‚ด์šฉ = ๋ฌธ๋งฅ Context

  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ธ”๋ก PCB
    • ํ”„๋กœ์„ธ์Šค๋Š” OS์˜ ๊ด€๋ฆฌ ๋Œ€์ƒ
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋กœ ๋“ฑ๋ก๋จ
      • ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ PCb์— ๊ธฐ๋ก๋˜์–ด ๊ด€๋ฆฌ๋จ
      • PCB์˜ ์ด ๊ฐœ์ˆ˜๊ฐ€ ๊ณง ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•จ
  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ (์ƒํƒœ ์ฒœ์ด)
    • ์šด์˜์ œ์ฒด๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ํ™œ๋™์— ๋”ฐ๋ผ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์ ˆํ•œ ์ƒํƒœ๋กœ ์ฒœ์ด ์‹œํ‚จ๋‹ค
    • @ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ์ƒํƒœ์˜ ๋Œ€๊ธฐ์—ด์— ๊ด€๋ฆฌ๋œ๋‹ค
  • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ
    • ์ค€๋น„ Ready ์ƒํƒœ
    • ์‹คํ–‰ Running ์ƒํƒœ
    • ๋Œ€๊ธฐ Blocked ์ƒํƒœ
    • ๋ณด๋ฅ˜ Suspended ์ƒํƒœ
    • ๋Œ€๊ธฐ-๋ณด๋ฅ˜ Block-Suspended ์ƒํƒœ
    • ์ข…๋ฃŒ Terminated ์ƒํƒœ (Dispatch ๋ฐฐ๊ธ‰ํ•˜๋‹ค)
  • ์Šค๋ ˆ๋“œ Thread (์‹ค)
    • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ํ๋ฆ„ ์ค„๊ธฐ
    • ๋ณดํ†ต ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ์‹คํ–‰ ์ค„๊ธฐ ์ฆ‰, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง (๋‹จ์ผ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค)
    • I.E. C ํ”„๋กœ๊ทธ๋žจ์˜ main() ํ•จ์ˆ˜์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‹คํ–‰์ค„๊ธฐ
  • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค Multi Thread Process
    • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค ๊ฐœ๋…
      • ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์ด์ง€๋งŒ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹คํ–‰ ์ค„๊ธฐ(์Šค๋ ˆ๋“œ)๋ฅผ ๊ฐ€์ง
      • OS๋Š” ์Šค๋ ˆ๋“œ ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ์ƒํƒœ ์ฒœ์ด๋ฅผ ๊ด€๋ฆฌํ•จ
      • ์ฆ‰, ์Šค๋ ˆ๋“œ ๋ณ„๋กœ ~

~

  • CPU๊ฐ€ ๋ฐ˜๋“œ์‹œ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ํ•„์š”๋Š” ์—†์Œ
  • CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋จ
  • CPU๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ๋ณ‘ํ–‰์ฒ˜๋ฆฌ๋จ

  • LDA100
  • ์ฃผ์†Œ 100

  • LDA_S100
  • ์ฃผ์†Œ 100 + Stack Pointer
  • ์ƒ๋Œ€์ฃผ์†Œ๊ธฐ๋ฒ•

  • ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ

  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ
    • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ
      • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ OS์— ์˜ค์ฒญํ•จ์œผ๋กœ์จ ํƒ„์ƒ
      • ์ด๋“ค์€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค Parent Process์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค Child Process ๊ด€๊ณ„๊ฐ€ ๋จ
      • ๋‹จ๋ง๊ธฐ (ํ‚ค๋ณด๋“œ) ์‚ฌ์šฉ์ž๋“ค์€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฆ„์„ ์‰˜ (๋ช…๋ น์–ด ํ•ด์„๊ธฐ)์— ์ „๋‹ฌํ•˜์—ฌ ์‰˜๋กœ ํ•˜์—ฌ๊ธˆ ํ”„๋กœ๊ทธ๋žจ ์ƒ์„ฑ์„ OS์—๊ฒŒ ์š”์ฒญํ•˜๋„๋ก ํ•จ
      • ๋””์Šคํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ ์žฌํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” OS๋ถ€๋ถ„์„ ๋กœ๋” Loader ๋ผํ•จ
  • ํ”„๋กœ์„ธ์Šค ์ œ๊ฑฐ
    • ์ •์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค ์ œ๊ฑฐ๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์Šค์Šค๋กœ๊ฐ€ ์šด์˜์ฒด์ œ์—๊ฒŒ ์š”์ฒญํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  IPC InterProcess Communication
    • ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์™„์ „ํžˆ ๋…๋ฆฝ๋˜์–ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋“ค๊ณผ ๊ฒฉ๋ฆฌ๋˜์–ด ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
    • ๊ฑฐ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘๊ฒŒ ๋ถ„๋ฆฌํ•œ ๊ฒฝ์šฐ, ์ด๋ฅผ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹  ์ˆ˜๋‹จ์ด ์š”๊ตฌ๋จ
      • ํด๋ผ์ด์–ธํŠธ Client โ†’ ์„œ๋ฒ„ ๋ชจ๋ธ
    • ๋Œ€ํ‘œ์ ์ธ ํ†ต์‹  ์ˆ˜๋‹จ์„ ํŒŒ์ดํ”„, ๋ฉ”์‹œ์ง€, ํ, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ, ์„ธ๋งˆํฌ, ์†Œ์ผ“(์ธํ„ฐ๋„ท)์„ ๋“ค ์ˆ˜ ์žˆ์Œ
    • ํ†ต์‹  ๊ฒฝ๋กœ๋Š” ์šด์˜์ฒด์ œ์— ์˜ํ•ด ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํ†ต์‹  ์ˆ˜๋‹จ๋งˆ๋‹ค ๊ณ ์œ ์˜ ์…‹์—… ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•จ
  • ํ”„๋กœ์„ธ์Šค ํ†ต์ œ
    • ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์–ด๋–ค ์กฐ์น˜๋ฅผ ์ทจํ•˜๋Š”์ผ
  • ํ”„๋กœ์„ธ์Šค ํ†ต์ œ์ˆ˜๋‹จ
    • OS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค (์‹œ์Šคํ…œ ์ฝœ)์„ ์ด์šฉ
    • ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค์˜ ๊ฒฝ์šฐ kill() ์‹œ์Šคํ…œ ์ฝœ
  • ํ”„๋กœ์„ธ์Šค ํ†ต์ œ ์œ ํ˜•
    • ๊ฐ•์ œ ์ข…๋ฃŒ :
      • ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์Šค์Šค๋กœ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— ๋ฌด์กฐ๊ฑด ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๋„๋ก ํ•œ๋‹ค
    • ์ผ์‹œ ์ •์ง€ :
      • ์™„์ „ํžˆ ์ข…๋ฃŒํ•˜๋„๋ก ํ•˜๋Š ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ์ž„์‹œ๋กœ CPU์˜ ํ• ๋‹น์„ ๋ฐ›์ง€ ๋ชปํ•˜์—ฌ ๋” ์ด์ƒ์˜ ์‹คํ–‰์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋„๋ก ํ•œ๋‹ค
    • ์‹คํ–‰ ์ œ๊ฐœ :
      • ์ผ์‹œ ์ค‘์ง€ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„์„œ ๊ณ„์™ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
      • ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณตํ‰ํ•˜๊ฒŒ CPU๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค
    • ์•ฝ์† ์ฒ˜๋ฆฌ :
      • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ์•ฝ์†ํ–ˆ๋˜ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„๋“ค์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ง€์‹œํ•œ๋‹ค
    • ์šฐ์„  ์ˆœ์œ„ ๋ณ€๊ฒฝ :
      • ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ๋‚ด๋ฆฐ๋‹ค.
      • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ๋‚ด๋ฆฌ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ ,๊ด€๋ฆฌ์ž๋Š” ์–‘์ชฝ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’ซ Thread | ์Šค๋ ˆ๋“œ


์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋กœ, CPU ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋จ.

๐Ÿซง ๋ฐฐ๊ฒฝ

  • Windows 95 ์ด์ „, Windows OS๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ
  • ํ”„๋กœ๊ทธ๋žจ ํ•˜๋‚˜๊ฐ€ ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง€๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋„ ๋ฉˆ์ถค
    • ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๋„ ์˜ํ–ฅ
  • CPU๋ฅผ ๋‚˜๋ˆ  ์จ์•ผ ํ•˜๋Š”๋ฐ ํ•˜๋‚˜ ๋ฐ–์— ์—†์–ด์„œ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ•จ

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