ํ๋ก์ธ์ค๋?
ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค. xxx.exe๋ ํ๋ก๊ทธ๋จ์ด์ง๋ง, ํ๋ก์ธ์ค๋ ์๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๋๋ธํด๋ฆญํ์ฌ ์คํ์์ผ์ผ๋ง ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค.
์กฐ๊ธ ๋ ์ ํํ๊ฒ ๋งํ์๋ฉด,
์ผ๋ จ์ ๋ช ๋ น์ด์ ์คํ, ํน์ ์ํ๋ก ํน์ ์ง ์ด์ง๋ ์คํ์ ๋จ์์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊น? ๊ฒฐ๊ตญ ๋ ๊ฐ์ง ์ค ํ๋๊ฐ ๋ง๋ค๊ฒ ๋๋๋ฐ, ์ฒซ ๋ฒ์งธ๋ ์ธ๊ฐ์ด๋ค. ์ธ๊ฐ์ด GUI ํน์ Command Line์ ํตํ์ฌ ํ๋ก๊ทธ๋จ์ ์ํจ๋ค. ๋ ๋ฒ์งธ๋ ํ๋ก์ธ์ค์ ์ํด์๋ค. ์ด๋์ ๊ฒฝ์ฐ OS process ํน์ User Process๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
ํ๋ก์ธ์ค์ ๊ตฌ์ฑ ์์?
- ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ(code, text)
- ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
- ๊ธฐํ ์คํ์ ์ํ ์ด์์ฒด์ ์ ์์(Execution Context)
ํ๋ก์ธ์ค์ ์ํ
Main Memory์์ 0~5000๊น์ง๋ OS ๊ธฐ๋ฅ์ ๋ชจ์๋์ ์ปค๋์ด๊ณ , ๊ทธ ์์ _Dispatcher_๋ผ๋ ํจ์๊ฐ ์๋ค. _Dispatcher_๋ ํ๋์ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ํ๋ก์ธ์๋ฅผ ๋ณ๊ฒฝ(Switch)ํ๋ ์ญํ ์ ํ๋ค.
ํ๋ก์ธ์ค A๋ 5000~5012๊น์ง์ด๊ณ , ํ๋ก์ธ์ค B๋ 8000~8005, ํ๋ก์ธ์ค C๋ 12000 ~ 12011๊น์ง๋ผ๊ณ ํด๋ณด์. ์ด๋ฌํ ์ํฉ์์ ์ฐจ๋ก๋๋ก ์ฝ๋๊ฐ ์คํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๋ฐฐ์ด time share system์ ๋ฐ๋ผ์ ๊ฐ ํ๋ก์ธ์ค๋ค์ ์ผ์ ํ time slice์ ๋ฐ๋ผ ๋ฒ๊ฐ์ ๊ฐ๋ฉด์ ํ๋ก์ธ์ค๋ฅผ ์งํํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ Time out์ด ๋จ์ ๋ฐ๋ผ ํ๋์์ ์ถ๊ฐ์ ์ธ ์ฝ๋๊ฐ ๋ํด์ง์ ์ ์ ์๋ค.
์ด ์ฝ๋๋ค์ 100๋ฒ๋์ ํด๋น๋๋ ์ฝ๋๋ค๋ก, OS ๊ธฐ๋ฅ์ ์ํํ๋ ํจ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๊ทธ๋ฆผ์ ์์ธํ ๋ณด์๋ค๋ฉด ์ด๊ฒ์ด ๋ฌด์์ธ์ง ๋์น์ฑ ์ ์์ ๊ฒ์ด๋ค. ์ด๋ _Dispatcher_ํจ์์ด๋ค. ์ฆ, ํ๋ก์ธ์ค ๊ฐ์ Switch๋ฅผ ์ํด์ ์ฝ์ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด, ํ๋ก์ธ์ค A์์ ํ๋ก์ธ์ค B๋ก์ Switch๊ฐ ์ผ์ด๋ฌ๋ค. ํ์ง๋ง ํ๋ก์ธ์ค B๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ I/O Reqeust๊ฐ ์ผ์ด๋ ์ํฉ์ด๋ค. ์ด์ ๋ฐ๋ผ ํ๋ก์ธ์๋ ์๋ฌด๋ฐ ์ผ์ ํ ์ ์์ผ๋ฏ๋ก, ํ๋ก์ธ์ค๋ฅผ Switch ํด์ผ ํ๋ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค C๋ก Switch ํ๋ค.
์ด๋ฌํ ํ๋ฆ๋๋ก ์ฝ๋๊ฐ ์งํ๋๋ค๋ฉด ํ๋ก์ธ์ค A, B, C, A, C... ์์ผ๋ก ์งํ๋จ์ ์ ์ ์๋ค. ์ค์ํ ๊ฒ์ ํ๋ก์ธ์๋ ์คํํ ์ ์๋ ํ๋ก์ธ์คํํ ๊ฐ๋ค๋ ๊ฒ์ด๋ค.
๋ํ OS ๊ธฐ๋ฅ์ ์ํํ๋ ํจ์๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์ผ๋ฐ ํ๋ก์ธ์ค๋ค๊ณผ ํจ๊ป ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
Two-State Process Model
_State trasition diagram_์ ์์ ๋งํ ํ๋ก์ธ์ค์ ํ๋ฆ์ ์์๋ณด๊ธฐ ์ฝ๊ฒ ๋์ํํ ๊ฒ์ด๋ค. ๊ฐ ํ๋ก์ธ์ค๋ค์ ๊ฐ์ _State trasition diagram_์ ์ง๋๊ณ ์์ผ๋ฉฐ, _Dispatch_ํจ์๋ฅผ ํตํด _Running_์ํ๊ฐ ๋๊ฑฐ๋ _Pause_์ ์ํ์ฌ _Not Running_๋๋ ์ํ๋ฅผ ๊ฐ์ง๋ค.
ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง, ๋ค์ ์ธ ๊ฐ์ง๋ฅผ ์ฃผ์ ์ด์ ๋ก ์ผ๋๋ค.
- User Command์ ์ํด ๋ง๋ค์ด์ ธ ์ฌ์ฉ๋๊ธฐ ์ํจ
- foreground mode์ background mode๋ก ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
- ์ด๋ background mode(batch)์์๋ OS๋ ํ๋ก๊ทธ๋จ์ ์คํ์ ์กฐ๊ธ ๋ฆ์ถ๋ค.
- OS์ ์ํด ์คํ๋๋ ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํจ
- ํ๋ก๊ทธ๋จ ๋ถํ ์์ OS๊ฐ ํน์ ์์ ์ ์์ํ์ฌ ์คํ์ํค๊ธฐ ์ํจ์ด๋ค.
- ์ด๋ฅผ ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ผ๊ณ ๋ ํ๋ค.
- ์ด๋ฏธ ์กด์ฌํ๋ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํจ
- ํ๋ก์ธ์ค์ ์์ ์ด ๋ณต์กํ ๊ฒฝ์ฐ ํ์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด ๋ถ๋ดํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์ค์ํ ๊ฒ์ ๋ชจ๋ OS์ ์ํด ์์ฑ๋๋ ํ๋ก์ธ์ค๋ผ๋ ์ ์ด๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๋ ๊ฒฝ์ฐ
- ์ผ๋ฐ์ ์ธ ์ข
๋ฃ(Normal completion)
- ์ ์์ ์ผ๋ก _exit_ํจ์๊ฐ ์คํ๋์ด ์ข ๋ฃ๋๋ค.
- ๊ท์น ์๋ฐ(Protection Error)
- ํ์ฉ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ค ํ๋ ๊ฒฝ์ฐ, ์ข ๋ฃ๋๋ค.
- ๋ถ๋ชจ์ ์์ฒญ(Parent Request)
- ๋ถ๋ชจ๊ฐ ์์ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๋ ๊ฒฝ์ฐ์ด๋ค.
- ๋น์ ์์ ์ธ ์๋ฌ
- Divide by Zero, I/O ์คํจ, ์ ํด์ง์ง ์์ ๋ช ๋ น์ด ์คํ ๋ฑ
์ฌ๊ธฐ์ ์ ์์ ์ธ ์ข ๋ฃ๋ ์ผ๋ฐ์ ์ธ ์ข ๋ฃ, ๋ถ๋ชจ์ ์์ฒญ์ ์ํ ์ข ๋ฃ์ด๋ฉฐ ๋๋จธ์ง ๋ ๊ฐ๋ ๋น ์ ์์ ์ธ ์ข ๋ฃ์ด๋ค.
'๐ Knowledge > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Process Control Block์ด๋? (0) | 2024.03.09 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ํ๋ ์์๋ณด๊ธฐ (1) | 2024.03.09 |
[์ด์์ฒด์ ] ์ปค๋์ ์ข ๋ฅ์ ๊ตฌ์กฐ๋ฅผ ์์๋ณด์. (0) | 2024.03.09 |
[์ด์์ฒด์ ] ๋ถ์ฐ ์์คํ ๊ณผ System Call์ด๋? (1) | 2024.03.05 |
[์ด์์ฒด์ ] ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ Time Sharing (1) | 2024.03.05 |