๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Group_Study/Operating System

[3์ฃผ์ฐจ] Mutual Exclusion Solutions (SW & HW)

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 12. 17.

Mutual Exclusion Solutions (SW & HW)

SW Solutions

Dekker's Algorithm

โœ” Two process ME๋ฅผ ๋ณด์žฅํ•˜๋Š” ์ตœ์ดˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

โœ” flag์™€ turn ๋‘˜๋‹ค ํ™œ์šฉ

Petersen's Algorithm

โœ” dekker's algorithm ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„

N-Process Mutual Exclusion

โœ” ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra)

  • ์ตœ์ดˆ๋กœ ํ”„๋กœ์„ธ์Šค n๊ฐœ์˜ ์ƒํ˜ธ๋ฐฐ์ œ ๋ฌธ์ œ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ํ•ด๊ฒฐ
  • ์‹คํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์— ํ”„๋กœ์„ธ์„œ ํ• ๋‹นํ•˜๋Š” ์„ธ๋งˆํฌ ๋ฐฉ๋ฒ•, ๊ฐ€์žฅ ์งง์€ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ ์ œ๊ณต

โœ” ํฌ๋ˆ„์Šค(Knuth)
โœ” ๋žจํฌํŠธ(lamport)
โœ” ํ•ธ์Šจ(brinch Hansen)

Dijkstra's Algorithm

โœ” Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ flag[] ๋ณ€์ˆ˜
โœ” 3๊ฐœ์˜ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์„œ ์ ‘๊ทผ

 

โœ” 1๋‹จ๊ณ„์—์„œ ์ง„์ž…์˜์‚ฌ ํ‘œ์‹œ ํ›„ turn ํ™•์ธํ•˜๋ฉด์„œ ๋Œ€๊ธฐ

โœ” 2๋‹จ๊ณ„์—์„œ in-CS์— ํ˜ผ์ž ๋‚จ์„ ๋–„๊นŒ์ง€ loop

SW solutions์˜ ๋ฌธ์ œ์ 

โœ” ์†๋„๊ฐ€ ๋Š๋ฆผ
โœ” ๊ตฌํ˜„์ด ๋ณต์žก
โœ” ME primptive ์‹คํ–‰ ์ค‘ preemption ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ณต์œ  ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ค‘์€ interrupt ์–ต์ œ๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅ(overhead)

โœ” Busy Waiting

HW solution

Synchronization Hardware

โœ” TestAndSet(TAS) instruction

  • Test์™€ Set์„ ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๊ณ„์–ด
  • Machine instruction
    • ์‹คํ–‰ ์ค‘ interrupt x (preemption ๋˜์ง€ ์•Š๋Š”๋‹ค)
  • Busy waiting

TAS instruction

โœ” target์˜ ํ˜„์žฌ๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ target์€ true๋กœ ๋ณ€๊ฒฝ
โœ” ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰

ME with TAS instruction

โœ” ๊ทธ๋Ÿฌ๋‚˜ 3๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ, bounded waiting ์กฐ๊ฑด ์œ„๋ฐฐ

  • ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ„์† ๋ชป๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค

โœ” N-Process mutual exclusion
โœ” waiting์„ ํ™œ์šฉํ•ด ๋Œ€๊ธฐ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰

HW solution์˜ ์žฅ๋‹จ์ 

โœ” ์žฅ์ : ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค

โœ” ๋‹จ์ : Busy waiting

โœ” Semaphore: OS๋ฅผ ํ™œ์šฉํ•ด busy waiting ๋ฌธ์ œ ํ•ด๊ฒฐ

๋Œ“๊ธ€