์ด์ ์ฒด์ ๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์ํด์๋ ๋จผ์ ์ปดํจํฐ ์์คํ ์ด ๋์ํ๋ ๋ฐฉ์์ ์ดํดํด์ผ ํ๋ค.
์ปดํจํฐ ์์คํ ์ ๊ธฐ๋ณธ Components๋ค
- Processor(CPU)
- Main Memory
=> ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ด์ง๋ง ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฃผ ๊ธฐ์ต์ฅ์น๋ก ์ฌ์ฉ๋๋ค.
- System bus
=> CPU, ๋ฉ๋ชจ๋ฆฌ, I/O ๋ชจ๋๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต๋ก ์ญํ ์ ํ๋ค.
- I/O modules
=> ์ ์ถ๋ ฅ ์ฅ์น
Register (๋ ์ง์คํฐ)
ํ๋ก์ธ์(CPU)์์๋ ๋ ์ง์คํฐ๋ผ๋ ๋งค์ฐ ์๊ณ ๋น ๋ฅธ ์ ์ฅ์ฅ์น๊ฐ ์๋ค.
๋ ์ง์คํฐ์ ์ข ๋ฅ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋๋ค.
1. Register for 'data' I/O ( ๋ฐ์ดํฐ ์ ์ถ๋ ฅ์ ์ํ ๋ ์ง์คํฐ )
Memory address register(MAR)
: CPU๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋ ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๋์ง๋ฅผ ๋ํ๋ด๋ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ ์ง์คํฐ. ๋ฐ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋์๋ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ธฐ๋ ํ๋ค.
Memory buffer register(MBR)
: ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด์จ ๋ฐ์ดํฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ CPU์์์ ์ ์ฅ์ ํด์ผํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ CPU๋ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ๋ฐ ๊ทธ๊ฑธ ์ฐ๋ฆฌ๋ MBR์ด๋ผ๊ณ ํ๋ค.
Load์
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ์ฃผ์๋ฅผ MAR์ ๋ด์์ LOAD๋ช ๋ น์ ์คํํ๋ฉด ํด๋น ์ฃผ์์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ ํ ๊ทธ ๋ฐ์ดํฐ๋ฅผ MBR์ ์ ์ฅํ๋ค.
Store์
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ฃผ์๋ฅผ MAR์ ๋ด๊ณ , ์ ์ฅํ ๋ฐ์ดํฐ๋ MBR์ ๋ด์์ STORE๋ช ๋ น์ ์คํํ๋ฉด ํด๋น ์ฃผ์์ ์ ๊ทผํ์ฌ MBR์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
I/O address register, I/O buffer register
: ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ I/O ๋๋ฐ์ด์ค์ ์ ๊ทผํ ๋ MAR, MBR๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ ๋ ์ง์คํฐ๋ค์ด๋ค.
2. Control and Status registers ( CPU๋ฅผ ์ปจํธ๋กคํ๊ณ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ )
CPU๊ฐ ์ด๋ป๊ฒ I/O๋ฅผ ํ ๊น?
ํฐ๋
ธ์๋ง์ ๋ฐ๋ฅด๋ฉด CPU๋ ๋ฉ๋ชจ๋ฆฌ address๋ง ์๊ณ I/O์ ๊ดํด์๋ ์ ํ ๋ชจ๋ฅธ๋ค๊ณ ํ๋ค.
CPU๋ ์ฌ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์ณ์ I/O๋ฅผ ํ๋ค.
๋ชจ๋ I/O ๋๋ฐ์ด์ค๋ ๊ทธ ๋๋ฐ์ด์ค๋ฅผ ์ ์ดํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ์๋๋ฐ, ์ปจํธ๋กค๋ฌ ์์๋ ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค. ๊ทธ ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ์ฃผ์ ์์ญ์ ๋งคํ์ ํด์, CPU๊ฐ ๋งคํ๋ ๋ฉ๋ชจ๋ฆฌ์ LOADํ๊ฑฐ๋ STORE๋ฅผ ํ๋ฉด I/O ๋๋ฐ์ด์ค์ ๋ฒํผ์ ๋งคํ์ด ๋์ด ํด๋น I/O ๋๋ฐ์ด์ค์ ๋ํด LOAD์ STOREํ๋ ๊ฒ์ผ๋ก ๋ณํ๋์ด ๋์ํ๋ค.
CPU๋ ๊ทธ๋ฅ LOAD, STORE๋ฅผ ์คํํ์ ๋ฟ์ธ๋ฐ, I/O๋ฅผ ํ๊ณ ์๋ ๊ฒ์ด๋ค.
CPU์ ๋์์ ์ ์ดํ๋ค๋ ๊ฑด?
CPU๊ฐ ๋ช
๋ น์ด๋ฅผ ์ํํ๋ ค๋ฉด ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ช
๋ น์ด๋ CPU ์์ ๋ค์ด์์ง ์๋ค.
๋ช
๋ น์ด๋ ํ๋ก๊ทธ๋จ ์ฝ๋์ ์๊ณ , ๊ทธ ํ๋ก๊ทธ๋จ ์ฝ๋๋ ํ๋ก์ธ์ค ํํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ค. ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ ์ฝ๋(instruction)๋ฅผ CPU๋ก ๊ฐ์ ธ์์ ๊ทธ instruction์ CPU์์์ ์คํํ๋ ๊ฒ์ด๋ค.
CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค๋ ๊ฒ์ ํ๋ก๊ทธ๋จ์ด ์ ์ฅ๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ instruction ํ๋๋ฅผ ๊ฐ์ ธ์์ ์คํํ๊ณ ๋ ๋ค์ instruction์ ๊ฐ์ ธ์์ ์คํํ๊ณ ์ด๊ฒ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- Program Counter (PC)
CPU๊ฐ ๋ค์์ ์ด๋ ๋ช ๋ น์ด๋ฅผ ์ํํด์ผ ํ๋์ง๋ฅผ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ค.
์ด๋ CPU๊ฐ ๋ค์๋ฒ์ ๊ฐ์ ธ์์ผ ํ ๋ช
๋ น์ด๊ฐ ์ ์ฅ๋์ด ์๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ๊ฐ PC์ด๋ค.
๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋๋ฉด PC์ ์ ์ฅ๋ ์ฃผ์๋ฅผ +1 ํด์ ๋ค์์ ๊ทธ ๋ค์ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํด์ผ ํ๋ค.
- Instruction Register (IR)
: PC๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ก ๊ฐ์ instruction์ ํ๋ ๊ฐ์ ธ์ค๋๋ฐ ๊ฐ์ ธ์จ instruction์ ์ ์ฅํ๋ ๋ ์ง์คํฐ๊ฐ IR์ด๋ค.
CPU๋ IR์ ์ ์ฅ๋ instrruction์ ์ํํ๊ฒ ๋๋ค.
- Program Status Word (PSW)
Condition Codes
: ๊ฐ์ ธ์จ instruction์ ์ํํ๊ณ ์ํํ๊ณ ๋ ๊ฒฐ๊ณผ์ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ์ด๋ค.
=> ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฒ ์๋!
๋ง์ฝ - (๋นผ๊ธฐ)๋ฅผ ์ํํ๋ค๊ณ ํ๋ฉด, ๊ฒฐ๊ณผ๋ก 0์ด ๋์๋์ง, ์์๊ฐ ๋์๋์ง, ์์๊ฐ ๋์๋์ง ๋ฑ์ ์ ์ฅํจ.
=> CPU ๋ด์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด์
์ปดํจํฐ๊ฐ ๋น๊ต ์ฐ์ฐ์ ์ํํ ๋์๋ ์ฌ์ฉ๋จ. ์ปดํจํฐ๋ ๋น๊ต ์ฐ์ฐ์ - ์ฐ์ฐ์ ์ฌ์ฉํด์ ํ๊ฒ ๋๋๋ฐ, -(๋นผ๊ธฐ)๋ฅผ ์ํํ ๊ฒฐ๊ณผ ์์๋ฉด a > b, ์์๋ฉด a < b, 0์ด๋ฉด a = b๋ผ๊ณ ํ๋จํ๋ค.
์ด๋ - ์ฐ์ฐ์ ์ํํ ํ์ Condition code๋ฅผ ๋ณด๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ๋จํ๋ค.
Interrupt enable/disable
: Interrupt๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ์๋์ง ํ์ํ๋ ๋ ์ง์คํฐ
Supervisor/User mode
3. User-visible registers ( ํ๋ก๊ทธ๋จธ๋ค์ด ์ ๊ทผํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ ๋ ์ง์คํฐ )
์ด์
๋ธ๋ฆฌ์ด๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ ์ง์คํฐ์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
=> ์ ์ด๋ฐ ์ง์ ํ๋๋?
high-level language๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ ์ผ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํ์ ํด์ฃผ๋๋ฐ, ์ฌ๋์ด ์ง์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ฒ๋ณด๋ค ์ต์ ํ ๋ถ๋ถ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค.
์์ฃผ ์คํ๋๋ ๋ถ๋ถ์ ์ฝ๋๋ ์ฌ๋์ด ์ง์ ์ด์
๋ธ๋ฆฌ์ด๋ก ์ฝ๋ฉ์ ํด์ ์ต์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ๊ทธ๋ด ๋ ์ฌ์ฉํ๋ค.
Instruction Execution
: CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์ํํ๋ ๊ณผ์
ํฌ๊ฒ 2๋จ๊ณ๋ก ๋ณผ ์ ์๋ค.
1. Processor๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ instruction์ ์ฝ์ด์จ๋ค. (Fetch)
์ด๋ PC๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์์ Instruction์ ํ๋ ์ฝ์ด์จ๋ค.
์ฝ์ด์จ ํ์ PC๋ ๋ค์์ ์ํํ ๋ช ๋ น์ ๊ฐ๋ฆฌ์ผ์ผ ํ๋ค.
์ฝ์ด์จ Instruction์ Instruction Register์ ์ ์ฅํ๋ค.
2. ์ฝ์ด์จ Instruction์ ์ํํ๋ค ( IR์ ๋ค์ด์๋ Instruction์ ์ํํ๋ค. )
์ด 2๋จ๊ณ๋ฅผ ๋ชจ๋ ๋ช ๋ น์ ์ํํ ๋๊น์ง ๋ฐ๋ณตํ๋ค.

