๐Ÿ“— 9์ฃผ์ฐจ | ํ€ด์ฆˆ ๋Œ€๋น„

์ด์ˆœ๊ฐ„ยท2025๋…„ 5์›” 12์ผ
7

Preparing for the quiz

๋ชฉ๋ก ๋ณด๊ธฐ
8/12

๊ธฐ๋ณธ ๊ฐœ๋… ์ฃผ๊ด€์‹ ์˜ˆ์ƒ๋ฌธ์ œ 10์„ 

๊ธฐ์ค€: ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ, ๋™๊ธฐํ™” ๊ธฐ๋ฒ• ๋“ฑ์— ๊ด€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…


โ“ Q1. ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด๋ฅผ 2๊ฐ€์ง€ ์ด์ƒ ์„ค๋ช…ํ•˜์‹œ์˜ค.

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ์šด์˜์ฒด์ œ์—์„œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์‹คํ–‰ ๋‹จ์œ„์ด๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—… ํ๋ฆ„ ๋‹จ์œ„๋กœ, ์ฝ”๋“œ/๋ฐ์ดํ„ฐ/ํž™์€ ๊ณต์œ ํ•˜๊ณ , ์Šคํƒ์€ ๊ฐ๊ฐ ๊ฐ€์ง„๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ์ƒ์„ฑ๊ณผ ์ „ํ™˜ ๋น„์šฉ์ด ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋‚ฎ๋‹ค.

โ“ Q2. ์Šค๋ ˆ๋“œ์˜ ์ฃผ์š” ์ƒํƒœ(READY, RUNNING, BLOCKED)๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ ์ƒํƒœ ๊ฐ„ ์ „์ด ์กฐ๊ฑด์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • READY: CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ (์˜ˆ: thread_unblock ํ˜ธ์ถœ)
  • RUNNING: ํ˜„์žฌ CPU๋ฅผ ์ ์œ ํ•œ ์ƒํƒœ
  • BLOCKED: ์ž…์ถœ๋ ฅ ๋˜๋Š” ๋™๊ธฐํ™” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ (์˜ˆ: lock_acquire ์‹คํŒจ ์‹œ)
  • ์ƒํƒœ ์ „์ด ์˜ˆ: READY โ†’ RUNNING (schedule) / RUNNING โ†’ BLOCKED (thread_block)

โ“ Q3. ๋ฌธ๋งฅ ์ „ํ™˜(Context Switch)์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์–ธ์ œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • ๋ฌธ๋งฅ ์ „ํ™˜์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•ด ์‹คํ–‰์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋ฐœ์ƒ ์กฐ๊ฑด:

    1. ์Šค๋ ˆ๋“œ๊ฐ€ yield()๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ
    2. ์Šค๋ ˆ๋“œ๊ฐ€ block()๋  ๋•Œ
    3. ์Šค๋ ˆ๋“œ๊ฐ€ exit()ํ•˜์—ฌ ์ข…๋ฃŒ๋  ๋•Œ

โ“ Q4. ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ , ๋Œ€ํ‘œ์ ์ธ ๋™๊ธฐํ™” ๊ธฐ๋ฒ• 2๊ฐ€์ง€๋ฅผ ์“ฐ์‹œ์˜ค.

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ  ์ž์›์„ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์†์ƒ(race condition)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ ๋ฐฐ์ œ(mutex)์™€ ์ˆœ์„œ ์ œ์–ด๊ฐ€ ํ•„์š”
  • ๋Œ€ํ‘œ ๊ธฐ๋ฒ•: Lock, Semaphore, Condition Variable

โ“ Q5. Lock๊ณผ Semaphore์˜ ๊ฐœ๋…์  ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • Lock์€ ๋‹จ์ผ ์ž์› ๋ณดํ˜ธ์šฉ ๋ฎคํ…์Šค๋กœ, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ œํ•œํ•จ
  • Semaphore๋Š” ์ •์ˆ˜ํ˜• ์นด์šดํ„ฐ๋กœ ์ž์›์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, sema_down() / sema_up()์œผ๋กœ ์ ‘๊ทผ์„ ์ œ์–ด
  • ์„ธ๋งˆํฌ์–ด๋Š” ์ž์›์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ ๋ฆฌํ•จ

