Back

Virtualization Mechanism

Limited Direct Execution

Virtualization Mechanism

์ €๋ฒˆ๊นŒ์ง€ ๋‹ค๋ฃฌ CPU ๊ฐ€์ƒํ™”์˜ ํ•ต์‹ฌ์€ Time Sharing์ด๋‹ค.

Time Sharing์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์˜ ์‹œ๊ฐ„์„ ๋‚˜๋ˆ„์–ด ์“ฐ๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ Time Sharing์„ ์‹ค์ œ๋กœ ์–ด๋–ค ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ์‚ดํŽด๋ณธ๋‹ค.

Time Sharing ๊ตฌํ˜„ ์ด์Šˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Performance : ๊ฐ€์ƒํ™” ๊ตฌํ˜„ ์‹œ Context Switching ๋“ฑ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค.
  • Control : ์šด์˜์ฒด์ œ๊ฐ€ CPU์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ์œ ์ง€ํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

Direct Execution

์šฐ์„  ์„ฑ๋Šฅ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์„ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด CPU์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋ฅผ Direct Execution์ด๋ผ ํ•œ๋‹ค.

Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„

Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„
Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„

1-6 : OS๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ ์‚ฌ์ „ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

7-8 : ํ”„๋กœ๊ทธ๋žจ์˜ main() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. return ๋ช…๋ น ํ˜ธ์ถœ ์ „๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์ ์œ ํ•œ๋‹ค.

9-10 : ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๊ณ , OS๊ฐ€ ๋‹ค์‹œ CPU๋ฅผ ์ ์œ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์‹คํ–‰ ๋ฐฉ์‹์€ OS๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋„ CPU์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” 2๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.

Problem 1 : Restricted Operation

ํ”„๋กœ๊ทธ๋žจ์ด CPU์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์—๋„, ๋‹ค์Œ ์ž‘์—…๋“ค์€ ์šด์˜์ฒด์ œ๊ฐ€ ์ ์ ˆํžˆ ์ œ์–ดํ•ด ์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

  1. ํ”„๋กœ์„ธ์Šค์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋“ฑ์˜ ์ž์› ์ถ”๊ฐ€ ํ• ๋‹น ์š”์ฒญ
  2. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ
  3. ์ €์žฅ ๊ณต๊ฐ„์— ๋Œ€ํ•œ I/O ์š”์ฒญ

ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ Restricted Operation ๋“ค์„ OS๊ฐ€ ์ค‘๊ฐ„์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์˜ ์‹คํ–‰ ๊ถŒํ•œ์„ 2๊ฐ€์ง€ ๋ชจ๋“œ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.

  • User Mode : ์‚ฌ์šฉ์ž ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“œ๋กœ, OS์˜ ํ—ˆ๊ฐ€ ์—†์ด ์‹œ์Šคํ…œ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • Kernel Mode : OS๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ชจ๋“œ๋กœ, Disk IO ๋ฐ ์‹œ์Šคํ…œ ์ž์› ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

System Call

์‹œ์Šคํ…œ ์ฝœ(System Call)

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด์ž.

  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค
  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜
  • ๋ฉ”๋ชจ๋ฆฌ ์ถ”๊ฐ€ ํ• ๋‹น

์‹œ์Šคํ…œ ์ž์›์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด๋ฏ€๋กœ User Mode์—์„œ๋Š” ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•ด ๋‹ฌ๋ผ๊ณ  OS์—๊ฒŒ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ์‹œ์Šคํ…œ ์ฝœ(System Call)์ด๋‹ค.

ํŠธ๋žฉ (Trap)

ํŠธ๋žฉ ๋ช…๋ น์–ด(Trap Instruction)๋Š” User Mode์—์„œ Kernel Mode๋กœ ์ „ํ™˜์‹œ์ผœ์ฃผ๋Š” CPU ๋ช…๋ น์–ด์ด๋‹ค.

User mode์—์„œ Trap์ด ํ˜ธ์ถœ๋˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ด๋˜ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์ผ์‹œ ์ค‘๋‹จ๋˜๊ณ  Kernel Mode๋กœ ์ „ํ™˜๋œ๋‹ค.

