Search
๐Ÿ’พ

03 : Limited Direct Execution

course
last review
2023/04/15
mastery
intermediate
progress
not started
date
2023/03/09
4 more properties
Previous chapter

Direct Execution (๊ต์žฌ ์ „์šฉ ์šฉ์–ด)

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ OS์™€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ ์„ ์„ค๋ช…ํ•˜์ž.
OS
ํ”„๋กœ๊ทธ๋žจ
ํ”„๋กœ์„ธ์Šค ๋ฆฌ์ŠคํŠธ์— ํ”„๋กœ์„ธ์Šค์˜ ์—”ํŠธ๋ฆฌ ๋“ฑ๋ก (Ready Queue)
์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ VM ํ• ๋‹น(์‹คํ–‰์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์‚ฌ์ด์ฆˆ๋งŒ ํ• ๋‹น)
์Šคํ† ๋ฆฌ์ง€์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ (CPU๋Š” ์Šคํ† ๋ฆฌ์ง€์—์„œ ๋‹ค์ด๋ ‰ํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.)
์Šคํƒ ์…‹์—… (argc/argv)
๋ ˆ์ง€์Šคํ„ฐ ์ดˆ๊ธฐํ™”
main() ํ•จ์ˆ˜ ์ฝœ ์‹คํ–‰
main() ์‹คํ–‰
main()์œผ๋กœ๋ถ€ํ„ฐ return ์‹คํ–‰
ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ญ์ œ
ํ”„๋กœ์„ธ์Šค ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ
ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ๋ฉด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์ด ๋ฐœ์ƒํ•  ํ…๋ฐ ๋„๋Š” ์‹œ์ ์—์„œ OS๊ฐ€ ๊ฐ์‹œ, ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‚˜?
์•„๋‹ˆ. ์•ˆ๊ดœ์ฐฎ๋‹ค. ๋‘๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
1.
OS๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ํ–‰๋™์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์–ด๋–ป๊ฒŒ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
2.
OS๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์–ด๋–ป๊ฒŒ ์ „ํ™˜์‹œํ‚ฌ๊ฒƒ์ธ๊ฐ€?
OS
ํ”„๋กœ๊ทธ๋žจ
main() ํ•จ์ˆ˜ ์ฝœ ์‹คํ–‰
main() ์‹คํ–‰
(์ •์ฑ…)
์ œํ•œ๋œ Operation์„ ์‹คํ–‰ํ•˜๋Š”๊ฐ€?
์ ์œ ์œจ ์ œํ•œ ๋ฐ Time sharing
main()์œผ๋กœ๋ถ€ํ„ฐ return ์‹คํ–‰
๋‹ค์Œ๊ณผ ๊ฐ™์ด OS๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์‹œํ•ด์•ผํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
โ€ข
ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ธ์ŠคํŠธ๋Ÿญ์…˜์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์‹œ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•
โ—ฆ
๋„ˆ๋ฌด ๋Š๋ ค์ง„๋‹ค.

Problem #1 : Restricted Operations(a.k.a. Previleged Operations)

OS๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ–๊ณ ์žˆ๋‹ค. ์ฆ‰ ์ตœ๊ณ ๋ ˆ๋ฒจ์˜ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ,
์œ ์ € ๋ ˆ๋ฒจ์—์„œ๋Š” ๊ถŒํ•œ์ด ๊ณผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
์ œํ•œ๋œ Operations
โ€ข
I/O ๋ฆฌํ€˜์ŠคํŠธ
โ€ข
์‹œ์Šคํ…œ ์ž์›์— ์—‘์„ธ์Šค๋ฅผ ์–ป๋Š” ๊ฒƒ
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ œํ•œ๋œ ๋ฒ”์œ„๋‚ด์—์„œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•จ.

Processor Modes

