04
12

์ œ๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค
Process์™€ Thread์˜ Context Switching์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

# Context Switching?

์šด์˜์ฒด์ œ๊ฐ€ CPU ์‹คํ–‰์„ ํ•œ ์ปจํ…์ŠคํŠธ์—์„œ ๋‹ค๋ฅธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ์ด์œ ๋กœ๋Š” ๋‹ค์ค‘ ์ž‘์—… ์ฒ˜๋ฆฌ, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๊ฐ™์€๊ฒŒ ์žˆ๋‹ค. CPU๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด Context Switching์ด ํ•„์ˆ˜์ ์ด๋‹ค.

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

Context Switching์€ ํฌ๊ฒŒ 3๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

  1. ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์ž‘์—…์˜ ์ƒํƒœ ์ €์žฅ(ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ) - ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด
    • ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, PC(Program Counter)๊ฐ™์€ ์ž‘์—… ๋ณต์›์„ ์œ„ํ•œ ์ƒํƒœ์ •๋ณด์™€ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋ฅผ PCB์— ์ €์žฅํ•ด๋‘”๋‹ค. 
  2. ๋‹ค์Œ์— ์‹คํ–‰ํ•  ์ž‘์—…์˜ ์ƒํƒœ ๋กœ๋“œ(ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ)
    • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‹ค์Œ ์ž‘์—…์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ๋กœ๋“œํ•œ๋‹ค(PCB์˜ PC์—์„œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค). CPU์—์„œ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 
  3. ๊ตํ™˜

 

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฑธ PCB(Process Control Block)์— ํ•œ๋‹ค. PCB๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ณ ,  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €๋ฅผ ๋งŒ๋“ ๋‹ค.

์ด ๋‹จ๊ณ„๋“ค์„ ๊ฑฐ์น˜๋ฉด ํ•œ ๊ฐœ์˜ CPU๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค. ์ด๋Ÿฐ ์ž‘์—…์€ ํ•„์ˆ˜์ ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์žฆ์€ Context Switching์€ ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฑธ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ OS์˜ ์—ญํ• ์ด ์ค‘์š”ํ•˜๋‹ค.

 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๊ฐ๊ฐ์˜ Context Switch ๋ฐฉ์‹์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ–๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ = ํ”„๋กœ์„ธ์Šค๋‹ˆ๊นŒ ์ƒ๊ฐํ•  ๋ถ€๋ถ„์ด ์—†๋Š”๋ฐ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ–๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ ๊ฐ„ ์Šค์œ„์นญ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐํ•ด๋ด์•ผ๋  ๋ฌธ์ œ๋‹ค.

# Thread Context Switching

๋™์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ ๊ฐ„ context switching์„ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„ context switching ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๋ฉฐ ๊ต‰์žฅํžˆ ๋น„์šฉ์ด ์ €๋ ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. PC, ๋ ˆ์ง€์Šคํ„ฐ, ์Šคํƒํฌ์ธํ„ฐ๊ฐ™์€ ๋ฆฌ์†Œ์Šค์™€ ์‹๋ณ„์ž๋งŒ ์ „ํ™˜ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ„ ์Šค์œ„์นญ์€ ์ปค๋„ ์ง„์ž…๋น„์šฉ์ด๋ž‘ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค.

# Process Context Switching

ํ”„๋กœ์„ธ์Šค ๊ฐ„ context switching์„ ์˜๋ฏธํ•˜๋ฉฐ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ์›๋ž˜ ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’, ํŽ˜์ด์ง• ํ…Œ์ด๋ธ”, ์ปค๋„ ๋ฆฌ์†Œ์Šค, ํ”„๋กœ์„ธ์„œ์— ์žˆ๋˜ ์บ์‹œ๋“ค)๋ฅผ ์ „ํ™˜ํ•ด์•ผ๋œ๋‹ค. ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์Šค์œ„์นญํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„ ์Šค์œ„์นญ๋ณด๋‹ค ๋น„์šฉ์ด ํ›จ์”ฌ ๋งŽ์ด๋“ ๋‹ค. 

์Šค๋ ˆ๋“œ ๊ฐ„ Context Switching ํ”„๋กœ์„ธ์Šค ๊ฐ„ Context Switching
๋™์ผ ํ”„๋กœ์„ธ์Šค์—์„œ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•˜์ง€์•Š๋Š”๋‹ค.
์Šคํƒํฌ์ธํ„ฐ, ๋ ˆ์ง€์Šคํ„ฐ๊ฐ„ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚˜๊ธดํ•˜๋Š”๋ฐ ์ด ๋น„์šฉ์ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„ ์Šค์œ„์นญ๋ณด๋‹ค ์ €๋ ดํ•˜๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•œ๋‹ค.(์ด ๋น„์šฉ์ด ๋น„์‹ธ๋‹ค)
์Šค์œ„์นญํ•ด๋„ ์บ์‹œ๋ฅผ ๊ณต์œ ํ•œ๋‹ค. ์Šค์œ„์นญ ์‹œ ํ”„๋กœ์„ธ์Šค์˜ ์บ์‹œ์™€ TLB๋„ flush๋œ๋‹ค...

