์ฐ์ ์์๊ฐ ๋์ ์ฐ๋ ๋๊ฐ ์ฐ์ ์์ ๋ฎ์ ์ฐ๋ ๋๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ์์ธ
Priority inversion
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์!!
๋ฌธ์ ์ํฉ
L์ด ๋ฝ์ ์ ์ ํ๊ณ ์๋๋ฐ, H๊ฐ ์์ ๋ฝ์ ์์ฒญํ๋ค๋ฉด ํ์ฌ ์ํฉ์์๋ L์ด ๋ฝ์ ๋ฐํํ ๋๊น์ง H๊ฐ waiter์์ ๋๊ธฐํด์ผ ํ๋ค.
๊ทผ๋ฐ ๋ง์ฝ H๊ฐ ๋๊ธฐํ๊ณ ์๋๋ฐ, ๋ฝ์ ํ์๋ก ํ์ง ์๋ ์ค๋ ๋ M์ด ๋ฑ์ฅํ๋ค๋ฉด, L์ M์๊ฒ CPU๋ฅผ ๋๊ฒจ์ฃผ๊ณ , M๊ณผ L์ด ๋ชจ๋ ์คํ๋ ํ์์ผ H๊ฐ ์คํ๋๋ค.
์ฐ์ ์์๋๋ก ์ค๋ ๋๋ฅผ ์คํ์์ผ์ฃผ๊ณ ์ถ์ ์ฐ๋ฆฌ์๊ฒ ์ด ์ํฉ์ ๊ทธ์ผ๋ง๋ก ์ฐ์ ์์ ์ญ์
์ํ์ด๋ค.
์๋ฃจ์
์ฐ์ ์์๊ฐ ๋์ H๊ฐ ์์ ์ด ๋ฝ์ ์์ฒญํ๋ฉด์ L์๊ฒ ์์ ์ ์ฐ์ ์์๋ฅผ ๊ธฐ๋ถํด์ค๋ค.
๊ทธ๋ฌ๋ฉด M์ด ๋ฑ์ฅํ์ ๋, L์ด ๋ฐ๋ฆฌ๊ณ M์ด ์คํ๋๋ฒ๋ฆด ์ผ๋ ์๊ณ , L์ด ๋ค ์คํ๋ ํ์ H๊ฐ ์คํ๋ ์ ์๋ค.
Donation ๋ฐฉ์์๋ multiple donation, nested donation ์ด๋ ๊ฒ ๋๊ฐ์ง๊ฐ ์๋ค. ๋๋ donation์ด ๋๋ฌด ์ด๋ ต๊ณ ํท๊ฐ๋ ค์ ์์ ๋ฐ๋๋ก ๊ฐ๋
์ ์ดํดํ ์ ๋ ์์๊ณ , ๊ณ ์์ ๋ง์ด ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ ์ ํ๋ธ์์ ์ด ์์์ ๋ณด๊ณ priority donation์ ์์ ํ ์ดํดํด๋ฒ๋ ธ๋ค. ํํ ์ค priority donation์์ ๊ณ ํต๋ฐ๊ณ ์๋ ๋ถ๋ค์ ๊ผญ ์ด ์์์ ๋ดค์ผ๋ฉด ์ข๊ฒ ๋ค.
์ ํ๋ธ pintos donation 1,2,3
5๋ถ์ฉ 3ํธ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฐ์์ธ๋ฐ, ๋ฐ๋์ ๋ค์ผ๋ฉด์ ์ง์ ๊ทธ๋ ค๋ณด๊ณ ์๊ฐํด๋ณผ ๊ฒ์ ์ถ์ฒ!
์ค๋ ๋๊ฐ ๋๊ฐ ์ด์์ lock ๋ณด์ ์, ๊ฐ lock์ ์ํด ๋๋ค์ด์
์ด ๋ฐ์ ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์ด์ ์ํ์ ์ฐ์ ์์๋ฅผ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ค!
์์๋ ์ ์์์ ๋ณด๋ฉด ์์ฃผ ์ ๋์จ๋ค.
์ด ์ํฉ์์ ์ค๋ ๋, ๋ฝ ๊ตฌ์กฐ์ฒด๋ฅผ ๋์ํํด๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
์ค๋ ๋ H๊ฐ lock B (์ค๋ ๋ M ์ ์ )๋ฅผ ์ป๊ธฐ ์ํด ๋๊ธฐํ๋ค. ์ด๋ ์ค๋ ๋ M์ lock A (์ค๋ ๋ L ์ ์ ) ๋ฅผ ์ป๊ธฐ ์ํด ๋๊ธฐํ๊ณ ์๋ค.
-> ์ค๋ ๋ H์ ์ฐ์ ์์๋ ์ค๋ ๋ L,M์๊ฒ ๋ชจ๋ ๋๋ค์ด์
๋์ด์ผ ํ๋ค.
์ด ์ํฉ์์ ์ค๋ ๋, ๋ฝ ๊ตฌ์กฐ์ฒด๋ฅผ ๋์ํํด๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
ํท๊ฐ๋ฆฐ๋ค๋ฉด! ๋ฐ๋์ ์์์ ๋ณด๊ณ ์ค์! ์ถ์ด ํ๋ณตํด์ง๋ค!
๋ฆฌ์คํธ๊ฐ ๋๋ฌด ๋ง์์ ํท๊ฐ๋ ธ๋ค.
์ธ๋งํฌ์ด ์์ waiters list, ๋๋ค์ด์
๋ผ๋ฆฌ ์ฐ๊ฒฐํ๋ d_elem, ๋ํํ
๊ธฐ๋ถํ ์ ๋ค ๊ด๋ฆฌํ๋ donations list ๋ฑ.. ์๋๋ ์ค๋ ๋๋ค์ด ๋ฆฌ์คํธ ๊ตฌ์กฐ์ฒด๋ก ๊ด๋ฆฌ๋์๋๋ฐ donation list๊น์ง ์ถ๊ฐ๋๋ฉด์, ์ํํ๋ฉฐ ์ฐพ์ ๋ elem์ ์ฌ์ฉํด์ผํ๋์ง d_elem์ ์ฌ์ฉํด์ผํ๋์ง ๊ตฌ๋ถ์ ๋ชปํด์ ํ๋ค์๋ค.
ํ์ง๋ง, donation ๊ด๋ จ๋ ๊ฒฝ์ฐ ๋ชจ๋ d_elem์ ์ด์ฉํ๋ค๋ ๊ฒ์ ์ฐจ์ฐจ ์๊ฒ ๋๊ณ , ํ๋ค๋ณด๋ ์ต์ํด์ก๋ค. ๊ธ์ด๋ ๋ง๋ก ๋ณด๋ฉด ํ ๊ฒ ๋ง์ง ์์๋ณด์ด์ง๋ง, ์ง์ ๊ตฌํํด๋ณด๋ฉด ๋ฐ์ค์ ธ์ผํ๋ ์ฌํญ๋ค์ด ๊ฝค ๋ง๋ค. ์ฝ์ง ์์ ๊ณผ์ ์๋ค..
๋ง์ฝ pintos donation ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ชฐ๋๋ค๋ฉด ๋๋ ์์ง๋ donation์ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ์ ๊ฒ์ด๋ค. ์ฐธ๋ดํ๊ณ ๋ง๋งํ ๋ ๋ฐ๋์ ์ฐพ์๋ณด๋ ์ต๊ด์ ๋ค์ด์!
์ ๋ง ๋ง์ด ๊ณ ์ํ์ง๋ง, ๊ฒฐ๊ตญ์ ํด๋๋ค! ๋ฟ-๋ฏ