Initial Attempts to Solve Process Synchronization Problem
Last updated
Was this helpful?
Last updated
Was this helpful?
mutual exclusion ์ํธ๋ฐฐ์
ํ๋ก์ธ์ค Pi ๊ฐ critical section ๋ถ๋ถ์ ์ํ์ค์ด๋ฉด ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ ๊ทธ๋ค์ critical section ์ ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
progress
์๋ฌด๋ critical section ์ ์์ง ์์ ์ํ์์ critical section ์ ๋ค์ด๊ฐ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด critical section ์ ๋ค์ด๊ฐ๊ฒ ํด์ฃผ์ด์ผ ํ๋ค.
bounded waiting ์ ํ๋๊ธฐ
ํ๋ก์ธ์ค๊ฐ critical section ์ ๋ค์ด๊ฐ๋ ค๊ณ ์์ฒญํ ํ ๋ถํฐ ๊ทธ ์์ฒญ์ด ํ์ฉ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด critical section ์ ๋ค์ด๊ฐ๋ ํ์์ ํ๊ณ๊ฐ ์์ด์ผ ํ๋ค.
์์ฒญํ ํ์ ํน์ ์๊ฐ ์ด๋ด์๋ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค.
๋ชจ๋ ํ๋ก์ธ์ค์ ์ํ์๋๋ 0๋ณด๋ค ํฌ๋ค.
ํ๋ก์ธ์ค๋ค ๊ฐ์ ์๋์ ์ธ ์ํ์๋๋ ๊ฐ์ ํ์ง ์๋๋ค.
mutual exclusion ์ ์ถฉ์กฑํ์ง๋ง, progress ๋ ์ถฉ์กฑํ์ง ๋ชปํ๋ค.
๊ณผ์๋ณดํธ๊ฐ ๋ฐ์ํ๊ฒ ๋จ. ๋ฐ๋์ ๊ต๋๋ก ํ๋ฒ์ฉ ๋ค์ด๊ฐ์ผ ํ๋๋ฐ, ๊ทธ๊ฐ turn ์ ๋ด ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค์ผ๋ง ๋ด๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
ํน์ ํ๋ก์ธ์ค๊ฐ ๋ ๋น๋ฒํ critical section ์ ๋ค์ด๊ฐ์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
ํ๋๊ทธ๊ฐ ๋์์ ์ผ์ง ๋, ์๋ก ํ๋๊ทธ๊ฐ ์ผ์ง ์ํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๋ while ๋ฌธ ์์ผ๋ก ์ง์ ํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
mutual exclusion, progress, bounded waiting ์ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋๋ค critical section ์ ๋ค์ด๊ฐ๊ณ ์ ํ ๋, turn ์ ๋ฐ์ง๋ค.
๋๋ค ๋ค์ด๊ฐ๊ณ ์ถ์ง ์๋ค๋ฉด, turn ๋๋ก ๋ค์ด๊ฐ๋ค.
๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ : busy waiting = spin lock
๊ณ ๊ธ์ธ์ด์์๋ ํ์ฐ์ ์ผ๋ก instruction ์ด ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๊ณ ๋ฏผํด์ผํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ช ๋ น๊ณผ ์ฐ๋ ๋ช ๋ น์ ๋์์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ด๋ค.
ํ์ง๋ง ํ๋์ instruction ์ผ๋ก ๋ฐ์ดํฐ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ๋์์ ์ํํ ์ ์๋ค๋ฉด, ์ฌ์ค ๊ณ ๋ฏผํ ๋ฌธ์ ๊ฐ ์๋๋ค.
ํ๋์จ์ด์ ์ผ๋ก test & modify ๋ฅผ atomic ํ๊ฒ ์ํํ ์ ์๋๋ก ์ง์ํ๋ ๊ฒฝ์ฐ, ์์ ๋ฌธ์ ๋ ๊ฐ๋จํ ํด๊ฒฐ๋ ์ ์๋ค.
test and set a : a์ ๊ฐ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ๋์์ ์ํํ๋ ๋ช ๋ น
ํ์ง๋ง ํ๋ก๊ทธ๋๋จธ๊ฐ ์ด๋ฐ ์ผ์ ๊ณ์ ํ๋ก๊ทธ๋จ ๋ด์์ ํ๋ ๊ฒ์ ๊ต์ฅํ ๋ถํธํ ์ผ์ด๋ค. ์ด๋ ์ฐ๋ฆฌ๋ semaphore ๋ฅผ ์ด์ฉํ ์ ์๋ค.