๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OS

3์žฅ Process

 

reference: kocw์˜ ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜์™€ ๊ถŒ์ง„์šฑ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜(๋Œ€ํ•™ ์ •๊ทœ ์ˆ˜์—…)
์ˆ˜์—…์„ ๋“ฃ๊ณ ๋‚˜์„œ ๊ฐ•์˜ ๊ต์žฌ๋ฅผ ํƒ€์ดํ•‘ํ•˜๊ณ  ํ•„๊ธฐํ•œ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์›น๋ทฐ์—์„œ toc๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
github์˜ md ํŒŒ์ผ๋กœ ๋ณด๋Š” ๊ฒŒ ํŽธํ•˜์‹œ๋‹ค๋ฉด, ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


1. ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…

Process is a program in execution

์‚ด์•„์žˆ๋Š” ํ•˜๋‚˜์˜ ์ƒ๋ช…์ฒด๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ (context)

์—ฌ๊ธฐ์„œ ๋ฌธ๋งฅ์ด๋ž€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • CPU ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ
    • Program Counter
    • ๊ฐ์ข… register
  • ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„
    • code, data, stack
  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ ๊ตฌ์กฐ
    • PCB (process control block)
    • Kernel stack

2. ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

ํ”„๋กœ์„ธ์Šค๋Š” ์ƒํƒœ (state)๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์ˆ˜ํ–‰๋œ๋‹ค.

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

! ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ข…๋ฃŒ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์—ญ์‹œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค.

! CPU๋ฅผ ๋‚ด๋†“๋Š” 3๊ฐ€์ง€๋Š” 1. ํ• ๋‹น ์‹œ๊ฐ„ ๋งŒ๋ฃŒ 2. ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…(i/o ๊ฐ™์€) 3. ์ข…๋ฃŒ๋  ๋•Œ

๋ฐ”๋กœ ์•„๋ž˜ ๊ทธ๋ฆผ์„ ํ™•์‹คํ•˜๊ฒŒ ๊ธฐ์–ตํ•ด๋‘์ž!

CPU๋Š” ํ•œ ๊ฐœ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋งค์ˆœ๊ฐ„ ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

๊ณต์œ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋ผ๋ฆฌ ๊ฐ™์ด ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค.

  • Q. disk์™€ ๊ด€๋ จ๋œ interrupt๋Š” ํ•˜๋“œ์›จ์–ด interrupt์ผ๊นŒ ์†Œํ”„ํŠธ์›จ์–ด interrupt์ผ๊นŒ?
    • A. ๋‘˜ ๋‹ค ์ด๋‹ค.
    • ๋จผ์ € disk I/O๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ง์ ‘ ๋ชปํ•˜๊ณ  OS์— ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค.
    • ์—ฌ๊ธฐ์„  system call ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— sw interrupt์ด๋‹ค.
    • I/O๊ฐ€ ๋‹ค ๋๋‚ฌ์„ ๋•Œ disk controller๊ฐ€ cpuํ•œํ…Œ interrupt๋ฅผ ๊ฑธ์–ด์„œ I/O ๊ฐ€ ๋๋‚ฌ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์€ hw interrupt์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ณ€ํ™”๋„

์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๊ทธ๋ฆฐ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ณ€ํ™”๋„์ด๋‹ค.

๊ต์ˆ˜๋‹˜์ด ๋ง์”€ํ•˜์‹œ๊ธธ, ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ณ€ํ™”๋„๋ฅผ ๊ทธ๋ฆฌ๋ผ๊ณ  ํ•˜๋ฉด exit, new๋ฅผ ์ œ์™ธํ•˜๊ณ  Running 1๊ฐœ, Blocked์™€ Suspended Blocked, Ready์™€ Suspended Ready ์ด๋ ‡๊ฒŒ 5๊ฐœ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•˜์…จ๋‹ค.

