Computer Science/๐Ÿ”’ Operating System

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

J1Yun 2023. 3. 3. 11:14
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์„ ํ•จ

 

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

 

 

๐Ÿ’ก์ฐธ๊ณ 

728x90