๊ธฐ๋Šฅ๋“ค์— ๋”ฐ๋ผ์„œ ์œ ์ €๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์ปค๋„์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜๋ˆ ๋†จ์Œ.
โ€ข
User mode
โ—ฆ
์œ ์ € ๋ชจ๋“œ๋กœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋Š” ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์ œํ•œ๋˜์–ด ์žˆ์Œ.
โ—ฆ
Restricted operations๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€(ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ์—์„œ) ์˜ˆ์™ธ์ƒํ™ฉ์„ ๋„์ถœํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
โ€ข
Kernel mode
โ—ฆ
๋ชจ๋“  ๊ถŒํ•œ์„ ์–ป์Œ
โ—ฆ
OS๋Š” ์ปค๋„๋ชจ๋“œ

System Calls

OS ์•ˆ์—์„œ๋Š” ์ปค๋„๋ชจ๋“œ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๊ณ , OS ๋ฐ–์—์„œ๋Š” ์œ ์ €๋ชจ๋“œ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•จ.
โ€ข
์œ ์ €๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ ˆ๋ฒจ ๊ธ‰์˜ Operation์ด ํ•„์š”ํ•  ๋•Œ ์‹œ์Šคํ…œ ์ฝœ์„ ๋ถ€๋ฅด๋ฉด ๋œ๋‹ค.
์‹œ์Šคํ…œ ์ฝœ์˜ ์ค‘์š”๋ถ€๋ถ„์€ ๋‹ค ์šด์˜์ฒด์ œ ์•ˆ์—์„œ ๊ตฌํ˜„๋˜๊ณ  ์žˆ๋‹ค.
โ†’ ์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ์ด ๋˜์ง€?
โ€ข
์œ ์ € ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋“ค์–ด๊ฐ
โ€ข
์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
โ—ฆ
์•ˆ๋จ! โ†’ Previleged Operation์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ €๋ ˆ๋ฒจ์—์„œ ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅด๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.
โ—ฆ
์ด๋ฅผ ์œ„ํ•ด์„œ Trap ์ธ์ŠคํŠธ๋Ÿญ์…˜์„ ๋ถ€๋ฅธ๋‹ค.
โ–ช
์šด์˜์ฒด์ œ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ.
โ—ฆ
Trap์„ ํ†ตํ•ด์„œ ์•ˆ์— ๋“ค์–ด๊ฐ€์„œ OS ๋‹จ๊ณ„์˜ ์ธ์ŠคํŠธ๋Ÿญ์…˜์„ ์ˆ˜ํ–‰ํ•œ ์ดํ›„, return-from-trap์„ ํ†ตํ•ด ๊ถŒํ•œ ๋ ˆ๋ฒจ์„ ๋‹ค์‹œ ๋‚ฎ์ถ˜๋‹ค.

Trap Table

trap ์ธ์ŠคํŠธ๋Ÿญ์…˜์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์˜ ์–ด๋“œ๋ ˆ์Šค ์ŠคํŽ˜์ด์Šค ํ…Œ์ด๋ธ”
โ€ข
Trap ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๊ฐ’๋งŒ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
โ†’ OS๊ฐ€ ๋“ค์–ด์™€๋„ ๋˜๋Š” ์ž…๊ตฌ๋งŒ ์ •๋ฆฌํ•ด๋†“์€ ๋ฐฐ์—ด!!
์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ๋•Œ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•˜๊ณ (์ธ์ž ์ฒดํฌ ๋“ฑ๋“ฑ) ๋‚˜์„œ ์•ˆ์ „ํ•  ๊ฒฝ์šฐ ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ์‹

Limited Direct Execution Protocol