2๊ฐœ์˜ Running ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•ด๋ณด์ž. A๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๊ฐ€์ง€๊ณ  ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ ๋„์ค‘์— disk controller๊ฐ€ interrupt๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒฝ์šฐ. ์ด ๋•Œ CPU๋Š” ์šด์˜์ฒด์ œ๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ A๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ์ „ํžˆ Running ์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. System call๋กœ ์ปค๋„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” Running ์ƒํƒœ๋ผ๋Š” ๋œป์ด๋‹ค. ๋‹ค๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„ ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

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

3. Process Control Block (PCB)

์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋‹น ์œ ์ง€ํ•˜๋Š” ์ •๋ณด CPU ์—๊ฒŒ ๋บ๊ฒผ์„ ๋•Œ ๋ฌธ๋งฅ์„ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ.

์œ„์น˜

  • OS ์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„ ์ค‘์—์„œ PCB๋ฅผ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ๊ฐ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

๊ตฌ์„ฑ ์š”์†Œ (๊ตฌ์กฐ์ฒด๋กœ ์œ ์ง€)

  • OS๊ฐ€ ๊ด€๋ฆฌ์ƒ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ณด
    • Process state, Process ID (PID)
    • scheduling information, priority
  • CPU ์ˆ˜ํ–‰ ๊ด€๋ จ ํ•˜๋“œ์›จ์–ด ๊ฐ’
    • Program counter, registers
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ
    • Code, data, stack์˜ ์œ„์น˜ ์ •๋ณด
  • ํŒŒ์ผ ๊ด€๋ จ
    • Open file descriptors

4. ๋ฌธ๋งฅ ๊ตํ™˜ (Context Switch)

CPU๋ฅผ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ณผ์ •

CPU ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜์–ด๊ฐˆ ๋•Œ ์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  1. CPU๋ฅผ ๋‚ด์–ด์ฃผ๋Š”(๋นผ์•—๊ธฐ๋Š”) ํ”„๋กœ์„ธ์Šค A์˜ ์ƒํƒœ(๋ฌธ๋งฅ)๋ฅผ ํ”„๋กœ์„ธ์Šค A์˜ PCB์— ์ €์žฅ
  2. CPU๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์–ป๋Š” ํ”„๋กœ์„ธ์Šค B์˜ ์ƒํƒœ(๋ฌธ๋งฅ)๋ฅผ ํ”„๋กœ์„ธ์Šค B์˜ PCB์—์„œ ์ฝ์–ด์˜ด

์ฃผ์˜ํ•  ์ : System call ์ด๋‚˜ Interrupt ๋ฐœ์ƒ ์‹œ ๋ฐ˜๋“œ์‹œ context switch๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

1๋ฒˆ์˜ ๊ฒฝ์šฐ, CPU์˜ ์ˆ˜ํ–‰ ์ •๋ณด ๋“ฑ A์˜ context ์ผ๋ถ€๋ฅผ A์˜ PCB์— ์ €์žฅํ•ด์•ผ ํ•˜๊ธด ํ•˜์ง€๋งŒ, overhead ๊ฐ€ ๊ต‰์žฅํžˆ ์ ์€ ์ž‘์—…์ด๋‹ค.

5. (ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ฅด๋งํ•˜๊ธฐ ์œ„ํ•œ) ํ

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

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

6. ์Šค์ผ€์ค„๋Ÿฌ (Scheduler)

์šด์˜์ฒด์ œ์—์„œ ์Šค์ผ€์ค„๋ง ํ•˜๋Š” ํŠน์ • ์ฝ”๋“œ์— ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค. ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค.

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

7. Thread