Instruction์ ์ด๋ค ํํ๋ก ๊ตฌ์ฑ๋์ด ์์๊น?

Instruction์ Opcode์ Address ๋ถ๋ถ์ผ๋ก ๋๋๋ค.
Opcode: ๋ช ๋ น์ด์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋นํธ.
0001(1) = Memory์ ์๋ ๋ฐ์ดํฐ๋ฅผ AC๋ก LOADํด๋ผ
0010(2) = AC์ ์๋ ๋ฐ์ดํฐ๋ฅผ Memory์ STOREํด๋ผ
0101(5) = Memory์ ์๋ ๋ฐ์ดํฐ๋ฅผ AC์ ADDํด๋ผ
Address: Instruction์ด ์ํ๋์ด์ผ ํ Target์ด ์ ์ฅ๋ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์.
๋ง์ฝ Opcode๊ฐ "๋ง์
" ์ด๋ผ๊ณ ํ๋ฉด, Address์๋ ๋ง์
์ ํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ค.
Instruction์ ์ํ ๊ณผ์ ์ ์์๋ฅผ ์ดํด๋ณด์.

Interrupt & Interrupt handler
CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์ํํ๊ณ ์๋ ์์ค์ ์๊ธฐ์น ์๊ฒ I/O ๋๋ฐ์ด์ค์์ ๋ช
๋ น์ด ๋ค์ด์ฌ ์ ์๋ค.
๋ง์ฝ CPU๊ฐ ๋์์์ ์คํํ์ฌ ๋ณด์ฌ์ฃผ๋ ๋ช
๋ น์ด(์ฝ๋)๋ฅผ ์ํ ์ค์ธ๋ฐ, ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ง์ธ๋ค๋ฉด? ํค๋ณด๋๋ก ํค๋ฅผ ์
๋ ฅํ๋ค๋ฉด?
ํ์ฌ ํ๊ณ ์๋ ์ผ์ด ์๋ค๊ณ ํด์ ์ด๋ฌํ ์
๋ ฅ์ ๋ฌด์ํ ์๋ ์๋ค.
์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ CPU๊ฐ ํ๋ ์ผ์ ๋ฉ์ถ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ํ์ ์๋ ํ๋ ๋ช
๋ น์ ๋ค์ ์ํํ๋๋ก ํ๋ ๋งค์ปค๋์ฆ์ด Interrupt ๋ผ๋ ๊ฐ๋
์ด๋ค.
์ด๋ ๊ฒ Interrupt๋ ์๋ฐ์ ์ผ๋ก ๋ฐ์๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค. ์๋ฐ์ ์ผ๋ก ๋ฐ์๋๋ ๋ฐ์ดํฐ๋ ๋ํ์ ์ผ๋ก ๋ง์ฐ์ค, ํค๋ณด๋๋ก ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์ด๋ค. OS ์ ์ฅ์์๋ ๋ง์ฐ์ค, ํค๋ณด๋๋ก ๋ค์ด์ค๋ ์ ๋ ฅ์ ์ธ์ ๋ค์ด์ฌ์ง ๋ชจ๋ฅด๋ ์๋ฐ์ ๋ฐ์ดํฐ์ด๋ค. Event๊ฐ ๋ฐ์ํ์์ Interrupt๋ก ๊ฐ์งํ๊ณ Interrupt handler๋ฅผ ํตํด ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค.
์๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๊ฒ ์ธ์๋ Interrupt๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค.
I/O ์ฅ์น๋ CPU๋ณด๋ค ํจ์ฌ ํจ์ฌ ๋ ๋๋ฆฌ๋ค๊ณ ํ๋ค.
CPU๊ฐ ๋ช
๋ น์ ์ํํ๊ณ ์๋๋ฐ, ๋ช
๋ น ์ค์ "๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํด์ค" ๋ผ๋ ๋ช
๋ น์ด ๋ค์ด์๋ค. CPU๋ ์ด ๋ช
๋ น์ ์ํํด์ผ ํ๋๋ฐ I/O ๋๋ฐ์ด์ค๊ฐ ๋งค์ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋์คํฌ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋์ CPU๋ ์๋ฌด๊ฒ๋ ๋ชปํ๊ณ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ง ํด์ผํ๋ค. ์ด๊ฑด ๋นํจ์จ์ ์ด๋ค. ์์คํ
์์ CPU๊ฐ ๋
ธ๋ ๊ฒ์ ํ์ฉํ ์ ์๋ค.
์ด๋ Interrupt๋ฅผ ์ฌ์ฉํ์ฌ, CPU๋ I/O ๋๋ฐ์ด์ค์ ์ ์ฅํ๋ผ๋ ๋ช
๋ น์ ๋ด๋ ค๋์ ๋ค์ CPU๋ ๋ง๋ฅ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ์๋๋ผ ๋ค๋ฅธ ์ผ์ ๊ณ์ํ๊ณ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ I/O ์ฅ์น๋ ์ ์ฅ์ ๋๋ด๋ฉด Interrupt๋ฅผ ๋ฐ์์์ผ์ CPU์๊ฒ I/O๊ฐ ๋๋ฌ์์ ์๋ ค์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด CPU๊ฐ ๋์ง ์๊ณ ๊ณ์ ์ผ์ ํ ์ ์๊ฒ ๋๋ค.
Interrupt์ ์ญํ
1. CPU๊ฐ ๋์ง์๊ฒ ๋ง๋๋ ๊ฒ
2. I/O ์ฅ์น๊ฐ ๋ง๋ค์ด๋ด๋ Event๋ฅผ ์ค์๊ฐ ์ฒ๋ฆฌ

