Computer Science/๐Ÿ”’ Operating System

[์šด์˜์ฒด์ œ] ๋ฎคํ…์Šค(Mutex)์™€ ์„ธ๋งˆํฌ์–ด(Semaphore) - ๋™๊ธฐํ™”

J1Yun 2023. 3. 10. 15:01
728x90
 

[์šด์˜์ฒด์ œ] ๊ต์ฐฉ ์ƒํƒœ (Dead Lock, ๋ฐ๋“œ๋ฝ)

๊ต์ฐฉ ์ƒํƒœ(Dead Lock, ๋ฐ๋“œ๋ฝ) ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋ฉˆ์ถ”์–ด ์žˆ๋Š” ์ƒํƒœ ํ”„๋กœ์„ธ์Šค A๋Š” ์ž์› 1์„ ๊ฐ€์ง€๊ณ ์„œ ์ž์› 2๋ฅผ ์š”๊ตฌ, ํ”„๋กœ์„ธ์Šค B๋Š” ์ž์› 2๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ์ž

zu-techlog.tistory.com

 

[์šด์˜์ฒด์ œ] ์ž„๊ณ„ ์˜์—ญ(Critical Section)๊ณผ ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)

์ž„๊ณ„ ์˜์—ญ(Critical Section) ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์ˆœ์„œ ๋“ฑ์˜ ์ด์œ ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์˜์—ญ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ

zu-techlog.tistory.com

 