User Mode์—์„œ Kernel Mode๋กœ ์ „ํ™˜ํ•ด ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์ž‘์—…์€ ์ „๋ถ€ Trap์„ ํ†ตํ•ด ์ด๋ค„์ง„๋‹ค. ์‹œ์Šคํ…œ ์ฝœ๋„ OS๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ด๋ฏ€๋กœ ํŠธ๋žฉ์„ ํ˜ธ์ถœํ•œ๋‹ค.

Return-from-trap instruction์€ Kernel Mode์—์„œ ๋‹ค์‹œ User Mode๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

ํŠธ๋žฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ํŠธ๋žฉ ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ ์ ˆํ•œ ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

  • ํŠธ๋žฉ ํ…Œ์ด๋ธ” : ํŠธ๋žฉ์ด ๋ฐœ์ƒํ•˜๋ฉด OS ๋‚ด์˜ ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ : ํŠธ๋žฉ์— ๋”ฐ๋ผ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

์‹œ์Šคํ…œ ์ฝœ ๋ฒˆํ˜ธ (System call Number)

OS ๋‚ด์—๋Š” ๋ฐฑ์—ฌ ๊ฐ€์ง€์˜ ์‹œ์Šคํ…œ ์ฝœ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ์ฝœ ๋„˜๋ฒ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ฃผ์˜ : ์‹œ์Šคํ…œ ์ฝœ ๋ฒˆํ˜ธ์™€ ํŠธ๋žฉ ํ…Œ์ด๋ธ”์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ ์ฝœ์€ ๋™์ผํ•œ ์ข…๋ฅ˜์˜ ํŠธ๋žฉ์ด๊ณ , ์‹œ์Šคํ…œ ์ฝœ์— ํ•ด๋‹นํ•˜๋Š” ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์‹œ์Šคํ…œ ์ฝœ ๋„˜๋ฒ„๋ฅผ ๋ณด๊ณ  ์ ์ ˆํ•œ ์‹œ์Šคํ…œ ์ฝœ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์œ ์ €๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์ง€์ •๋œ ๋ ˆ์ง€์Šคํ„ฐ์— ์‹œ์Šคํ…œ ์ฝœ ๋„˜๋ฒ„๋ฅผ ๋„ฃ์–ด ํ˜ธ์ถœํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด, ๊ฐ๊ฐ์˜ ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์ด ์ œํ•œ๋˜์–ด ์žˆ๋Š” Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

System Call์„ ์‚ฌ์šฉํ•˜๋Š” Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„
System Call์„ ์‚ฌ์šฉํ•˜๋Š” Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ User Mode์—์„œ ์‹คํ–‰๋˜๋ฉฐ, Restricted Operation์„ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ํŠธ๋žฉ์„ ๋ฐœ์ƒ์‹œ์ผœ Kernel Mode์—์„œ ์š”์ฒญํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ž์ฒด๋Š” CPU์—์„œ ์ด๋ค„์ง€์ง€๋งŒ, ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ œํ•œ์„ ๋‘์–ด์„œ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์—ฌ Limited Direct Execution์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•ด ์šด์˜์ฒด์ œ์— ๋ถ€ํƒํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜์˜€๋‹ค.

Problem 2 : Switching Between Processes

์—ฌ๊ธฐ์„œ ๋‘ ๋ฒˆ์งธ ์ด์Šˆ์˜€๋˜ OS์˜ ์ œ์–ด๊ถŒ์— ๊ด€ํ•œ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ Context Switching์ด ์ผ์–ด๋‚  ๋•Œ OS๊ฐ€ ์–ด๋–ป๊ฒŒ ์ œ์–ด๊ถŒ์„ ๋‹ค์‹œ ์–ป์„๊นŒ?

OS๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ๋Œ๋ ค๋ฐ›์•„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์šด์˜์ฒด์ œ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ์ข…์ด๋ฏ€๋กœ, CPU๋ฅผ ์ ์œ ํ•˜์ง€ ๋ชปํ•˜๋ฉด ์•„๋ฌด ์ž‘์—…๋„ ํ•  ์ˆ˜ ์—†๋‹ค.