https://www.geeksforgeeks.org/difference-between-thread-context-switch-and-process-context-switch/

https://www.geeksforgeeks.org/process-table-and-process-control-block-pcb/

https://www.geeksforgeeks.org/context-switch-in-operating-system/

cpu ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?

CPU๋ฅผ ์„ ์ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ CPU ์Šค์ผ€์ค„๋Ÿฌ๋‹ค. ์„ ์ , ๋น„์„ ์  ๋‘ ์ข…๋ฅ˜๋กœ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด ๋‚˜๋‰œ๋‹ค. ๊ณตํ†ต์ ์€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์„ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋น„์„ ์ ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ณ , ์„ ์ ์€ OS๊ฐ€ CPU๋ฅผ ๊ฐ•ํƒˆํ•ด์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๋“ค์€ Job queue(์ „์ฒด ํ”„๋กœ์„ธ์Šค), Ready queue(ํ• ๋‹น ๋Œ€๊ธฐ์ค‘), Device queue(์ž…์ถœ๋ ฅ ๋Œ€๊ธฐ์ค‘)๋ฅผ ๋Œ์•„๋‹ค๋‹Œ๋‹ค.

 

# ์„ ์ 

  • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € ํ• ๋‹นํ•œ๋‹ค.
    • ๊ธฐ์•„ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • SRJF(Shortest Remaining Job First)
    • ์ผ์ฐ ๋๋‚  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ๋จผ์ € ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘ฌ์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค
    • ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ž‘์ง€๋งŒ ๋™์ž‘๋ฐฉ์‹์ด SJF๋ž‘ ๋น„์Šทํ•ด์„œ ๊ธฐ์•„์œ„ํ—˜์ด ์žˆ๋‹ค.(๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ๋Œ€๊ธฐ)
  • LRJF(Longest Remaining Job First)
    • ํ‰๊ท ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋งค์šฐํฌ๋‹ค
    • ๊ฐ€์žฅ ์ž‘์—…์‹œ๊ฐ„์ด ๋งŽ์ด ๋‚จ์€๊ฑธ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ์—์„œ ์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ด ๋ฐฉ์‹์„ ์„ ํƒํ•œ๋‹ค. 
  • RR(Round-Robin)
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•˜๊ฒŒ ํ• ๋‹น์‹œ๊ฐ„(time quantum)์„ ๊ฐ–๊ณ , ์ด๊ฒŒ ์ง€๋‚˜๋ฉด ready queue ๋งจ ๋’ค๋กœ ๊ฐ€์„œ ๋Œ€๊ธฐํ•œ๋‹ค
    • ํ• ๋‹น์‹œ๊ฐ„์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ Context Switching ๋น„์šฉ์ด ๋‹ฌ๋ผ์ง€๋ฉฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด FCFS๋‚˜ ๋‹ค๋ฆ„์—†๋‹ค.

# ๋น„์„ ์ 

  • FCFS = FIFO (๋จผ์ € ๋“ค์–ด์˜จ๊ฑธ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ๋‹ค)
    • ๊ตฌํ˜„์ด ์‰ฝ๋‹ค
    • ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋ž˜๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด์žˆ๋‹ค(ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ํฌ๋‹ค (Convoy Effect) )
  • SJF(Shortest Job First)
    • ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ -> ์ž‘์—…์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค
    • ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์‹ ์— ์ž‘์—…์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋˜๋ฏ€๋กœ ๊ธฐ์•„์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • LJF(Longest Job First)
    • SJF ๋ฐ˜๋Œ€, ์„ ์  ๋น„์„ ์  ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋งŒ์•ฝ ์ž‘์—…์‹œ๊ฐ„(burst time)์ด ๋™์ผํ•˜๋ฉด FCFS๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋งค์šฐ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.(Convoy Effect)
  • HRN(Highest Response Ratio Next)
    • ๊ฐ€์žฅ ์ตœ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋‹ค. 
    • ์‘๋‹ต ๋น„์œจ์ด๋ผ๋Š” ๊ฑธ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ€์žฅ ์‘๋‹ต ๋น„์œจ์ด ๋†’์€ ๊ฑธ ์„ ํƒํ•œ๋‹ค
    • ์‘๋‹ต ๋น„์œจ = (๋Œ€๊ธฐ ์‹œ๊ฐ„ + ์ž‘์—…์‹œ๊ฐ„) / ์ž‘์—…์‹œ๊ฐ„
    • SJF์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์•„๋ฌธ์ œ๋ฅผ ์ค„์˜€๋‹ค.
    • ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์•„ CPU์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ์˜ฌ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๊ณ  ๋ชจ๋“  ์ž‘์—…์˜ ์ž‘์—…์‹œ๊ฐ„์„ ์•Œ์ง€๋ชปํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€๋ชปํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