๋ฎคํ…์Šค(Mutex)

  • Key์— ํ•ด๋‹นํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์†Œ์œ ํ•œ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ(์ดํ•˜ ์Šค๋ ˆ๋“œ) ๋งŒ์ด ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๊ณต์œ  ์ž์›์„ lock()์„ ํ†ตํ•ด ์ž ๊ธˆํ•˜๊ณ , unlock()์„ ํ†ตํ•ด ์ž ๊ธˆ์„ ํ•ด์ œ
  • ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋“ค์˜ ์ ‘๊ทผ์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™” ๋˜๋Š” ๋ฝ ์‚ฌ์šฉ
  • ์ž ๊ธˆ์ด ์„ค์ •๋˜๋ฉด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋Š” ์ž ๊ธˆ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ (๋™์‹œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
  • ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉ ์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋ฉด Blocking ํ›„ ๋Œ€๊ธฐ ํ๋กœ ๋ณด๋‚ด sleep ์‹œํ‚ด
  • ์ž ๊ธˆ ๋˜๋Š” ์ž ๊ธˆ ํ•ด์ œ๋ผ๋Š” ์ƒํƒœ๋งŒ์„ ๊ฐ€์ง€๋Š” Boolean ํƒ€์ž…์˜ Lock ๋ณ€์ˆ˜ ์‚ฌ์šฉ
  • ๊ณต์œ  ์ž์›์„ ์ ์œ ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋Š” Key๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ž ๊ธˆ ์„ค์ •์„ ํ•˜๊ณ , ์ž ๊ธˆ ํ•ด์ œ ์‹œ์—๋Š” Key๋ฅผ ๋‹ค์Œ ๋Œ€๊ธฐ ์Šค๋ ˆ๋“œ์—๊ฒŒ ๋ฐ˜๋‚ฉ
  • Lock์„ ๊ฑด ์Šค๋ ˆ๋“œ ๋งŒ์ด Lock์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ

๊ณผ์ • ์˜ˆ์‹œ

  1. 1๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด Key๋ฅผ ์ ์œ ํ•œ ํ›„ ๊ณต์œ  ์ž์› ์ด์šฉ
  2. 2๋ฒˆ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐ (sleep)
  3. 3๋ฒˆ ํ”„๋กœ์„ธ์Šค ๋˜ํ•œ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด 2๋ฒˆ ํ”„๋กœ์„ธ์Šค ๋‹ค์Œ ์ˆœ๋ฒˆ์œผ๋กœ ๋Œ€๊ธฐ
  4. 1๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ  Key๋ฅผ ๋ฐ˜ํ™˜
  5. 2๋ฒˆ ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋ฐ˜ํ™˜๋œ Key๋ฅผ ์ ์œ ํ•˜๊ณ  ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉ
โ€ป ์Šคํ•€๋ฝ(Spinlock)๊ณผ์˜ ์ฐจ์ด
์Šคํ•€๋ฝ(Spinlock)์€ ๋ฝ์„ ๊ฐ€์ง€๊ณ  ๊ณต์œ  ์ž์›์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์ง„์ž…์„ ์‹œ๋„ํ•˜๋ฉฐ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— CPU ๋‚ญ๋น„ ๋ฐœ์ƒ
๋ฎคํ…์Šค(Mute)๋Š” Lock ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณต์œ  ์ž์›์— ์ง„์ž…์ด ๋ถˆ๊ฐ€ํ•จ์ด ํ™•์ธ ๋˜๋ฉด ๋Œ€๊ธฐ ํ๋กœ ๋“ค์–ด๊ฐ€ sleepํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ 

 

 

์„ธ๋งˆํฌ์–ด(Semaphore)

  • ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ—ˆ์šฉ์น˜ ๋งŒํผ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ(์ดํ•˜ ์Šค๋ ˆ๋“œ)์˜ ๋™์‹œ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • 0์ด์ƒ์˜ ์ •์ˆ˜๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์„ธ๋งˆํฌ์–ด ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด wait๊ณผ signal ๊ด€๋ฆฌ
  • ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ณต์œ  ์ž์›์˜ ์ˆ˜๊ฐ€ 1๊ฐœ์ผ ๋•Œ๋Š” ์ด์ง„ ์„ธ๋งˆํฌ์–ด๋กœ ๋ฎคํ…์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • Lock์„ ๊ฑธ์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๋„ Signal์„ ๋ณด๋‚ด Lock์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ
  • ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์„ ์ด์šฉํ•  ๋•Œ ํ—ˆ์šฉ ์ ‘๊ทผ ์ˆ˜(์„ธ๋งˆํฌ์–ด ๋ณ€์ˆ˜)๋Š” 1 ๊ฐ์†Œํ•˜๊ณ , ๊ณต์œ  ์ž์›์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ๋Š” 1 ์ฆ๊ฐ€

๊ณผ์ • ์˜ˆ์‹œ

  1. ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ตœ๋Œ€ ํ—ˆ์šฉ์น˜๋ฅผ ์ •์˜ -> ํ—ˆ์šฉ์น˜: 3
  2. 1๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ -> ํ—ˆ์šฉ์น˜ 2๋กœ ๊ฐ์†Œ
  3. 2๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ -> ํ—ˆ์šฉ์น˜ 1๋กœ ๊ฐ์†Œ
  4. 3๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ -> ํ—ˆ์šฉ์น˜ 0๋กœ ๊ฐ์†Œ
  5. 4๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ -> ํ—ˆ์šฉ์น˜๊ฐ€ 0์ด๋ฏ€๋กœ ๋Œ€๊ธฐ
  6. 2๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋ชจ๋‘ ์‚ฌ์šฉ -> ํ—ˆ์šฉ์น˜ 1๋กœ ์ฆ๊ฐ€
  7. ๋Œ€๊ธฐํ•˜๋˜ 4๋ฒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ -> ํ—ˆ์šฉ์น˜ 0๋กœ ๊ฐ์†Œ

 

 

๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด์˜ ์ฐจ์ด

  • ๋™๊ธฐํ™” ๋Œ€์ƒ์˜ ๊ฐœ์ˆ˜
    • ๋ฎคํ…์Šค๋Š” ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ์˜ค์ง 1๊ฐœ์ผ ๋•Œ ์‚ฌ์šฉ
    • ์„ธ๋งˆํฌ์–ด๋Š” ๋™๊ธฐํ™” ๋Œ€์ƒ์ด 1๊ฐœ ์ด์ƒ์ผ ๋•Œ ์‚ฌ์šฉ
  • ์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฎคํ…์Šค๋Š” ์„ธ๋งˆํฌ์–ด๊ฐ€ ๋  ์ˆ˜ ์—†์Œ
    • ์ด์ง„ ์„ธ๋งˆํฌ์–ด(Binary Semaphore)๋Š” ๋ฎคํ…์Šค์ฒ˜๋Ÿผ ๋™์ž‘
  • ์ž์› ์†Œ์œ  ๊ฐ€๋Šฅ ์—ฌ๋ถ€
    • ๋ฎคํ…์Šค๋Š” Lock์„ ํ†ตํ•ด ์ž์›์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ๊ณผ ๊ทธ ์ฑ…์ž„์„ ๊ฐ€์ง
    • ์„ธ๋งˆํฌ์–ด๋Š” ์ž์›์„ ์†Œ์œ ํ•  ์ˆ˜ ์—†์Œ
  • ์ž ๊ธˆ ํ•ด์ œ ์ฃผ์ฒด
    • ๋ฎคํ…์Šค๋Š” Lock์„ ํ•œ(์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง„) ์Šค๋ ˆ๋“œ๋งŒ์ด ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ
    • ์„ธ๋งˆํฌ์–ด๋Š” Lock์„ ํ•˜์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๋„ Signal์„ ํ†ตํ•ด ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ
  • Clean Up
    • ๋ฎคํ…์Šค๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์ž๋™์œผ๋กœ Clean Up
    • ์„ธ๋งˆํฌ์–ด๋Š” ์‹œ์Šคํ…œ ์ƒ์— ํŒŒ์ผ๋กœ ์กด์žฌ

 

 

โญ๏ธ ์ฐธ๊ณ 

728x90