Direct Execution ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด, Restricted Operation์˜ ์‹คํ–‰์„ ์œ„ํ•ด ์ž ์‹œ ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ Context Switching์„ ์œ„ํ•ด OS๊ฐ€ CPU ์ ์œ ๊ถŒ์„ ๋‹ค์‹œ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค!

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

  • ํ˜‘์กฐ์ ์ธ ๋ฐฉ๋ฒ• : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ๋น„ํ˜‘์กฐ์ ์ธ ๋ฐฉ๋ฒ• : ํ”„๋กœ์„ธ์Šค์˜ ์ž๋ฐœ์  ๋ฐ˜๋‚ฉ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์šด์˜์ฒด์ œ๊ฐ€ ๋ชจ๋“  ์ž‘์—…์„ ์ œ์–ดํ•œ๋‹ค.

ํ˜‘์กฐ์ ์ธ ๋ฐฉ๋ฒ•

ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์ ์œ ๊ถŒ์„ OS์—๊ฒŒ ๋ฐ˜๋‚ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ”„๋กœ์„ธ์Šค์˜ CPU ์ ์œ ๊ถŒ์„ OS์—๊ฒŒ ๋ฐ˜๋‚ฉํ•˜๋Š” yield ๋ผ๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • 0์œผ๋กœ ๋‚˜๋ˆ—์…ˆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค(Divide by zero).
    • ์ ‘๊ทผ์ด ๊ธˆ์ง€๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•œ๋‹ค.

์ดˆ๊ธฐ ์šด์˜์ฒด์ œ์—์„œ๋Š” ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ, ์—ฌ๊ธฐ์—๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์žˆ๋‹ค.

์˜๋„ํ•˜๋“  ์˜๋„ํ•˜์ง€ ์•Š์•˜๋“ , ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌดํ•œ๋ฃจํ”„(Ininite loop)์— ๋น ์ง€๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์‹œ์Šคํ…œ์„ ์žฌ๊ฐ€๋™ํ•˜๋Š” ๊ฒƒ๋งŒ์ด ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋œ๋‹ค.

๋น„ํ˜‘์กฐ์ ์ธ ๋ฐฉ๋ฒ•

Timer Interrupt๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

  1. ๋ถ€ํŒ… ๊ณผ์ • ์ค‘์— OS๋Š” ์ผ์ข…์˜ ํƒ€์ด๋จธ๋ฅผ ์ž‘๋™์‹œํ‚จ๋‹ค.
  2. ์ด ํƒ€์ด๋จธ๋Š” ์ผ์ • ์ฃผ๊ธฐ๋กœ ์ธํ„ฐ๋ŸฝํŠธ(interrupt)๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
    • ์ธํ„ฐ๋ŸฝํŠธ(interrupt)๋Š” ์ผ์ข…์˜ ํŠธ๋žฉ(trap)์ด๋‹ค.
  3. ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.
  4. ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์—์„œ CPU์˜ ์ œ์–ด๊ถŒ์„ ๋บ์•„ OS์—๊ฒŒ ๋Œ๋ ค ์ค€๋‹ค.

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

์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ์— Context Switching์ด ์ผ์–ด๋‚œ๋‹ค.

Context Switch๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๋™์•ˆ ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์ด ์ˆ˜ํ–‰๋œ๋‹ค.

  1. ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹ค์Œ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค.
    • General Purpose Register์— ์ €์žฅ๋œ ๊ฐ’๋“ค
    • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ (ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด)
    • ์ปค๋„ ์Šคํƒ ํฌ์ธํ„ฐ
  2. ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค์˜ ์ปค๋„ ์Šคํƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’๋“ค์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
    • ์ฃผ์˜ : 1๋ฒˆ๊ณผ 2๋ฒˆ์˜ ์ปค๋„ ์Šคํƒ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋„ ์Šคํƒ (๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ปค๋„ ์Šคํƒ์ด ์กด์žฌํ•จ)
  3. ์ปค๋„ ์Šคํƒ์„ ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ํ”„๋กœ์„ธ์Šค์˜ ์ปค๋„ ์Šคํƒ์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค.

