๐ค ์ด์์ฒด์ - ๋ฉํฐํ์คํน, ๋ฉํฐ์ค๋ ๋ฉ, ๋ฉํฐํ๋ก์ธ์ฑ
์ฉ์ด ์ ๋ฆฌ
ํ๋ก๊ทธ๋จ(program)
์ปดํจํฐ๊ฐ ์คํํ ์ ์๋ ๋ช ๋ น์ด๋ค์ ์งํฉ
ํ๋ก์ธ์ค(Process)
์ปดํจํฐ์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์๋ฏธํจ.
๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ ๋
๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
์ ํ ๋น ๋ฐ์.
๋ช ๋ น์ด๋ค๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง.
CPU(Central Processing Unit)
๋ช ๋ น์ด๋ฅผ ์คํํ๋ ์ฐ์ฐ ์ฅ์น
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(main memory)
ํ๋ก์ธ์ค๊ฐ CPU์์ ์คํ๋๊ธฐ ์ํด ๋๊ธฐํ๋ ๊ณณ
IO(Input/output)
ํ์ผ์ ์ฝ๊ณ ์ฐ๊ฑฐ๋ ๋คํธ์ํฌ์ ์ด๋๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ
์ ์ถ๋ ฅ ์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ฑฐ๋ ๋ฐ๋ ๊ฒ
๋จ์ผ ํ๋ก์ธ์ค ์์คํ
ํ ๋ฒ์ ํ๋์ ํ๋ก๊ทธ๋จ๋ง ์คํ๋จ
๋จ์
Program1์ด ์์ ์ ํ๊ณ IO ์์ ์ ํ๋ ๋์ CPU๋ ์์ ์ ํ์ง ์์. IO์์ ์ ๋๋ด๊ณ ๋ค์ Program1์ด ์์ ์ ํ๋ค IO ์์ ์ ํ๋ฉด CPU๋ ๋์ํ์ง ์์.
์ฆ, CPU ์ฌ์ฉ๋ฅ ์ด ์ข์ง ์์
ํด๊ฒฐ์ฑ
- ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ๋์์ ์คํ์ํด. IO ์์ ์ด ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU์์ ์คํ๋จ.
ํด๊ฒฐ์ฑ ์ ์์
ํด๋น ๊ทธ๋ฆผ์ ๋จ์ผ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ํ๊ณ Program1์ด IO ์์ ์ค์ด๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ธ Program2๊ฐ CPU์์ ์์ ํ๋ ๊ฒ์ ๋ฐ๋ณตํจ.
์ด๋ฌํ ์์คํ ์ ๋ฉํฐํ๋ก๊ทธ๋๋ฐ(multiprogramming)์ด๋ผ๊ณ ํจ.
๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ(multiprogramming)
์ฌ๋ฌ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ์ด ๋์์ ์คํ๋จ.
๋ชฉ์
- CPU ์ฌ์ฉ๋ฅ ์ ๊ทน๋ํ ์ํค๋ ๊ฒ
๋จ์
CPU ์ฌ์ฉ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๊ณ์ ๋๊ธฐํ๊ฒ ๋จ.
Program1์ด CPU์์ ๋ง์ ์๊ฐ์ ์์ํ๋ค๋ฉด Program2๋ Program1์ด ์์ ์ ๋๋ด์ผ๋ง ์ดํ์ ์ฌ์ฉํ ์ ์๊ฒ ๋จ.
ํด๊ฒฐ์ฑ
- ํ๋ก์ธ์ค๋ ํ๋ฒ CPU๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ์งง์ ์๊ฐ(=quantum)๋ง CPU์์ ์คํ๋๋๋ก ํ๊ธฐ
ํด๊ฒฐ์ฑ ์ ์์
ํด๋น ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด CPU๋ฅผ ์ฌ์ฉํ ๋ ์งง์ ์๊ฐ๋์ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์คํ๋๊ฒ ํจ.
์ด๋ฌํ ์์คํ ์ ๋ฉํฐํ์คํน(multitasking)์ด๋ผ๊ณ ํจ.
๋ฉํฐํ์คํน(multitasking)
์๋ต์ฑ์ด ์ ์ข์ ์ ์๋ค๋ ๋ฉํฐํ๋ก๊ทธ๋ฐ์ ๋จ์ ์ ๋ณด์.
๋ชฉ์
ํ๋ก์ธ์ค์ ์๋ต ์๊ฐ์ ์ต์ํ ์ํค๋ ๊ฒ
ํ๋ก์ธ์ค๋ค์ CPU ์ฌ์ฉ ์๊ฐ์ ์์ฃผ ์๊ฒ ์ชผ๊ฐ์ ํ๋ก์ธ์ค๋ค์ด ๊ต๋๋ก ์คํํ๊ฒ ํ๋ ๊ฒ. ์ฆ, ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์คํํด๋ ์ฆ๊ฐ์ ์ธ ๋ฐ์์ ๋ฐ์ ์ ์๋๋ก ํจ.
๋จ์
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๊ฑด ๊ฐ๋ฅํด์ก์ง๋ง ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ์ง๋ ๋ชปํจ.
ํ๋ก์ธ์ค์
์ปจํ ์คํธ ์ค์์นญ
์ ๋ฌด๊ฑฐ์.์ปจํ ์คํธ ์ค์์นญ
: ์์ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋์ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๊ต์ฒด๋๋ ๊ณผ์ ์ ๋งํจ.
ํ๋ก์ธ์ค๋ผ๋ฆฌ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๊น๋ค๋ก์.
- ํ๋ก์ธ์ค๋
๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
์ ๊ฐ์ง. 2๊ฐ์ ํ๋ก๊ทธ๋จ์ ์คํ์ํจ๋ค๊ณ ํ๋ฉด ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ฏ๋ก ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๊น๋ค๋ก์.
- ํ๋ก์ธ์ค๋
ํ๋์ CPU ์ฑ๋ฅ์ ๊ณ์ ๋ฐ์ ์ํค๋ ๊ฒ์ด ๋ฐ์ด ๋ฑ์ ์ด์๋ก ์ด๋ ค์ฐ๋๊น ํ๋์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ๋ณด๋ค ํ CPU ์์ 2๊ฐ์ ์ฝ์ด๋ฅผ ๋ฌ์ ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐฉํฅ์ผ๋ก ์ ํํจ. ๋ฐ๋ผ์ ๋์ผ ์ฝ์ด๊ฐ ๋์ด.
์ฐ๋ ๋(Thread)
๋ฑ์ฅ ๋ฐฐ๊ฒฝ : ํ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ค์ ๋์์ ์ํ์ํค๊ณ ์ถ์๊ธฐ ๋๋ฌธ
๋ฐ๋ผ์ ํ๋ก์ธ์ค๋ ํ ๊ฐ ์ด์์ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์์.
CPU์์ ์คํ๋๋ ๋จ์(unit of execution)
๊ฐ์ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ค๋ผ๋ฆฌ ์ปจํ
์คํธ ์ค์์นญ
์ด ๊ฐ๋ฒผ์.
์ปจํ ์คํธ ์ค์์นญ
: ์์ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋์ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๊ต์ฒด๋๋ ๊ณผ์ ์ ๋งํจ.
์ค๋ ๋๋ ์์ ์ด ์ํ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํจ.
์ฝ์ด๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ
์ถ์ฒ : ์ด๋ฏธ์ง ์ถ์ฒ
์ฝ์ด๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ
์ถ์ฒ : ์ด๋ฏธ์ง ์ถ์ฒ
- ์ฆ ๋ณ๋ ฌ์ ์ผ๋ก ์ค๋ ๋๊ฐ ์คํ๋๋ ๊ฑฐ๋๊น ๋์์ ์คํ๋๋ค.
์ด๋ฐ ์ข ๋ฅ์ ์์คํ ์ ๋ฉํฐ์ค๋ ๋ฉ(multithreading)์ด๋ผ๊ณ ํ๋ค.
๋ฉํฐ์ค๋ ๋ฉ(multithreading)
ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ ๊ฐ ์ด์์ ์ค๋ ๋๋ฅผ ๊ฐ์ง๋ฉด์ ์คํ๋๋ ๋ฐฉ์. ์ด๋๋ถํฐ CPU์์ ์คํ๋๋ ๊ธฐ๋ณธ ๋จ์๋ ํ๋ก์ธ์ค๊ฐ ์๋๋ผ ์ค๋ ๋๊ฐ ๋๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํจ.
๋ชฉ์
ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ฌ ์์ ์ ์คํํ๋ ๊ฒ
- ์ฌ๊ธฐ์ ์ฌ๋ฌ ์์ ์ ์ง์ ์ ์์ ์ฒ๋ผ ์ฐ๋ ๋๋ค์ ํตํด์ ์คํ๋๋ ๊ฒ์ ๋งํจ.
ํ์ฅ๋ ๋ฉํฐํ์คํน ๊ฐ๋
์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์์ฃผ ์งง๊ฒ ์ชผ๊ฐ์ง CPU time์ ๋๋ ๊ฐ๋ ๊ฒ
๋ฉํฐํ๋ก์ธ์ฑ(multiprocessing)
๋ ๊ฐ ์ด์์ CPU๋ ํน์ ์ฑ๊ธ CPU๋ผ๋ ๋ฉํฐ ์ฝ์ด์ธ ๊ฒฝ์ฐ. ์ฆ, ๋ณ๋ ฌ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ ํ๋์จ์ด์ธ ๊ฒฝ์ฐ
๐ ์์ 1) ์ฑ๊ธ์ฝ์ด CPU์ ์ฑ๊ธ-์ค๋ ๋ ํ๋ก์ธ์ค ๋ ๊ฐ์ผ ๊ฒฝ์ฐ
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โญ |
๋ฉํฐ์ค๋ ๋ฉ | โ |
๋ฉํฐํ๋ก์ธ์ฑ | โ |
ํ๋ก์ธ์ค 2๊ฐ๊ฐ ํ๋์ CPU๋ฅผ ๋๋์ด์ ์ฌ์ฉํด์ผ ๋๋ฏ๋ก ๋ฉํฐ ํ์คํน์ด๋ค.
๋ฌธ์ ์ ์ฑ๊ธ-์ค๋ ๋๋ผ๊ณ ๋์์๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ์ค๋ ๋ฉ์ด ์๋๋ค.
๋ฉํฐํ๋ก์ธ์ฑ์ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ ์ฝ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ์๋๋ค.
๐ ์์ 2) ์ฑ๊ธ์ฝ์ด CPU์ ๋์ผ-์ค๋ ๋ ํ๋ก์ธ์ค ํ ๊ฐ
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โญ |
๋ฉํฐ์ค๋ ๋ฉ | โญ |
๋ฉํฐํ๋ก์ธ์ฑ | โ |
CPU 1๊ฐ์ Thread 2๊ฐ๊ฐ ๋๋์ด ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ๋ฉํฐํ์คํน์ด๋ค.
๋ฌธ์ ์ ๋์ผ-์ฐ๋ ๋๋ผ๊ณ ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ค๋ ๋ฉ์ด๋ค.
CPU๊ฐ 1๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ๋ก์ธ์ฑ์ ์๋๋ค.
๐ ์์ 3) ๋์ผ์ฝ์ด CPU์ ์ฑ๊ธ-์ค๋ ๋ ํ๋ก์ธ์ค ๋ ๊ฐ
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โ |
๋ฉํฐ์ค๋ ๋ฉ | โ |
๋ฉํฐํ๋ก์ธ์ฑ | โญ |
์ฝ์ด๋ฅผ ๊ฐ์ง๊ณ ๊ฒฝํฉํ๋ ๊ฒ์ด ์๋ฌด๊ฒ๋ ์๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ์คํน์ ์๋๋ค.
์ฑ๊ธ-์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ค๋ ๋ฉ์ ์๋๋ค.
์ฝ์ด๊ฐ 2๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ๋ก์ธ์ฑ์ ๋ง๋ค.
๐ ์์ 4) ๋์ผ์ฝ์ด CPU์ ๋์ผ-์ค๋ ๋ ํ๋ก์ธ์ค ํ ๊ฐ
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โ |
๋ฉํฐ์ค๋ ๋ฉ | โญ |
๋ฉํฐํ๋ก์ธ์ฑ | โญ |
์ฝ์ด์ Thread๊ฐ 1:1 ๋งคํ์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ์คํน์ ์๋๋ค.
๋์ผ-์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ค๋ ๋ฉ์ด ๋ง๋ค.
์ฝ์ด๊ฐ 2๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ๋ก์ธ์ฑ์ด ๋ง๋ค.
๐ ์์ 4) ๋์ผ์ฝ์ด CPU์ ๋์ผ-์ค๋ ๋ ํ๋ก์ธ์ค ๋ ๊ฐ
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โญ |
๋ฉํฐ์ค๋ ๋ฉ | โญ |
๋ฉํฐํ๋ก์ธ์ฑ | โญ |
์ฝ์ด๊ฐ ๋ค ๊ฒฝํฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ์คํน์ด ๋ง๋ค.
๋์ผ-์ค๋ ๋์ด๋ฏ๋ก ๋ฉํฐ์ค๋ ๋ฉ์ด ๋ง๋ค.
์ฝ์ด๊ฐ 2๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐํ๋ก์ธ์ฑ์ด ๋ง๋ค.
์ข ๋ฅ | ์ ๋ต |
---|---|
๋ฉํฐํ์คํน | โญ |
๋ฉํฐ์ค๋ ๋ฉ | โญ |
๋ฉํฐํ๋ก์ธ์ฑ | โญ |
์ฝ์ด ํ๋๋น 2๊ฐ์ ์ค๋ ๋๊ฐ ๊ฒฝํฉํ๊ณ ์์ผ๋ฏ๋ก ๋ฉํฐํ์คํน์ด ๋ง๋ค.
๋์ผ-์ค๋ ๋์ด๋ฏ๋ก ๋ฉํฐ์ค๋ ๋ฉ์ด ๋ง๋ค.
CPU์ ์ฝ์ด๊ฐ 2๊ฐ์ด๋ฏ๋ก ๋ฉํฐํ๋ก์ธ์ฑ์ด ๋ง๋ค.