J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

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

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

728x90
  • ๊ต์ฐฉ ์ƒํƒœ: https://zu-techlog.tistory.com/128
 

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

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

zu-techlog.tistory.com

  • ์ž„๊ณ„ ์˜์—ญ๊ณผ ๊ฒฝ์Ÿ ์ƒํƒœ: https://zu-techlog.tistory.com/129
 

[์šด์˜์ฒด์ œ] ์ž„๊ณ„ ์˜์—ญ(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
    • ์„ธ๋งˆํฌ์–ด๋Š” ์‹œ์Šคํ…œ ์ƒ์— ํŒŒ์ผ๋กœ ์กด์žฌ

 

 

โญ๏ธ ์ฐธ๊ณ 

  • https://incheol-jung.gitbook.io/docs/q-and-a/computer-science/undefined-1
  • https://chelseashin.tistory.com/40
728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Computer Science > ๐Ÿ”’ Operating System' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ํŽ˜์ด์ง•(Paging)๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation)  (0) 2023.03.15
[์šด์˜์ฒด์ œ] ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation)์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”(External Fragmentation)  (0) 2023.03.13
[์šด์˜์ฒด์ œ] ์ž„๊ณ„ ์˜์—ญ(Critical Section)๊ณผ ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)  (0) 2023.03.03
[์šด์˜์ฒด์ œ] ๊ต์ฐฉ ์ƒํƒœ (Dead Lock, ๋ฐ๋“œ๋ฝ)  (0) 2023.03.02
[์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„์„ ์ ํ˜•, ์„ ์ ํ˜•  (0) 2023.02.28
    'Computer Science/๐Ÿ”’ Operating System' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ํŽ˜์ด์ง•(Paging)๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation)
    • [์šด์˜์ฒด์ œ] ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation)์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”(External Fragmentation)
    • [์šด์˜์ฒด์ œ] ์ž„๊ณ„ ์˜์—ญ(Critical Section)๊ณผ ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)
    • [์šด์˜์ฒด์ œ] ๊ต์ฐฉ ์ƒํƒœ (Dead Lock, ๋ฐ๋“œ๋ฝ)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”