[pintOS] Project1-4. Priority Inversion Problem

์˜ˆ๋‹ˆยท2021๋…„ 2์›” 15์ผ
0

pintOSํ”„๋กœ์ ํŠธ

๋ชฉ๋ก ๋ณด๊ธฐ
4/6

๐Ÿ“… ๊ธฐ๊ฐ„ : 2021.02.08(์›”) ~ 2021.02.10(์ˆ˜)


1. ๊ณผ์ œ ๋ชฉํ‘œ

1-1. ๋ฌธ์ œ ์ƒํ™ฉ

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์€ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ˜„์ƒ์ธ
Priority inversion ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ž!!

๋ฌธ์ œ ์ƒํ™ฉ

L์ด ๋ฝ์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, H๊ฐ€ ์™€์„œ ๋ฝ์„ ์š”์ฒญํ•œ๋‹ค๋ฉด ํ˜„์žฌ ์ƒํ™ฉ์—์„œ๋Š” L์ด ๋ฝ์„ ๋ฐ˜ํ™˜ํ• ๋•Œ๊นŒ์ง€ H๊ฐ€ waiter์—์„œ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค.
๊ทผ๋ฐ ๋งŒ์•ฝ H๊ฐ€ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฝ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ์Šค๋ ˆ๋“œ M์ด ๋“ฑ์žฅํ•œ๋‹ค๋ฉด, L์€ M์—๊ฒŒ CPU๋ฅผ ๋„˜๊ฒจ์ฃผ๊ณ , M๊ณผ L์ด ๋ชจ๋‘ ์‹คํ–‰๋œ ํ›„์—์•ผ H๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๊ณ  ์‹ถ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ด ์ƒํ™ฉ์€ ๊ทธ์•ผ๋ง๋กœ ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „ ์ƒํƒœ์ด๋‹ค.


1-2. ์†”๋ฃจ์…˜

์†”๋ฃจ์…˜

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ H๊ฐ€ ์ž์‹ ์ด ๋ฝ์„ ์š”์ฒญํ•˜๋ฉด์„œ L์—๊ฒŒ ์ž์‹ ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ๋ถ€ํ•ด์ค€๋‹ค.
๊ทธ๋Ÿฌ๋ฉด M์ด ๋“ฑ์žฅํ–ˆ์„ ๋•Œ, L์ด ๋ฐ€๋ฆฌ๊ณ  M์ด ์‹คํ–‰๋˜๋ฒ„๋ฆด ์ผ๋„ ์—†๊ณ , L์ด ๋‹ค ์‹คํ–‰๋œ ํ›„์— H๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.


2. ๋ฐฐ๊ฒฝ์ง€์‹

Donation ๋ฐฉ์‹์—๋Š” multiple donation, nested donation ์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๋‚˜๋Š” donation์ด ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ํ—ท๊ฐˆ๋ ค์„œ ์™„์ „ ๋ฐ˜๋Œ€๋กœ ๊ฐœ๋…์„ ์ดํ•ดํ•œ ์ ๋„ ์žˆ์—ˆ๊ณ , ๊ณ ์ƒ์„ ๋งŽ์ด ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์œ ํŠœ๋ธŒ์—์„œ ์ด ์˜์ƒ์„ ๋ณด๊ณ  priority donation์„ ์™„์ „ํžˆ ์ดํ•ดํ•ด๋ฒ„๋ ธ๋‹ค. ํ•€ํ† ์Šค priority donation์—์„œ ๊ณ ํ†ต๋ฐ›๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์€ ๊ผญ ์ด ์˜์ƒ์„ ๋ดค์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
์œ ํŠœ๋ธŒ pintos donation 1,2,3
5๋ถ„์”ฉ 3ํŽธ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ•์˜์ธ๋ฐ, ๋ฐ˜๋“œ์‹œ ๋“ค์œผ๋ฉด์„œ ์ง์ ‘ ๊ทธ๋ ค๋ณด๊ณ  ์ƒ๊ฐํ•ด๋ณผ ๊ฒƒ์„ ์ถ”์ฒœ!

2-1. Multiple donation

