๋ํ๊ต ์์
๋ ์ด์์ฒด์ ๋ฅผ ์๋ ค์ฃผ๋ ๊ต์๋์ด ํด์ฃผ์๋ ๋ง์ด ์๊ฐ๋๋ค.
"์ด์์ฒด์ ๋ ์ปดํจํฐ ์ธ๊ณ์ ์ ๋์ ์ด๋ค. ์ปดํจํฐ์์์ ์ผ์ด๋๋ ๋ชจ๋ ์ผ์ ์ด์์ฒด์ ๋ฅผ ํตํ๊ฒ ๋์๋ค"
๋ผ๋ ๋ง์ด์๋ค.
์ปดํจํฐ๋ 4๊ฐ์ง ๊ตฌ์ฑ์ผ๋ก ๋ฐ๋ผ๋ณผ์ ์๋ค
- Hardware
- ๊ธฐ๋ณธ์ ์ธ ์ปดํจํฐ์ ๋ฆฌ์์ค ๊ณต๊ธ
- CPU, memory, I/O devices
- Operating System
- ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ๋ฐ ์ฌ์ฉ์ ๊ฐ์ ํ๋์จ์ด ์ฌ์ฉ์ ์ด ๋ฐ ์กฐ์
- Application Programs
- Complier, Word Processors, Web Browses
- Users
- People, machines, other computers
์ฌ๊ธฐ์ ์ด์์ฒด์ ์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค.
์ด์์ฒด์ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ ์ ์๋ค.
"์ปดํจํฐ ์ ์ ์ ํ๋์จ์ด ๊ฐ์ ๋งค๊ฐ์ฒด ์ญํ ์ ํ๋ ํ๋ก๊ทธ๋จ"
์ฌ๊ธฐ์ ํ๋ก๊ทธ๋จ์ด๋ CPU์์ ์คํ๋๋ ์ผ๋ จ์ ์์ (Instructions)๋ฅผ ๋งํ๋ค.
์ด์์ฒด์ ์ ๋ชฉ์ ์
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์คํ ๋ฐ ์ฌ์ฉ์ ๋ฌธ์ ํด๊ฒฐ
- Computer System์ ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ๋ง๋ ๋ค, ๊ทธ๋ฆฌ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ปดํจํฐ์ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ๋ค.
์ด์์ฒด์ ๋ ๋๊ฐ์ง์ ๋ชจ๋๊ฐ ์กด์ฌ ํ๋ค Kernel mode์ User mode ๋๊ฐ์ง๊ฐ ์กด์ฌ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋์ ํฉ์ณ Dual mode๋ผ๊ณ ํ๋ค.
์ด์ ๋ฅผ ์ค๋ช
ํ๊ธฐ ์ ์ Kernel mode์ User mode๋ฅผ ์ค๋ช
ํ๋ฉด,
- Kernel mode = CPU, memory๋ฑ๋ฑ ๋ชจ๋ ์์์ ์ ๊ทผ ํ ์ ์๋ mode
- User mode = ํ๋ก์ธ์ค ํน์ ์ฝ๋ ์์ฑ์ ํ ์ ์๋ mode ( ํ๋ก๊ทธ๋จ์ ์์์๋ ์ ๊ทผ ํ์ง ๋ชปํ๋ค. )
์ด๋ ๊ฒ ๋๊ฐ์ง mode๋ก ์ฌ์ฉํ๋ ์ด์ ๋ ์์ ์ ๊ทผ์ ์ ํ์ ๋์ง ์์ผ๋ฉด ์๋ชป๋ ํ๋ก๊ทธ๋จ, ํน์ ์ ์ ์ ์๋ชป๋ ํ๋์ด ํ๋ก๊ทธ๋จ์ ์์์ ํผ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ OS๋ ๋๊ฐ์ง mode๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์์์ ์ํฅ์ ์ฃผ๋์ง ์์ฃผ๋์ง ํ์
ํ์ฌ ์์ ํ๊ฒ ๋ณดํธ ๋ฐ ์ ๊ทผ ํ ์ ์๋๋ก Kernel mode์ User mode๋ก ๋๋์ด ์ด์๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด ๋ ๋ชจ๋๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์๋ณด์
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ฝ๋์ ๋ก์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- .txt ํ์ผ์ ์ด์ด ํ์์ ์ ๋ณด๋ฅผ ์ป์ด์จ๋ค.
- ์ป์ด์จ ์ ๋ณด์ค 25์ด ์ด์์ ์ฌ๋์๋ฅผ ํ์ธํ๋ค.
๋ผ๋ ๋ก์ง์ ์ฝ๋๊ฐ ์๊ณ ์ด๋ฅผ ์คํ ํ์ ๋ ๊ฐ๋จํ๊ฒ ์ด๋ป๊ฒ ์ํ๋๋์ง ๋ณด๋ฉด
- ์ผ๋จ ์ฝ๋๊ฐ ์คํ๋๋ฉด User mode์์ ์คํ์ด ๋๋ค.
- .txtํ์ผ์ ์ฌ๋ ์ํ์ ํด์ผํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ .txtํ์ผ์ ์ด์ด์ผ ํ๋๋ฐ ์ด๋ ํ๋ก๊ทธ๋จ ์์์ ์ ๊ทผํด์ผ๋ง ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ User Mode -> Kernel mode ๋ก ์ ํ์ด ์ผ์ด๋๊ณ Kernel mode์์ .txtํ์ผ์ ์ฌ๋ ์์ ์ ์ํํ๋ค. - ๊ทธ๋ฆฌ๊ณ ์์ ์ด ๋ง๋ฌด๋ฆฌ๊ฐ๋๋ฉด User mode๋ก ์ ํ๋์ด ๋๋จธ์ง ๋ก์ง์ ์ํํ๋ค.
๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ์ ๊ณผ์ ๊ณผ ๊ฐ๋ค.
์ ์ค๋ช
์์๋ ์ด๋ป๊ฒ User mode์์ Kernel mode๋ก ๋ณํํ๋์ง ์ค๋ช
์ด ์๋์ด ์๋ค.
์ปดํจํฐ๊ฐ ์ฌ๋๋ ์๋๊ณ ์ด๋ป๊ฒ User mode์์ Kernel mode๋ก ๋ฐ๋๋ ๊ฒ์ ์ ์ ์์๊น?
์ปดํจํฐ๊ฐ mode๋ฅผ ๋ฐ๊ฟ์ผ ํ๋๊ฒ์ ์๊ฒ ํด์ฃผ๋๊ฒ์ด System call์ ์ญํ ์ด๋ค.
์ ๊ณผ์ ์ ๊ทธ๋ฆผ์ ํตํด ์ข ๋ ์์ธํ ๋งํ์๋ฉด
- ์ผ๋จ ์ฝ๋๊ฐ ์คํ๋๋ฉด User mode์์ ์คํ์ด ๋๋ค.
- .txtํ์ผ์ ์ฌ๋ ์ํ์ ํด์ผํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ .txtํ์ผ์ ์ด์ด์ผ ํ๋๋ฐ ์ด๋ ํ๋ก๊ทธ๋จ ์์์ ์ ๊ทผํด์ผ๋ง ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ User Mode์์ ํ์ผ์ ์ฌ๋ ์์ ์ ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ System call์ ์์ฒญํ๋ค. - ์์ฒญ์ ๋ฐ๊ฒ๋๋ฉด user application ์ํ๋ ์ ์ฅ์ด๋๊ณ kernel mode๋ก ๋ณ๊ฒฝ๋ํ ์์ฒญ๋ ์์ ์ OS๊ฐ ์ํํ๋ค.
- mode๊ฐ ๋ณ๊ฒฝ๋ ๋ mode์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ธ Mode Bit์ ๊ฐ์ด 1(user mode) -> 0(kernel mode)๋ก ๋ฐ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์์ ์ด ๋ง๋ฌด๋ฆฌ๊ฐ๋๋ฉด ์์ฒญํ ์์ ์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ System call ์ด return ๋๋ฉฐ Mode Bit์ ๊ฐ์ด 0(kernel mode) -> 1(user mode) ๋ก ์ ํ๋๋ฉด์ user mode๋ก ์ ํ๋๋ค.
Interrupt๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ ์ ์๋ค.
- CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์์ ๋, ์ ์ถ๋ ฅ ํ๋์จ์ด ๋ฑ์ ์ฅ์น๋ ์์ธ์ํฉ์ด ๋ฐ์ํ์ฌ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ๋ง์ดํฌ๋กํ๋ก์ธ์์๊ฒ ์๋ ค ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋งํ๋ค. Interrupt๋ ํฌ๊ฒ hardware interrupt์ software interrupt๋ก ๋๋๋ค.
Interrupt๋ hardware interrupt, software interrupt๊ฐ ์๋ค.
- hardware interrupt
- ํ๋์จ์ด๊ฐ ๋ฐ์์ํค๋ interrupt๋ก, CPU๊ฐ ์๋ ๋ค๋ฅธ ํ๋์จ์ด ์ฅ์น๊ฐ cpu์ ์๋ ค์ฃผ๊ฑฐ๋ cpu ์๋น์ค๋ฅผ ์์ฒญํ ๋ ๋ฐ์์ํจ๋ค.
- software interrupt
- ์ํํธ์จ์ด๊ฐ ๋ฐ์์ํค๋ interrupt์ด๋ค. ์ํํธ์จ์ด(์ฌ์ฉ์ ํ๋ก๊ทธ๋จ)๊ฐ ์ค์ค๋ก interrupt ๋ผ์ธ์ ์ค์ ํ๋ค. ์์ธ ์ํฉ, system call๋ฑ์ด software interrupt์ด๋ค.
Interrupt๋ ์์์ ๋ณธ๊ฒ์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ํํ์ Interrupt๊ฐ ์๋๋ฐ ์ด๋ Interrupt Vector๋ผ๋ ๊ณณ์์ ํ ์ด๋ธ ํํ๋ก 0~255๋ฒ ๊น์ง ์ด 256๊ฐ์ Interrupt๋ค์ ์ฒ๋ฆฌํ๋ ๋ฃจํด์ธ Interrupt Handler์ ์ฃผ์๋ค์ ๊ด๋ฆฌ ํ๋ค.
๊ฐ๋จํ ์์๋ฅผ ํตํด ์ ๋ฆฌํ๋ฉด ์ฐ๋ฆฌ๊ฐ ํ๋ก์ธ์ค๋ฅผ ํ๋ ์คํํ๊ณ ์๋ ์์ค์ ํค๋ณด๋ ์ ๋ ฅ์ผ๋ก Interrupt๋ฅผ ๋ฐ์์์ผฐ๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ์ฒ๋ฆฌ๊ฐ๋๋ค.
- ํค๋ณด๋ ์ ๋ ฅ ์ธํฐ๋ฝํธ ๋ฐ์
- ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค ์ ๋ณด ์ ์ฅ
- Interrupt Vector์์ ํด๋น InterruptHandler ์ฃผ์๋ฅผ ์ฐพ์
- Interrupt ์ฒ๋ฆฌ๋ฅผ ์ํด OS memory PC๊ฐ์ 3๋ฒ์์ ์ฐพ์InterruptHandler ์ฃผ์๊ฐ์ผ๋ก ๋ณ๊ฒฝ
- Interrupt ์ฒ๋ฆฌ ํ Interrupt ๋ฐ์ ์ด์ ๋ก์ง์ผ๋ก ๋์๊ฐ
Context Switching์ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ๊ฐ๋ฅํ๋ค.
- ํ๋์ ํ๋ก์ธ์ค๊ฐ CPU์์ ์ฌ์ฉ์ค์ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ธฐ ์ํด ์ด์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ณด๊ดํ๊ณ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์ ์ฌ ํ๋ ์์
๊ทธ๋ฆผ์ ๋ณด์
์์ชฝ์ ํ๋ก์ธ์ค๊ฐ ์๊ณ ์ค๊ฐ์ system call ๋๋ Interrupt๊ฐ ์๋๊ฒ์ ๋ณผ ์ ์๋ค.
์์๋๋ก ์ค๋ช ํ๋ฉด
- P0์ Process๊ฐ ์คํ ๋๊ณ ์๋ค.
- Interrupt ํน์ System call์ด ๋ฐ์ํ์ฌ P1์ Process๋ฅผ ์คํํด์ผํ๋ ์ํฉ์ด ๋ง๋ค์ด์ง๋ค.
- P0 Process์ ์ ๋ณด๊ฐ ๋ด๊ธด PCB0๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ฉด์ P0 Process๋ ์๋ฌด๊ฒ๋ ์ํํ์ง ์๋๋ค.
- ๊ทธ๋ฆฌ๊ณ P1 Process์ ์ ๋ณด๊ฐ ๋ด๊ธด PCB1์ ๋ก๋ฉ ํ๋ค.
- ๋ก๋ฉ์ด ์๋ฃ๋๋ฉด P1์ Process๊ฐ ์คํ๋๋ค.
- P1 Process์ ์์ ์ด ์๋ฃ๊ฐ ๋ฌ๋ค
- P1 Process์ ์ ๋ณด๊ฐ ๋ด๊ธด PCB1์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ์ ์ฅ์ ํ๋ ์๊ฐ P1์ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ์ํ๊ฐ ๋๋ค.
- P0 Process๊ฐ ๋ก๋ฉ๋๋ฉฐ ๋ก๋ฉ์ด ์๋ฃ๋๋ฉด P0 Process๊ฐ ์คํ๋๋ค.
์ฌ๊ธฐ์ ํ๊ฐ์ง ๋ณผ๋งํ๊ฒ์ P0,P1 Process๊ฐ ๋๋ค ์๋ฌด๊ฒ๋ ํ์ง ์๋ ์๊ฐ(idle)์ด ์๋ค๋ ๊ฒ์ด๋ค.
์์ชฝ ํ๋ก์ธ์ค๊ฐ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ์๊ฐ์ Overhead๋ผ๊ณ ๋งํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ฅํ๊ณ ๋ก๋ฉํ๋ ๊ณผ์ ์ Context Swtiching์ด๋ผ๊ณ ํ๋ฉฐ ์ ์ฌ์ง์์๋ 2๋ฒ์ Context Switching์ด ์ผ์ด๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.