Interrupts Disabled
: ๋ง์ฝ ์ง๊ธ CPU๊ฐ ํ๊ณ ์๋ ์ผ์ด ๋งค์ฐ ๋งค์ฐ ์ค์ํ ์ผ์ด๋ผ์ ์ ๋ ์ค๋จ๋์ด์๋ ์ ๋๋ค๋ฉด, Interrupt๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋๋ผ๋ ํ๋ ์ผ์ ๊ณ์ ์งํํด์ผ ํ๋ค. ๊ทธ๋๋ Execute๊ฐ ๋๋๋ Interrupt๋ฅผ ์ฒดํฌํ์ง ์๊ณ ๋ฐ๋ก Fetch๋ก ๋ค์ ๋์๊ฐ๋ค.
Interrupt๋ฅผ ๋ฐ์๋ ๋๋์ง ์ ๋๋์ง๋ ์ด๋ป๊ฒ ์ฒดํฌํ ๊น?
์๊น ๋ ์ง์คํฐ ์ค์ Interrupt Enable, Disable ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ๊ฐ ์์๋ค. ์ด ๋ ์ง์คํฐ์ ์ ์ฅ๋ ๊ฐ์ ๋ณด๊ณ Interrupt๋ฅผ ์ฒดํฌํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ค.
Interrupt๊ฐ ๋ฐ์ํ๋ฉด Memory์ Register์๋ ์ด๋ค ๋ณํ๊ฐ ์ผ์ด๋ ๊น