โ“ Q6. ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „(Priority Inversion) ๋ฌธ์ œ๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์€?

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์ ์œ ํ•˜๊ณ , ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด๋ฅผ ๊ธฐ๋‹ค๋ฆด ๋•Œ, ์ค‘๊ฐ„ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ CPU๋ฅผ ์„ ์ ํ•˜์—ฌ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ฌดํ•œ ๋Œ€๊ธฐํ•˜๋Š” ๋ฌธ์ œ
  • ํ•ด๊ฒฐ ๊ธฐ๋ฒ•: Priority Donation โ†’ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์œ ์ž์—๊ฒŒ ์ผ์‹œ์ ์œผ๋กœ ์–‘๋„ํ•จ

โ“ Q7. ์„ธ๋งˆํฌ์–ด์˜ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์‹œ์˜ค.

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • sema_down()์„ ํ˜ธ์ถœํ•˜๋ฉด ์„ธ๋งˆํฌ์–ด ๊ฐ’์ด ๊ฐ์†Œํ•˜๋ฉฐ, ๊ฐ’์ด 0์ด๋ฉด BLOCKED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค
  • sema_up()์„ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ณ , BLOCKED ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜๋ฅผ READY ์ƒํƒœ๋กœ ๊นจ์šด๋‹ค
  • ์ด๋ฅผ ํ†ตํ•ด ์ž์› ์ˆ˜ ์ œํ•œ๊ณผ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

โ“ Q8. Condition Variable์€ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€?

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • Condition Variable์€ ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค.
  • cond_wait()์„ ํ˜ธ์ถœํ•˜๋ฉด, ๋ฝ์„ ๋†“๊ณ  BLOCKED ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ
  • cond_signal() ๋˜๋Š” cond_broadcast()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๊นจ์–ด๋‚˜์„œ ๋ฝ์„ ๋‹ค์‹œ ํš๋“ํ•œ๋‹ค
  • ์ฃผ๋กœ producer-consumer ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์‚ฌ์šฉ๋จ

โ“ Q9. PintOS์—์„œ thread_yield() ํ•จ์ˆ˜๋Š” ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋ฉฐ ์–ธ์ œ ํ˜ธ์ถœ๋˜๋Š”๊ฐ€?

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • thread_yield()๋Š” ํ˜„์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ CPU๋ฅผ ์–‘๋ณดํ•˜๊ณ  READY ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๋„๋ก ํ•œ๋‹ค
  • ์ด๋Š” ๋” ๋†’์€ priority ์Šค๋ ˆ๋“œ๊ฐ€ ready ์ƒํƒœ์— ์žˆ์„ ๊ฒฝ์šฐ ์šฐ์„  ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ
  • ๋ช…์‹œ์  ํ˜ธ์ถœ ๋˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์ค‘ ํƒ€์ด๋จธ์— ์˜ํ•ด ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Œ

โ“ Q10. ๋™๊ธฐํ™” ์—†์ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ์ „์—ญ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š”?

โœ… ๋ชจ๋ฒ” ๋‹ต์•ˆ:

  • ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์ด๋‚˜ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ค‘๊ฐ„์— ๋ฎ์–ด์”Œ์›Œ์ ธ์„œ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜, ๋™์‹œ์— ์ฆ๊ฐ€ํ•˜์—ฌ ๊ฐ’์ด ๋ถ€์ •ํ™•ํ•ด์ง
  • ํ•ด๊ฒฐ๋ฒ•: Lock ๋“ฑ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์ˆœ์ฐจ์  ์ ‘๊ทผ ๋ณด์žฅ ํ•„์š”
profile
์„œํˆด์ง€์–ธ์ • ๋Š˜ ํ–‰๋™์ด ๋จผ์ €์ด๊ธฐ๋ฅผ

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

comment-user-thumbnail
2025๋…„ 5์›” 12์ผ

๋‚ด์ผ 13์‹œ์— ์ฝ์–ด์•ผ์ง€

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2025๋…„ 5์›” 13์ผ

๋ฒผ๋ฝ์น˜๊ธฐ ํ•˜๋Ÿฌ ์™”์Šต๋‹ˆ๋‹ค โšก๏ธ

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