IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 

Pintos Project 1-3. Priority Scheduling w/ Priority Donation

Unused 2025. 5. 13. 16:16

๊ตฐ๋Œ€๋Š” ๊ฑฐ๊พธ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์ง€๋งŒ OS ์Šค์ผ€์ค„๋ง์€ ์ž˜๋ชป ์งœ๋ฉด ๊ฑฐ๊พธ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. Credit: https://www.hankyung.com/article/2022021177567

์ธํŠธ๋กœ

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์—์„œ ์ค‘์š”ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋…์€ ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „(inversion)/๊ธฐ๋ถ€(donation)์ž…๋‹ˆ๋‹ค. ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•˜๊ณ  ์˜ค๋žซ๋™์•ˆ ๋†“์ง€ ์•Š์œผ๋ฉด, ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๋Š” ๊ณ„์† ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„ ์ƒ์† ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•œ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๋Š” ๊ทธ ๋ฎคํ…์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ƒ์†๋ฐ›์•„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•˜๋ฉด ์›๋ž˜์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ mutex์™€ semaphore, condition variable์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ์™€์ฃผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


์šฐ์„ ์ˆœ์œ„ ์—ญ์ „

์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.

Credit: https://oslab.kaist.ac.kr/pintosslides/

์‹ฑ๊ธ€์ฝ”์–ด ํ™˜๊ฒฝ์˜ ๊ธฐ๋ณธ์ ์ธ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์ •์ฑ…์„ ์ ์šฉํ•˜๋Š” OS์—์„œ ์Šค๋ ˆ๋“œ H, M, L์ด๋ผ๋Š” 3๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ ๋†’์€, ์ค‘๊ฐ„, ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ H์™€ L์€ ๋‘˜ ๋‹ค A๋ผ๋Š” ๊ณต์œ  ์ž์›์„ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค (M์€ ํ•ด๋‹น ์ž์›๊ณผ๋Š” ๋ฌด๊ด€).

  1. ๋จผ์ € L์ด ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ์ž์› A๋ฅผ ์ž ๊ทธ๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ์ดํ›„ H๊ฐ€ ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ณต์œ  ์ž์› A๋Š” ์ด๋ฏธ ์ž ๊ฒจ ์žˆ์œผ๋ฏ€๋กœ, H๋Š” block๋œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ ๋‹ค์Œ M์ด ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. OS ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ทธ ์ฆ‰์‹œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ CPU ์ œ์–ด๊ถŒ์„ M์—๊ฒŒ ๋„˜๊น๋‹ˆ๋‹ค.
  4. L์€ ๋ฏธ์ฒ˜ ์ž‘์—…์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ๊ณต์œ  ์ž์› A๋ฅผ ์ž ๊ฐ€๋†“์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  5. H๋Š” ํ•„์š”ํ•œ ๊ณต์œ  ์ž์›์„ ๊ณ„์† ์–ป์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์‹คํ–‰๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  6. ์ด์œฝ๊ณ  M์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. OS ์Šค์ผ€์ค„๋Ÿฌ๋Š” CPU ์ œ์–ด๊ถŒ์„ ๊ณต์œ  ์ž์› A๋ฅผ ์›๋ž˜ ์ ์œ ํ•˜๋˜ L์—๊ฒŒ ๋„˜๊น๋‹ˆ๋‹ค.
  7. ์ด์œฝ๊ณ  L์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. 
  8. M๊ณผ L์ด ์™„๋ฃŒ๋œ ๋‹ค์Œ์—์„œ์•ผ ๋น„๋กœ์†Œ H์˜ ์ž‘์—…์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฑฐ๊พธ๋กœ ๋Œ์•„๊ฐ€๋ฒ„๋ฆฌ๋Š” ๋ชจ์–‘์ƒˆ๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ๋ฐ”๋กœ ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ถ€

์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์€ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฐ”๋กœ ์Šค๋ ˆ๋“œ H์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์Šค๋ ˆ๋“œ L์—๊ฒŒ ํ—Œ๋‚ฉํ•˜๋Š”, ๋ง ๊ทธ๋Œ€๋กœ '์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ถ€'๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ถ€๋ž€, ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•œ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๋Š”, ๊ทธ ๋ฎคํ…์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ž„์‹œ๋กœ ์ƒ์†๋ฐ›์•„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•˜๋ฉด ์›๋ž˜์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

์œ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๋‹ค์‹œ ์„ค๋ช… ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋จผ์ € L์ด ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ์ž์› A๋ฅผ ์ž ๊ทธ๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ์ดํ›„ H๊ฐ€ ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ณต์œ  ์ž์› A๋Š” ์ด๋ฏธ ์ž ๊ฒจ ์žˆ์œผ๋ฏ€๋กœ, H๋Š” block๋œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ ๋‹ค์Œ M์ด ready list์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. OS ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ทธ ์ฆ‰์‹œ ์Šค๋ ˆ๋“œ H์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์Šค๋ ˆ๋“œ L์— ์ ์šฉ์‹œํ‚ต๋‹ˆ๋‹ค.
  4. L์€ ๊ณต์œ  ์ž์› A๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋“ค ์ค‘ ์ตœ์šฐ์„ ์œผ๋กœ ์‹คํ–‰๋˜์–ด, ์ด์œฝ๊ณ  ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
  5. H๋Š” ํ•„์š”ํ•œ ๊ณต์œ  ์ž์›์„ ํš๋“ํ•œ ๋’ค ์‹คํ–‰๋˜์–ด, ์ด์œฝ๊ณ  ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
  6. ์ด์œฝ๊ณ  M์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๊ธฐ๋ถ€ / ์ค‘์ฒฉ ๊ธฐ๋ถ€

์œ„ ์˜ˆ์‹œ๋Š” ๊ณต์œ  ์ž์› A ํ•˜๋‚˜๋งŒ ๋†“๊ณ  ๋ณด๊ธฐ์— ๋น„๊ต์  ๋‹จ์ˆœํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์—ฌ๋Ÿฌ ๊ณต์œ  ์ž์›์ด ์–ฝํžˆ๊ณ  ์ƒ์†์ด ๋‹ค๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ๊ฐ ๋‹ค์ค‘ ๊ธฐ๋ถ€ (multiple donation) ๋ฐ ์ค‘์ฒฉ ๊ธฐ๋ถ€ (nested donation)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ ๋Œ€๊ธฐ ์ž์›
H 3 (๋†’์Œ) lock A
M 2 (์ค‘๊ฐ„) lock B
L 1 (๋‚ฎ์Œ) ์—†์Œ (A์™€ B ๋ชจ๋‘ ๋ณด์œ  ์ค‘)
  1. ์Šค๋ ˆ๋“œ L์ด ์‹คํ–‰๋˜์–ด ๋จผ์ € lock A์™€ lock B๋ฅผ ๋ชจ๋‘ ํš๋“ํ•˜๊ณ , ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.
  2. ์ด๋•Œ ์Šค๋ ˆ๋“œ M์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. M์€ ์ž‘์—…์„ ์œ„ํ•ด lock B๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ lock B๋Š” ์ด๋ฏธ L์ด ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, M์€ block ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  3. ์ด์–ด์„œ ์Šค๋ ˆ๋“œ H๊ฐ€ ready list์— ๋“ค์–ด์˜ต๋‹ˆ๋‹ค. H๋Š” lock A๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ์ด ๋˜ํ•œ ํ˜„์žฌ L์ด ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ H๋„ block ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ready ์ƒํƒœ์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ, block ์ƒํƒœ์ธ ์Šค๋ ˆ๋“œ๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ž์› ๋ณด์œ ์ž(L)์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ๋ถ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • H๊ฐ€ L์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„ 3์„ ๊ธฐ๋ถ€ํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ๊ทธ ์ „์— L์ด H์—๊ฒŒ ์ž์›์„ ๋ฐ”๋กœ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด L์€ ๋จผ์ € lock B๋กœ ์ธํ•ด M์—๊ฒŒ๋„ ๋Œ€๊ธฐ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ, L์ด ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € M์ด ์ง„ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ M ์—ญ์‹œ block ์ƒํƒœ์ด๋ฏ€๋กœ, ๊ฒฐ๊ตญ H → M → L๋กœ ์ด์–ด์ง€๋Š” ๊ธฐ๋ถ€์˜ ์—ฐ์‡„๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ:

  • H๊ฐ€ M์— ์šฐ์„ ์ˆœ์œ„ 3์„ ๊ธฐ๋ถ€ํ•˜๊ณ ,
  • M๊ฐ€ L์— ์šฐ์„ ์ˆœ์œ„ 3์„ ๊ธฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ L์€ ์ž„์‹œ๋กœ ์šฐ์„ ์ˆœ์œ„ 3์„ ๋ถ€์—ฌ๋ฐ›๊ณ , lock A์™€ B ๋ชจ๋‘๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Pintos ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ตฌํ˜„ ํฌ์ธํŠธ

์ด์ œ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์„ ์œ„ํ•ด Pintos์˜ ์Šค๋ ˆ๋“œ(threads/thread.c ๋ฐ thread.h) ๋ฐ ๋™๊ธฐํ™” (threads/synch.c ๋ฐ synch.h) ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์ž‘์„ฑ ์ค‘)

 


ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

์—ฌ๊ธฐ๊นŒ์ง€ ๊ตฌํ˜„ํ•œ ๋’ค ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Priority scheduling์˜ ๋ชจ๋“  ํŒŒํŠธ๊ฐ€ ํ†ต๊ณผ๋  ์ค„ ์•Œ์•˜๊ฑด๋งŒ... priority-condvar๋Š” ๋ญ˜๊นŒ์š”? ์™œ ์‹คํŒจ์ธ๊ฐ€์š”? ํ…Œ์ŠคํŠธ๋Š” ํ•˜๋‚˜์ง€๋งŒ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๊ฐœ๋…์ด ์ข€ ์žˆ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.