Interrupt handler๋ฅผ ํตํด Interrupt๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋๋ฉด ๋ค์ ์๋ ์ํ์ค์ด๋ ํ๋ก๊ทธ๋จ์ ์ํํ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ Interrupt๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์ํ์ค์ด๋ ํ๋ก๊ทธ๋จ์ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ Stack ๋ถ๋ถ์์ ์ ์ฅํด๋๋ค.
PC ๊ฐ์ ์ ์ฅํ๊ณ , ๋ ์ง์คํฐ์ ์ ์ฅ๋์ด ์๋ ๊ฐ๋ค์ ์ ์ฅํ๊ณ Stack Top์ ๊ฐ๋ฆฌํค๋ Pointer ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ PC ๊ฐ์ Interrupt Handler ์ฝ๋๊ฐ ์๋ y๋ก ๋ฐ๊พผ ํ ํธ๋ค๋ฌ ์ฝ๋๋ฅผ ์ํํ๋ค.
ํธ๋ค๋ฌ๋ฅผ ํตํด Interrupt๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋๋ฉด ์๋ ์ํ ์ค์ด๋ ํ๋ก๊ทธ๋จ์ ๋ค์ ์ํํ๊ธฐ ์ํด ์๊น ์ ์ฅํด๋์๋ ์ ๋ณด๋ฅผ ์ด์ฉํด ์๋ ์ํ๋ก ๋ณต๊ตฌ์์ผ์ผ ํ๋ค.
PC๊ฐ์ ์๊น ์ ์ฅํด๋ PC๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ ์ง์คํฐ์๋ ์๊น ์ ์ฅํด๋ ๋ ์ง์คํฐ ๊ฐ๋ค์ ๋ค์ ๋ถ๋ฌ์ค๊ณ , Stack Top๋ ์๊น์ Stack Top์ ๊ทธ๋๋ก ๋ณต๊ตฌํ๋ค.
๊ทธ๋ฌ๋ฉด ์ด์์์ด Interrupt๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ์ํํ๋๋๋ก ๋ค์ ์ํํ ์ ์๊ฒ ๋๋ค.
๋ง์ฝ Interrupt๊ฐ ์์๋ค๋ฉด ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๊น?