OS
ํ•˜๋“œ์›จ์–ด
ํ”„๋กœ๊ทธ๋žจ
๋ถ€ํŠธ
ํŠธ๋žฉ ํ…Œ์ด๋ธ” ์‹คํ–‰
์‹œ์Šคํ…œ์ฝœ ํ•ธ๋“ค๋Ÿฌ(ํŠธ๋žฉํ…Œ์ด๋ธ”)์˜ ์ฃผ์†Œ ์ €์žฅ
๋Ÿฐํƒ€์ž„
PCB์ œ์ž‘
ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
ํ”„๋กœ๊ทธ๋žจ ๋กœ๋“œ โ†’ ๋ฉ”๋ชจ๋ฆฌ
์œ ์ €์Šคํƒ ์„ค์ •
์ปค๋„ ์Šคํƒ ์„ค์ •
return-from-trap(๋žญํฌ๋‹ค์šด)
์ปค๋„์Šคํƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ ๋ณต๊ตฌ
์œ ์ €๋ชจ๋“œ ์ „ํ™˜
๋ฉ”์ธ์œผ๋กœ ์ „ํ™˜
๋ฉ”์ธ()
์‹œ์Šคํ…œ์ฝœ
Trap to OS
์ปค๋„์Šคํƒ์œผ๋กœ regs/PC ์ €์žฅ
์ปค๋„๋ชจ๋“œ๋กœ ์ „ํ™˜
ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ ํ”„
ํŠธ๋žฉ ํ•ธ๋“ค
return-from-trap(๋žญํฌ๋‹ค์šด)
์ปค๋„์Šคํƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ ๋ณต๊ตฌ
์œ ์ €๋ชจ๋“œ ์ „ํ™˜
๋ฉ”์ธ์œผ๋กœ ์ „ํ™˜
return from main()
Trap(via exit())
ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™”
ํ”„๋กœ์„ธ์Šค ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ
์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ โ†’ Trap โ†’ ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ โ†’ Return-from-trap
โ€ข
์ปค๋„ ์•ˆ์œผ๋กœ ์ง„์ž…ํ•˜๋Š” ๊ฒƒ๋„ ์ผ์ข…์˜ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜
โ—ฆ
๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ต์ฒด๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค to ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋Š” ์•„๋‹˜.
โ—ฆ
์‹œ์Šคํ…œ ์ฝœ๋กœ ์ปค๋„ ์•ˆ์— ๋“ค์–ด์™€์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Œ.

Problem #2: Switching Between Processes

์–ด๋–ป๊ฒŒ CPU์˜ ์ปจํŠธ๋กค์„ ๋‹ค์‹œ ์–ป๋Š”๊ฐ€?

Cooperative Approach

Time sharing์„ ํ•˜๋ ค๋ฉด ์šด์˜์ฒด์ œ๊ฐ€ CPU๋ฅผ ์ ์œ ํ•ด์•ผํ•œ๋‹ค.(OS๋„ ๊ฒฐ๊ตญ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ์ž„)
exe๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ๋ถˆ๋Ÿฌ์ฃผ๋ฉด ์‹œ์Šคํ…œ ์ฝœ์„ ๋ถˆ๋Ÿฌ์ฃผ๋ฉด, OS๊ฐ€ ๊ถŒํ•œ์„ ์žก์œผ๋ฉด์„œ ๋ฐ€๋ ค์žˆ๋˜ ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์Šค์ผ€์ฅด๋ง.
์—๋Ÿฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋‹ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, OS ์•ˆ์˜ Exception Handler๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ถ€๋ฅด๊ธฐ ์ง์ „์— ๋ฐ€๋ฆฐ ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

Non-Cooperative Approach

Timer interrupt
โ€ข
ํƒ€์ด๋จธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ(Monotonic?), ์‹œ๊ฐ„๊ฐ„๊ฒฉ ํ›„ ๋งˆ๋‹ค OS๊ฐ€ ์ž์› ์žฌ๋ฐฐ๋ถ„์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ–‰์‚ฌํ•œ๋‹ค.
โ—ฆ
interrupt ๊ฐ„๊ฒฉ์ด ์งง์œผ๋ฉด ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ณ , interrupt ๊ฐ„๊ฒฉ์ด ๊ธธ๋ฉด ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…์ ํ•˜๋Š” ์ƒํ™ฉ๋„ ์žˆ์Œ.
โ—ฆ
Dynamic ํ•˜๊ฒŒ interrupt๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํŠธ๋ Œ๋“œ๊ฐ€ ์ง„ํ™”ํ•˜๊ณ  ์žˆ์Œ. โ†’ NonDynamic์€ 4ms๊ฐ€ ํ‘œ์ค€

Context Switch

์ปค๋„ ์Šคํƒ์— ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฆฌ์Šคํ† ์–ดํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

Limited Direct Execution Protocol

Next chapter