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

[์šด์˜์ฒด์ œ] ์ž„๊ณ„ ์˜์—ญ(Critical Section)๊ณผ ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)
Computer Science/๐Ÿ”’ Operating System

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

728x90

์ž„๊ณ„ ์˜์—ญ(Critical Section)

  • ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์ˆœ์„œ ๋“ฑ์˜ ์ด์œ ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์˜์—ญ
  • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์˜์—ญ
  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ critical section์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฏธ ํ•ด๋‹น ์˜์—ญ์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด entry section์—์„œ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ exit section์œผ๋กœ๋ถ€ํ„ฐ ์ž‘์—… ์ข…๋ฃŒ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์œผ๋ฉด critical section์— ์ง„์ž…ํ•˜๋„๋ก ๋™๊ธฐํ™” ํ•„์š”
  • ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion): ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์—์„œ ์ž‘์—… ์ค‘์ด๋ผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ†ต์ œ๊ฐ€ ํ•„์š”ํ•จ
  • ์ง„ํ–‰(Progress): ์•„๋ฌด๋„ ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•˜์ง€ ๋ชปํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ ์•„๋ฌด๋„ ์ž„๊ณ„์˜์—ญ์— ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ง„์ž…ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„์ž…์‹œ์ผœ์•ผํ•จ
  • ์œ ํ•œ ๋Œ€๊ธฐ(Bounded Waiting): ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌดํ•œ์ •์œผ๋กœ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ธฐ์•„ ํ˜„์ƒ(Starvation)์ด ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ๋จ

 

โ€ป ์ฝ”๋“œ ์˜์—ญ

  • entry section
    • critical section์— ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์ง‘์ž… ํ—ˆ๊ฐ€๋ฅผ ์š”์ฒญํ•˜๋Š” ์˜์—ญ
    • ์ ‘๊ทผ ์ œ์–ด(lock)
  • critical section
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ
  • exit section
    • ์ œ์–ด(lock)์„ ํ•ด์ œํ•˜๋Š” ๋“ฑ ๋” ์ด์ƒ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋จธ๋ฌด๋ฅด์ง€ ์•Š์Œ์„ ์•Œ๋ฆฌ๋Š” ์˜์—ญ
  • remainder section
    • entry, critical, exit์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ ๋ถ€๋ถ„ ์˜์—ญ

 

 

๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)

  • ์ž„๊ณ„ ์˜์—ญ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ
  • ์ž„๊ณ„ ์˜์—ญ ๋‚ด์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›(Shared Resource)๋ฅผ ๋™์‹œ์— ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง (์ผ๊ด€์„ฑ ์ €ํ•˜)
๐Ÿ’ก๊ณต์œ  ์ž์›(Shared Resource)๋ž€?
์‹œ์Šคํ…œ ์•ˆ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•จ๊ป˜ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ ๋“ฑ์˜ ์ž์›์ด๋‚˜ ๋ณ€์ˆ˜

Ex) ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€

  1. Tread 1: read value -> 0
  2. Tread 2: read value -> 0
  3. Tread 1: increase value -> 1
  4. Tread 2: increase value -> 1 (์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๋ฒˆ ์ฆ๊ฐ€์‹œ์ผฐ์œผ๋ฏ€๋กœ 2๊ฐ€ ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์œ„์˜ ์ˆœ์„œ๋กœ ์‹คํ–‰๋  ๊ฒฝ์šฐ ๊ฐ’์ด 1๋กœ ๋ณ€๊ฒฝ)

 

๊ฒฝ์Ÿ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

  • ์ปค๋„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
    • ๋ฌธ์ œ์ƒํ™ฉ: ์ปค๋„๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ•: ์ปค๋„๋ชจ๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ disable ์‹œ์ผœ CPU ์ œ์–ด๊ถŒ์„ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ํ•จ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ปค๋„๋ชจ๋“œ๋กœ ์ง„์ž…ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘ ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
    • ๋ฌธ์ œ์ƒํ™ฉ: ํ”„๋กœ์„ธ์Šค1์ด ์ปค๋„๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋‹ค๊ฐ€ ํ• ๋‹น ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด CPU ์ œ์–ด๊ถŒ์ด ํ”„๋กœ์„ธ์Šค2๋กœ ๋„˜์–ด๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ•: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„๋ชจ๋“œ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ํ• ๋‹น ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด๋„ ๋ฌธ๋งฅ ๊ตํ™˜์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•จ
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ปค๋„ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ
    • ๋ฌธ์ œ์ƒํ™ฉ: 2๊ฐœ์˜ CPU๊ฐ€ ๋™์‹œ์— ์ปค๋„ ๋‚ด๋ถ€์˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ•: ์ปค๋„ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด Lock/Unlock์„ ํ•จ

 

โ€ป ๊ฒฝ์Ÿ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•(๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด)์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.

 

 

๐Ÿ’ก์ฐธ๊ณ 

  • https://alswhddl10.tistory.com/
  • https://gyoogle.dev/blog/computer-science/operating-system/Race%20Condition.html
  • https://sete3683.tistory.com/m/60 
  • https://velog.io/@klloo/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B2%BD%EC%9F%81-%EC%83%81%ED%83%9C-Race-Condition
728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[์šด์˜์ฒด์ œ] ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation)์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”(External Fragmentation)  (0) 2023.03.13
[์šด์˜์ฒด์ œ] ๋ฎคํ…์Šค(Mutex)์™€ ์„ธ๋งˆํฌ์–ด(Semaphore) - ๋™๊ธฐํ™”  (0) 2023.03.10
[์šด์˜์ฒด์ œ] ๊ต์ฐฉ ์ƒํƒœ (Dead Lock, ๋ฐ๋“œ๋ฝ)  (0) 2023.03.02
[์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„์„ ์ ํ˜•, ์„ ์ ํ˜•  (0) 2023.02.28
[์šด์˜์ฒด์ œ] IPC(Inter Process Communication) - ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹   (0) 2023.02.27
    'Computer Science/๐Ÿ”’ Operating System' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [์šด์˜์ฒด์ œ] ๋‚ด๋ถ€ ๋‹จํŽธํ™”(Internal Fragmentation)์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”(External Fragmentation)
    • [์šด์˜์ฒด์ œ] ๋ฎคํ…์Šค(Mutex)์™€ ์„ธ๋งˆํฌ์–ด(Semaphore) - ๋™๊ธฐํ™”
    • [์šด์˜์ฒด์ œ] ๊ต์ฐฉ ์ƒํƒœ (Dead Lock, ๋ฐ๋“œ๋ฝ)
    • [์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„์„ ์ ํ˜•, ์„ ์ ํ˜•
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

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