7-1. Thread ๊ฐœ๋…

ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ CPU ์ˆ˜ํ–‰๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ๋ผ ๋ถ€๋ฅธ๋‹ค. A thread (or lightweight process) is a basic unit of CPU utilization

  • Thread์˜ ๊ตฌ์„ฑ
    • program counter
    • register set
    • stack space
  • Thread๊ฐ€ ๋™๋ฃŒ thread์™€ ๊ณต์œ ํ•˜๋Š” ๋ถ€๋ถ„ (=task)
    • code section
    • data section
    • OS resources
  • ์ „ํ†ต์ ์ธ ๊ฐœ๋…์˜ heavyweight process๋Š” ํ•˜๋‚˜์˜ thread๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” task๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑํ‡ธ ํƒœ์Šคํฌ ๊ตฌ์กฐ์—์„œ๋Š” ํ•˜๋‚˜์˜ ์„œ๋ฒ„ ์Šค๋ ˆ๋“œ๊ฐ€ blocked (waiting) ์ƒํƒœ์ธ ๋™์•ˆ์—๋„ ๋™์ผํ•œ ํƒœ์Šคํฌ ๋‚ด์˜ **๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰(running)**๋˜์–ด **๋น ๋ฅธ ์ฒ˜๋ฆฌ**๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ) ๋„คํŠธ์›Œํฌ๋กœ ์›น ํŽ˜์ด๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋™์•ˆ์—๋„ ํ™”๋ฉด์— ๋‹น์žฅ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋งŒ์ด๋ผ๋„ ๋ณด์—ฌ์ฃผ๋ฉด ์‘๋‹ต์„ฑ์ด ๋น ๋ฅด๊ฒŒ ๋Š๊ปด์ง.
    • ๋” ์ •ํ™•ํžˆ, html ๋ฌธ์„œ๋ฅผ ์ฝ์–ด์™€์„œ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํ…์ŠคํŠธ๋งŒ ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋„ ์žˆ์Œ. ์ด๋ฏธ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” url๋กœ ๋ฐ›์•„์˜ค๋ ค๋ฉด ์›น ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•ด์•ผํ•จ. ์ด ์ด๋ฏธ์ง€ ์š”์ฒญ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์„ ๋งˆ๋ƒฅ blocked ์ƒํƒœ๋กœ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„คํŠธ์›Œํฌ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ์— ๋˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹น์žฅ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” text๋ผ๋„ ๋จผ์ € ํ‘œ์‹œํ•œ๋‹ค.
  • ๋™์ผํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ๋†’์€ ์ฒ˜๋ฆฌ์œจ(throughput)๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ‘๋ ฌ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

7-2. Thread ์œ„์น˜

7-3. Thread์˜ ์ด์ 

  • Responsiveness (์‘๋‹ต์„ฑ์ด ๋น ๋ฅด๋‹ค)
    • ์˜ˆ) ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์›น, if one thread is blocked (๋„คํŠธ์›Œํฌ), another thread continues (ํ™”๋ฉด)
  • Resource Sharing (์ž์› ๊ณต์œ )
    • n๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋Š” binary code, data, resource of process ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Economy
    • ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋น„ํ•ด์„œ ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ 30๋ฐฐ ํšจ์œจ์ ์ด๊ณ 
    • ๋ฌธ๋งฅ ๊ตํ™˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์€ 5๋ฐฐ ํšจ์œจ์ ์ด๋‹ค.
  • Utilization of MP Architectures
    • MP: multi processor
    • ๋ณ‘๋ ฌ๋กœ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ, ์˜ˆ๋ฅผ ๋“ค๋ฉด 1000 X 1000 ํ–‰๋ ฌ ๊ณฑ์…ˆ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ

7-4. Thread ๊ตฌํ˜„

์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ์šด์˜์ฒด์ œ๊ฐ€

  • ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ: Kernal Threads
    • OS๊ฐ€ A ์Šค๋ ˆ๋“œ ใ…ก> B ์Šค๋ ˆ๋“œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
    • OS zใ…“๋„์ด ์ง์ ‘ ์ง€์›ํ•ด์ฃผ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ.
  • ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ: User Threads
  • ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ๋‹จ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•จ.

๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ๋˜ ๋‹ค๋ฅธ ์ด์Šˆ๋กœ real-time threads๋„ ์žˆ๋‹ค๊ณ  ํ•จ.

'OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

7์žฅ Deadlock  (0) 2021.06.19
6์žฅ Process Synchronization  (0) 2021.06.19
5์žฅ CPU scheduling  (0) 2021.06.18
4์žฅ Process Management  (0) 2021.06.18
2์žฅ System Structure & Program Execution  (0) 2021.06.18
1์žฅ Introduction to Operating System  (0) 2021.06.18