# ๊ทธ ์™ธ

  • MQ(Multilevel Queue)
    • Ready Queue๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ถ„ํ• ํ•œ๋‹ค.
    • ๊ฐ ํ์— ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐฐ์ •ํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • MFQ(Multilevel Feedback Queue)
    • MQ๋ฐฉ์‹์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ฒŒ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. Aging์„ ์ฑ„ํƒํ•ด์„œ ๊ธฐ์•„๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • MP(Multiple-Processor)
    • CPU๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ 
    • ํ•œ ํ”„๋กœ์„ธ์„œ์— ์ž‘์—…์ด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก Load Sharing์ด ํ•„์š”ํ•˜๋‹ค

 

https://www.geeksforgeeks.org/cpu-scheduling-in-operating-systems/?ref=header_search

HTTP 1.1์€ ์–ด๋–ค ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋Š”๊ฐ€? 2.0์€ ์–ด๋–ป๊ฒŒ ๋ณด์™„ํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

# HTTP 1.1์ด ๊ฐ–๋Š” ๋ฌธ์ œ์ 

  • HOL(Head of Line) Blocking
    • ์ปค๋„ฅ์…˜์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—  ํ•œ ์š”์ฒญ์ด ์ง€์—ฐ๋˜๋ฉด ๋’ค์—์žˆ๋Š” ์š”์ฒญ๋“ค๋„ ๋Œ€๊ธฐํ•ด์•ผํ•œ๋‹ค.
  • Header Overhead
    • ๊ฐ ์š”์ฒญ-์‘๋‹ต ์‹œ ์ด๋ฏธ ์•Œ๊ณ ์žˆ๋Š” ๋ถˆํ•„์š”ํ•œ ํ—ค๋”๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ „์†กํ•ด์•ผ๋œ๋‹ค. ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๊ฐ€ ์ž‘์€๊ฒฝ์šฐ ์žฆ์€ ํ†ต์‹ ์œผ๋กœ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋”์šฑ ์ปค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. 
  • ๋‹จ์ผ ์—ฐ๊ฒฐ์˜ ํ•œ๊ณ„ 
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 
    • ๊ธฐ์กด ์ปค๋„ฅ์…˜์„ ์žฌ์‚ฌ์šฉํ•ด์„œ ํšจ์œจ์„ฑ์€ ๋†’์˜€๋Š”๋ฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ๋ฒˆ์— ์š”์ฒญํ•˜๋ฉด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ผ์„œ ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

์ˆœ์ฐจ์ ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ HTTP/1.1์˜ ๋ฌธ์ œ์ ์ด์—ˆ๋‹ค.

# HTTP 2.0์—์„œ ๊ฐœ์„ ๋œ ์ 

  • Multiplexing
    • ๋‹จ์ผ TCP connection์œผ๋กœ๋„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋กํ•ด์„œ HOL Blocking๋ฌธ์ œ๋Š” ๋ฌผ๋ก ์ด๊ณ  ์ „์ฒด์ ์ธ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์ด๋ค„๋ƒˆ๋‹ค.
    • Frame์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๋Š”๋ฐ ๊ฐ ํ”„๋ ˆ์ž„์— ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ด ํ”„๋ ˆ์ž„์„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๊ณ  ์ŠคํŠธ๋ฆผ ์—ญ์‹œ ์‹๋ณ„์ž๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • Header Compression
    • ์ •์  ํ—ค๋” ํ…Œ์ด๋ธ”๊ณผ ๋™์  ํ—ค๋” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด์„œ ํ—ค๋”๋ฅผ ์ธ์ฝ”๋”ฉํ•ด์„œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค. 
  • Server Push
    • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ์„œ ์•„์ง ์š”์ฒญํ•˜์ง€์•Š์€ ๋ฆฌ์†Œ์Šค๋„ ๋ฏธ๋ฆฌ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ถ”๊ฐ€์š”์ฒญ์—†์ด ์‘๋‹ต์„ ํ•ด์ฃผ๊ธฐ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 


::์ถœ์ฒ˜::

https://github.com/VSFe/Tech-Interview?tab=readme-ov-file

https://github.com/WooVictory/Ready-For-Tech-Interview

https://github.com/gyoogle/tech-interview-for-developer

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT