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