๐ก๊ฐ๋ ์ดํดํ๊ธฐ
์ค๋์ ๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ์ ๋ํ์ฌ ์์๋ณผ ๊ฒ์ด๋ค.
๋จผ์ ๋๊ธฐ์, ๋น๋๊ธฐ์ ์ด์๋ถํฐ ์ดํด๋ณด์. ๋๊ธฐ์์ ์์ด๋ก Synchronized์ธ๋ฐ, ๋ฑ๋ฑ ์๊ฐ์ ๋ง์ถฐ์ง๋ค๋ ์๋ฏธ์ด๋ค.
์๋ฅผ ๋ค์ด ๋ฆฝ์ฑํฌ์์ ์ฑํฌ๋ Sync์ด๋ค. ์ ๋ชจ์๊ณผ ๋ ธ๋ ์๋ฆฌ๋ฅผ ์๊ฐ์ ๋ง์ถ๋ ๊ฒ์ด๋ ๋ฆฝ'์ฑํฌ'๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด IO์์ synchronize ๋์ด์๋ค๋ ๊ฒ์ ๋ฌด์จ ์๋ฏธ์ผ๊น? ์๋ ๊ทธ๋ฆผ์ ๋ณด์.
๋๊ธฐ์ ์ ์ถ๋ ฅ (Synchronized IO)๋ ์์ฐจ์ ์ผ๋ก ์ ์ถ๋ ฅ์ด ์ฒ๋ฆฌ๋๊ณ ์๊ณ , ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ (Asynchronized IO)์์๋ ์์๋ฅผ ์งํค์ง ์์์ฑ ์ฒ๋ฆฌ๋๊ณ ์๋ค.
์ด์ ๊ฐ์ด ์์๋ฅผ ์ง์ผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๊ธฐ์ (Synchronized), ๊ทธ๊ฒ์ ๋ณด์ฅํด์ฃผ์ง ์๋ ๊ฒ์ ๋น๋๊ธฐ์ (Asynchronous)๋ผ๊ณ ํ๋ค.
1. Synchronous์ ๊ฒฝ์ฐ, user๊ฐ ์ด๋ค ๊ฒ์ requestํ๊ณ IO๋ฅผ ์์ฒญํ์ ๋ user๋ ๊ฑฐ๊ธฐ์ ๋ฉ์ถฐ๋ฒ๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ kernel์์ IO interrupt๊ฐ ์ฌ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
2. ํ์ง๋ง Asynchronous์ ๊ฒฝ์ฐ, user๋ IO interrupt๊ฐ ์ค์ง ์์๋ ๊ทธ๋ฅ ๋ฌด์ํ๊ณ ๊ณ์ ์งํํ๊ฒ ๋๋ค.
์ด์ ์ง๊ธ๊น์ง ์ด์ผ๊ธฐํ ๊ฒ์ ์ ๋ฆฌํด๋ณด๊ณ ์ด๋ค ๊ตฌํ ๋ฐฉ์์ด ์๋์ง ์ดํด๋ณด์.
๋๊ธฐ์ ์ ์ถ๋ ฅ (Synchronized IO)
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด I/O ์์ ์ ์์ฒญํ๊ณ , I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํจ. IO์์ ์ด ์๋ฃ๋์ด์์ผ์ง๋ง ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์ด๊ฐ
- ๊ตฌํ ๋ฐฉ๋ฒ 1
- IO๊ฐ ๋๋ ๋๊น์ง CPU๋ ์๋ฌด๊ฒ๋ ์ํ๊ณ ์์. ๋งค์์ ํ๋์ IO๋ง ์ผ์ด๋ ์ ์์
- ๊ตฌํ ๋ฐฉ๋ฒ 2
- IO๊ฐ ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก๊ทธ๋จ์๊ฒ์ ์ ์ด๋ฅผ ๋นผ์์.
- ๊ทธ ํ๋ก๊ทธ๋จ์ IO ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ์ ์ค์ธ์
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ์ค
๋น๋๊ธฐ์ ์ ์ถ๋ ฅ (Asynchronized IO)
- I/O ์์ ์ ์์ฒญํ๊ณ , I/O ์์ ์ด ๋๋ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ ์ ์ด๊ฐ ๋ฐ๋ก ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์๊ฒ๋ก ๋์ด๊ฐ
๐ก ๋๊ธฐ์, ๋น๋๊ธฐ์ ๋ชจ๋ I/O์ ์๋ฃ๋ interrupt๋ก ์ค๋ค!
์์
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ์์๋ ๋๊ธฐ์, ๋น๋๊ธฐ์์ ๊ฐ๋ ์ ๋ณผ ์ ์๋ค.
์ผ์ชฝ ๊ทธ๋ฆผ(๋๊ธฐ์)์ ๋ณด๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์์ฒญ1,2,3์ด ๋ค์ด์์ ๋ ์์ฒญ1์ด ๋๋์ผ์ง ์์ฒญ2๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ทธ ํ์๋ ์์ฒญ3์ ์ฒ๋ฆฌํ๊ณ ... ์ด๋ฐ ์์ด๋ค. ์ด๋ฐ ๋ฐฉ์์ผ ๊ฒฝ์ฐ ๋ง์ฝ ์์ฒญ์ด ๋งค์ฐ ๋ง์ด ๋ค์ด์ค๋ฉด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์์๊ณ ์ฌ์ฉ์๋ ๋ฌด์์ ๋ง ๋๊ธฐ๋ง ํ์ผํ ์ ์๋ค.
๋ฐ๋ฉด ์ค๋ฅธ์ชฝ์ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ํ๋ธ ๊ทธ๋ฆผ์ ๋ณด์. ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋์ ๋ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ ํ ๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ, ๋์์ ์ฌ๋ฌ๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ ๋๊ธฐ์ ๋ฐฉ์์ผ๋ก ํ์ ๋์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ ์ ์๋ค.
Reference
https://product.kyobobook.co.kr/detail/S000001772604