2. Bank Account Problem(์ํ ๊ณ์ข ๋ฌธ์ )
๋๊ธฐํ์ ํ์์ฑ์ ๊ฐ์ฅ ์ ๋๋ ์ ์๋ ์ํ ๊ณ์ข ๋ฌธ์ ์ ๋ํด ์์๋ณธ๋ค.
2.1 ๋ฌธ์ ์ค๋ช
๋๊ธฐํ ๋ฌธ์ ์ค์์ ๋ํ์ ์ธ ์ํ ๊ณ์ข ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์. ์ํ์๋ ํ๋์ ๊ณ์ข์ ์ ๊ธ, ์ถ๊ธ์ ํ ์ ์๋ค. ์ฌ๊ธฐ์ ๊ณ์ข๋ ๊ณต์ ํ๋ ์์์ด๊ณ , ์ ๊ธ๊ณผ ์ถ๊ธ์ ๊ฐ๊ฐ ํ๋ก์ธ์ค๋ผ๊ณ ๋ณผ ์ ์๋ค. ๋ถ๋ชจ๋์ด ์์์๊ฒ ์ ๊ธ์ ํ๊ณ , ์์์ ์ถ๊ธ์ ํ๋ ์ํฉ์ ์๋ฐ๋ก ๊ตฌํํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ ๊ธ, ์ถ๊ธ, ์์ก์กฐํ ํจ์๋ฅผ ๋ฉค๋ฒํจ์๋ก ๊ฐ๋ ํด๋์ค๋ฅผ ๊ตฌํํ๋ค.
๋ฉค๋ฒ ๋ณ์๋ก ๊ณ์ข๋ฅผ ๊ฐ์ง๊ณ , ์ด๊ฒ์ ์์ฑํ ๋ ์ธ์๋ก ๋ฐ๋ ํด๋์ค์ด๋ค. ํด๋น ํด๋์ค์์ run()์ ์ ๊ธ์ 100๋ฒ ์ํํ๋ค.
๋ฉค๋ฒ ๋ณ์๋ก ๊ณ์ข๋ฅผ ๊ฐ์ง๊ณ , ์ด๊ฒ์ ์์ฑํ ๋ ์ธ์๋ก ๋ฐ๋ ํด๋์ค์ด๋ค. ํด๋น ํด๋์ค์์ run()์ ์ถ๊ธ์ 100๋ฒ ์ํํ๋ค.
main ํจ์์์๋ ์์์ ๋ง๋ ํด๋์ค๋ค์ ์ฌ์ฉํ์ฌ, ๊ณ์ข๋ฅผ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฐ๋ ๋๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ถ๋ชจ, ์์ ํด๋์ค์์ ๊ฐ๊ฐ ์ ๊ธ๊ณผ ์ถ๊ธ์ 100๋ฒ์ฉ ์ํํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋จ์ ์์ก์ ์กฐํํ๋ค. ์์ก์ 0์ด ๋์์ผ ํ ๊ฒ์ด๋ค.
์ด ๊ฒฐ๊ณผ๋ ์ ์์ ์ด๋ค. 100๋ฒ 1,000์์ ์ ๊ธํ๊ณ , 100๋ฒ 1,000์์ ์ถ๊ธํ๋ฉด ์์ก์ 0์์ด ๋จ๋๋ค. ์ ์ฝ๋๋ 2๊ฐ์ ์ฐ๋ ๋๊ฐ ๋์ํ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ ๋งค์ฐ ๋ฎ๋ค. ๋ฐ๋ณต์ด 100๋ฒ ๋ฐ์ ์ ์ผ์ด๋๋ ๋งค์ฐ ๊ฐ๋จํ ์ฝ๋ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
2.2 ๋๊ธฐํ ๋ฌธ์ ๋ฐ์
์ค์ ์ํฉ์์๋, ์
๊ธ, ์ถ๊ธ ๋ช
๋ น์ ๋ด๋ฆฌ๊ณ ์ด ๋ช
๋ น์ด ์ ๋ฌ๋๋๋ฐ ๊น์ง ์๊ฐ์ด ์์๋๋ค. ๊ทธ๋ฐ ์ํฉ์ ๋ง๋ค๊ธฐ ์ํด ์ถ๊ธํ๋ ๊ณผ์ ์์ temp
๋ผ๋ ํ์์๋ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ณ , +,-
๋ฅผ ์ถ๋ ฅํ๊ณ , ๋ฐ๋ณต ํ์๋ฅผ 1000๋ฒ์ผ๋ก ๋๋ ธ๋ค.
+๋ ์ ๊ธ์ ํ ๊ฒฝ์ฐ, -๋ ์ถ๊ธ์ ํ ๊ฒฝ์ฐ์ด๊ณ , ์ฃผ๋ชฉํ ์ ์ balance๊ฐ์ด 0์ด ์๋ 1000000์ด๋ผ๋ ์ ์ ์๋ ๊ฐ์ด ์ถ๋ ฅ๋์๋ค. ๋ํ ์ฌ๋ฌ๋ฒ ์คํํ ๊ฒฝ์ฐ 100000์ด๋ผ๋ ๊ฐ์ด ๊ณ ์ ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ๋ ์๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋ถ์ผ์นํ๋ฉฐ, ๋น์ผ๊ด์ ์ด๋ค. (๋น์ผ๊ด์ ์ธ ์ด์ ๋ ์ด์์ฒด์ ์์ ์ฐ๋ ๋๋ฅผ ์ค์์นญํ๋ ํจํด์ด ๋งค๋ฒ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.)
์ฝ๊ฐ์ ์๊ฐ ์ง์ฐ์ ์ค ๊ฒ๋ง์ผ๋ก๋ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ํ๋์ ๊ณต์ ์์์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๊ฐ์ง๊ฒ ๋๋ค.
2.3 ์ ๋ฐ์ํ ๊น?
์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์์ธ์ ๊ณตํต๋ณ์(common variable)์ ๋ํ ๋์ ์ ๋ฐ์ดํธ(concurrent update) ๋๋ฌธ์ด๋ค.
์ ์์ ์์ ๊ณตํต ๋ณ์๋ ๊ณ์ข์ ์์ก์ด๋ค. ์ด์ ์ ๊ทผํ๋ ํ๋ก์ธ์ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ ์๋ฐ ๋ฌธ๋ฒ์์๋ ํ ์ค์ด๋ผ ๋ฌธ์ ๊ฐ ์์ด ๋ณด์ด์ง๋ง, ๋ก์ฐ ๋ ๋ฒจ(์ด์
๋ธ๋ฆฌ์ด)๋ก ๋ด๋ ค๊ฐ๋ฉด ์ฌ๋ฌ ์ค๋ก ๊ตฌํ๋๋ค. ์๋ฅผ ๋ค์ด, balance
๋ฅผ ์
๋ฐ์ดํธ ํ๋ ํ์ด ๋ ๋ฒจ ์ฝ๋ 1์ค์ด ๋ก์ฐ ๋ ๋ฒจ์์ 3์ค๋ก ๊ตฌํ๋๋ค๊ณ ํ์.
- ๊ณต์ ๋ณ์์ธ ํ์ฌ ์์ก์ ๋ณต์ฌํ๋ค.
- ํ์ฌ ์์ก์์ ๋ช ๋ น์ ์ํํ๋ค.
- ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์์ก์ ๊ฐฑ์ ํ๋ค.
๊ทธ๋ฐ๋ฐ, parent
๊ฐ ์ํํ๋ ๋์ค์ 1000๋ฒ์ ๋ค ์ํํ์ง ๋ชปํ ์ํฉ์์ interrupt(์ด ๊ฒฝ์ฐ์๋ ์๊ฐ ์ง์ฐ์ ๊ฑธ์์ผ๋ฏ๋ก timer interrupt๊ฐ ๋๊ฒ ๋ค.)๊ฐ ๊ฑธ๋ ค 2๋ฒ ๋ผ์ธ์์ ๋ฉ์ท๋ค๊ณ ์๊ฐํด๋ณด์. parent
๊ฐ 1000์์ ์
๊ธํ์ง๋ง, ์
๋ฐ์ดํธ๊ฐ ๋์ง ์์ ์ฌ์ ํ ํ์ฌ ์์ก์ 0์ด๋ค.
์ด๋ฒ์๋ child
๊ฐ ๋ถ๋ชจ๋์ด ์ฉ๋์ ๋ฃ์ ์ค ์๊ณ ์ ๋์ ๋์ ๋ฝ๋ ์ํฉ์ ์๊ฐํด๋ณด์. ์์ก์ ํ์ธํ๋๋, ์์ง 0์ด๋ค. ๊ทธ๋์ child
๋ ๋ง์ด๋์ค ํต์ฅ์ ํตํด ๋์ ์ธ์ถํ๊ณ ํ์ฌ ์์ก์ -1000์ด ๋๋ค.
๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ, ์ ๊ธ๊ณผ ์ธ์ถ์ด๋ผ๋ ํ์๋ ํ๋ก์ธ์ค ์ ์ฅ์์ ์์์ฑ์ ๊ฐ๋ ํ์์ด๋ฏ๋ก ๋๊ธฐํ๊ฐ ํ์์ ์ด๋ค. ๊ธฐ์ต์ด ์๋๋ค๋ฉด Introduction์ ๋ณด์.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- Operating System Concepts, 9th Edition - Abraham Silberschatz