CPU ์ ์ฅ์์ ์ผ์ ์์๋ฅผ ์ดํด๋ณด๋ฉด 1 -> 4 -> Processor Wait -> 5 -> 2 -> 3
WRITE์ ๊ฐ์ I/O๊ฐ ๋ฐ์ํ๋ฉด CPU๋ I/O์ฅ์น๊ฐ ์ผ์ ๋ง์น ๋๊น์ง ์๋ฌด๊ฒ๋ ํ์ง ๋ชปํ๋ ์ฑ๋ก ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋นํจ์จ์ ์ธ ์ํฉ์ด ๋ฐ์ํ๋ค.
Interrupt๋ฅผ ์ด์ฉํ๋ฉด?

Interrupt๋ฅผ ์ด์ฉํ๋ฉด I/O ์ฅ์น๊ฐ ์ผ์ ํ๋ ๋์ CPU๋ ์๋์ ์ฝ๋๋ฅผ ์ํํ๊ณ ์๋๋ค.
๊ทธ๋ฌ๋ค I/O ์ฅ์น๊ฐ ์ผ์ ๋ง์ณค๋ค๊ณ Interrupt๋ฅผ ๋ณด๋ด๋ฉด ๋ค์ Interrupt handler ์ฝ๋์ ๋จ์ ๋ถ๋ถ์ ์ํํ๋ค.
์ด๋ ๊ฒ ๋๋ฉด CPU๊ฐ ๋์ง ์๊ณ ์ผ์ ํ ์ ์๊ฒ ๋๋ฏ๋ก ํจ์ฌ ํจ์จ์ ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ฐฉ๋ฒ์๋ ๋ฌธ์ ๊ฐ ์๋ค.