์ด ์ž‘์—…๋“ค์€ Assembly Code๋กœ ์ž‘์„ฑ๋˜์–ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€์˜ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋œ Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Timer Interrupt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„
Timer Interrupt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Limited Direct Execution์˜ ์‹คํ–‰ ํ๋ฆ„

ํ”„๋กœ์„ธ์Šค A๊ฐ€ CPU๋ฅผ OS์—๊ฒŒ ์ž๋ฐœ์ ์œผ๋กœ ๋Œ๋ ค์ฃผ์ง€ ์•Š๋”๋ผ๋„ ์ •๊ธฐ์ ์œผ๋กœ Timer Interrupt๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ OS์—๊ฒŒ CPU ์ œ์–ด๊ถŒ์ด ๋ฐ˜ํ™˜๋˜๋ฉฐ, Context Switching์ด ์ผ์–ด๋‚˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ „ํ™˜์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€, ์œ„ ์‹คํ–‰ ํ๋ฆ„์„ ์ž์„ธํžˆ ๋ณด๋ฉด Kernel Mode์™€ Hardware์—์„œ ๋ชจ๋‘ Register ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋‘ ๊ฐ’์€ ์„œ๋กœ ๋‹ค๋ฅธ Register์— ์ €์žฅ๋œ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

  • Hardware์˜ Register ๊ฐ’์€ User Mode์˜ Register๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Kernel Stack์„ ํ†ตํ•ด ์ €์žฅํ•˜๊ณ  ๋ณต๊ตฌํ•œ๋‹ค.
  • OS์˜ Register ๊ฐ’์€ Kernel Mode์˜ Register์— ์ €์žฅ๋œ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค. Process์˜ PCB์— ์ €์žฅํ•˜๊ณ  ๋ณต๊ตฌํ•œ๋‹ค.

Concurrency Problem

์ถ”๊ฐ€๋กœ, ๋™์‹œ์„ฑ ๋ฌธ์ œ๋„ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ํŠธ๋žฉ ์‹คํ–‰ ์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žฉ(ํ˜น์€ ์ธํ„ฐ๋ŸฝํŠธ)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

OS๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

  • ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋„์ค‘์—๋Š” ๋‹ค๋ฅธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฌดํšจํ™”(Disable Interrupt)ํ•œ๋‹ค.
  • ๋‹ค์–‘ํ•œ Locking Mechanism์„ ํ™œ์šฉํ•ด ๋™์ผํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

Locking Mechanism์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ Virtualization์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋‹ค๋ฃฌ ํ›„, Concurrency ๊ด€๋ จ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋ฉฐ ํ•™์Šตํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์ •๋ฆฌ

Limited Direct Execution์„ ํ™œ์šฉํ•ด Time Sharing์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋‹ค. ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

  • ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ, User Mode์™€ Kernel Mode๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ Direct Execution์„ ํ•œ๋‹ค.
    • Restricted Operation์€ System Call์„ ์‚ฌ์šฉํ•˜์—ฌ Kernel Mode์—์„œ OS๊ฐ€ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • OS์˜ CPU ์ œ์–ด๊ถŒ์„ ๊ณ ๋ คํ•˜์—ฌ, ํ•˜๋“œ์›จ์–ด์˜ Timer Interrupt ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ Trap์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
    • Direct Execution์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ OS์—๊ฒŒ ์ฃผ๊ธฐ์ ์œผ๋กœ CPU ์‚ฌ์šฉ ๊ถŒํ•œ์ด ๋Œ์•„๊ฐ„๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ CPU ๊ฐ€์ƒํ™”๋ฅผ ์œ„ํ•œ Virtualization Mechanism์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๋‹ค์Œ ์‹œ๊ฐ„๋ถ€ํ„ฐ๋Š” Virtualization Policies๋กœ์„œ, Context Switching์ด ์ผ์–ด๋‚˜๋Š” ์ˆœ๊ฐ„์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ Scheduling Algorithm์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

comments powered by Disqus