์Šค๋ ˆ๋“œ๊ฐ€ ๋‘๊ฐœ ์ด์ƒ์˜ lock ๋ณด์œ  ์‹œ, ๊ฐ lock์— ์˜ํ•ด ๋„๋„ค์ด์…˜์ด ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ์ด์ „ ์ƒํƒœ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค!
์˜ˆ์‹œ๋Š” ์œ„ ์˜์ƒ์„ ๋ณด๋ฉด ์•„์ฃผ ์ž˜ ๋‚˜์˜จ๋‹ค.
์ด ์ƒํ™ฉ์—์„œ ์Šค๋ ˆ๋“œ, ๋ฝ ๊ตฌ์กฐ์ฒด๋ฅผ ๋„์‹ํ™”ํ•ด๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

2-2. Nested donation


์Šค๋ ˆ๋“œ H๊ฐ€ lock B (์Šค๋ ˆ๋“œ M ์ ์œ )๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•œ๋‹ค. ์ด๋•Œ ์Šค๋ ˆ๋“œ M์€ lock A (์Šค๋ ˆ๋“œ L ์ ์œ ) ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค.
-> ์Šค๋ ˆ๋“œ H์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ์Šค๋ ˆ๋“œ L,M์—๊ฒŒ ๋ชจ๋‘ ๋„๋„ค์ด์…˜๋˜์–ด์•ผ ํ•œ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ ์Šค๋ ˆ๋“œ, ๋ฝ ๊ตฌ์กฐ์ฒด๋ฅผ ๋„์‹ํ™”ํ•ด๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

ํ—ท๊ฐˆ๋ฆฐ๋‹ค๋ฉด! ๋ฐ˜๋“œ์‹œ ์˜์ƒ์„ ๋ณด๊ณ ์˜ค์ž! ์‚ถ์ด ํ–‰๋ณตํ•ด์ง„๋‹ค!


3. ํšŒ๊ณ 

๋ฆฌ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ํ—ท๊ฐˆ๋ ธ๋‹ค.
์„ธ๋งˆํฌ์–ด ์•ˆ์˜ waiters list, ๋„๋„ค์ด์…˜๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š” d_elem, ๋‚˜ํ•œํ…Œ ๊ธฐ๋ถ€ํ•œ ์• ๋“ค ๊ด€๋ฆฌํ•˜๋Š” donations list ๋“ฑ.. ์›๋ž˜๋„ ์Šค๋ ˆ๋“œ๋“ค์ด ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ์ฒด๋กœ ๊ด€๋ฆฌ๋˜์—ˆ๋Š”๋ฐ donation list๊นŒ์ง€ ์ถ”๊ฐ€๋˜๋ฉด์„œ, ์ˆœํšŒํ•˜๋ฉฐ ์ฐพ์„ ๋•Œ elem์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ d_elem์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๊ตฌ๋ถ„์„ ๋ชปํ•ด์„œ ํž˜๋“ค์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ, donation ๊ด€๋ จ๋œ ๊ฒฝ์šฐ ๋ชจ๋‘ d_elem์„ ์ด์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฐจ์ฐจ ์•Œ๊ฒŒ ๋๊ณ , ํ•˜๋‹ค๋ณด๋‹ˆ ์ต์ˆ™ํ•ด์กŒ๋‹ค. ๊ธ€์ด๋‚˜ ๋ง๋กœ ๋ณด๋ฉด ํ•  ๊ฒŒ ๋งŽ์ง€ ์•Š์•„๋ณด์ด์ง€๋งŒ, ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ๋”ฐ์ค˜์ ธ์•ผํ•˜๋Š” ์‚ฌํ•ญ๋“ค์ด ๊ฝค ๋งŽ๋‹ค. ์‰ฝ์ง€ ์•Š์€ ๊ณผ์ œ์˜€๋‹ค..
๋งŒ์•ฝ pintos donation ์œ ํŠœ๋ธŒ ๊ฐ•์˜๋ฅผ ๋ชฐ๋ž๋‹ค๋ฉด ๋‚˜๋Š” ์•„์ง๋„ donation์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ์ฐธ๋‹ดํ•˜๊ณ  ๋ง‰๋ง‰ํ•  ๋• ๋ฐ˜๋“œ์‹œ ์ฐพ์•„๋ณด๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž!
์ •๋ง ๋งŽ์ด ๊ณ ์ƒํ–ˆ์ง€๋งŒ, ๊ฒฐ๊ตญ์€ ํ•ด๋ƒˆ๋‹ค! ๋ฟŒ-๋“ฏ

0๊ฐœ์˜ ๋Œ“๊ธ€