์๊น๋ I/O๊ฐ ๋๋ฆ ๋นจ๋ฆฌ ๋๋์ ์๋ก์ด I/O๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ Interrupt๊ฐ ๋ฐ์ํ๋๋ฐ
I/O๊ฐ ์์ฒญ ์ค๋ ๊ฑธ๋ ค์, I/O๊ฐ ๋๋๊ธฐ ์ ์ ๋ ๋ฒ์งธ I/O๊ฐ ๋ฐ์ํ๋ค๋ฉด?
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ ๋ I/O ์ฅ์น์๊ฒ ๋ช ๋ น์ ํด๋๊ณ ๋ ๋ค๋ฅธ ์ผ์ ์ํํ๋ฉด ๋์ง ์๋? ๋ผ๋ ์๊ฐ์ ํ ์ ์๋ค.
์ด๋ I/O ์ฅ์น๋ ์์ง๋ ์ผ์ ํ๊ณ ์๋๋ฐ, ๋ ๋ค์ ๋ช
๋ น์ ์ถ๊ฐ๋ก ์ค๋ค๋ฉด?
๋ช
๋ น์ ์์๊ฐ ์์ฌ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค.
์๋ ๊ทธ๋ฌ๋ฉด ๋ช
๋ น์ ์์๋๋ก ์ฒ๋ฆฌํ๋๋ก ํ๋ฉด ๋์ง ์๋??
I/O ์ฅ์น๋ ๋งค์ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๋๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ์ฌ๋ฆฌ๊ธฐ ์ํด ์ต์ ํ ๊ธฐ์ ์ด ๋ค์ด๊ฐ ์๋ค. ๋์คํฌ์ ํค๋๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ง์ด๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๋ค.๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ช
๋ น์ ์์๋ฅผ ๋ฐ๊ฟ์ ๋์คํฌ์ ํค๋๊ฐ ์ต๋ํ ๋ ์์ง์ด๋๋ก ํ๋ ๊ธฐ์ ์ด ์ ์ฉ๋์ด ์๋ค. (Disk Scheduling)
=> ์ด์ฉ ์ ์์ด CPU๋ I/O๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํจ.
Interrupt๊ฐ ๋ง๋ณํต์น์ฝ์ ์๋์๋ค!
๊ทธ๋ผ ์ด์ฉ ์ ์์ด CPU๊ฐ ๋๊ฒ ๋์ด์ผ ํ ๊น? ํ๋ก๊ทธ๋๋จธ ์
์ฅ์์ CPU๊ฐ ๋
ธ๋ ๊ฒ์ ์ฃ์
์ด๋ค.
๊ทธ๋์ ๋ ๋ค๋ฅธ ๋์์ ์๊ฐํด๋ธ ๊ฒ์ด "๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ"์ด๋ค.
CPU๊ฐ ํ๋์ ํ๋ก๊ทธ๋จ์ด ์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ์ํํ๋๋ก ํด์,
๋ง์ฝ Interrupt๋ฅผ ์ฌ์ฉํด๋ ์ด์ฉ ์ ์์ด ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๋ฉด ํ์ฌ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ๊ณผ ์๋ฌด ์๊ด์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ก ํ๋ฉด ๋๋ค.
long I/O wait๊ฐ ๋ฐ์ํ์ ๋, ์ด์ฉ ์ ์์ด CPU๊ฐ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๋ฉด
CPU๊ฐ ์ ํ ๊ด๋ จ์ด ์๋ ์ 3์ ํ๋ก๊ทธ๋จ์ ์ํํ๋๋ก ํ๋ ๊ฒ์ด Multiprogramming.
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ์ด ๋์์ ์ฌ๋ผ์ ์๋ ์ํ๊ฐ "๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ"
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ๋ค์ด ์ค์ CPU๋ฅผ ๋ฒ๊ฐ์ ์ฐ๋ฉฐ ๋์๊ฐ๊ณ ์์ผ๋ฉด "๋ฉํฐ ํ์คํฌ"
๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ != ๋ฉํฐ ํ์คํฌ. ๊ทธ๋ฌ๋ ๋ฉํฐ ํ์คํฌ๊ฐ ๋๊ธฐ ์ํด์๋ ๋ฐ๋์ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ์ด ๋์ด ์์ด์ผ ํจ.
๊ทธ๋ฐ๋ฐ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ๋ง ํ๋ ๊ฒฝ์ฐ๋ ์ค์ ๋ก ์๋ค. ๊ตณ์ด ์คํํ์ง๋ ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋์ ํ์๊ฐ ์์.
*๋ชจ๋ ๋ด์ฉ์ ํ์๋ํ๊ต ๊ฐ์์ฉ ๊ต์๋์ ๊ฐ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค.
'HYU > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 4. CPU Scheduling (5) | 2023.03.24 |
|---|---|
| 3. Processes and Threads (0) | 2023.03.23 |
| 2. Operating System Overview (2) (0) | 2023.03.23 |
| 2. Operating System Overview (1) (0) | 2023.03.22 |
| 1. Computer System Overview (2) (0) | 2023.03.20 |