Search
Duplicate
โš™๏ธ

Race Condition

์ƒ์„ฑ์ผ
2023/04/06 03:25
ํƒœ๊ทธ
OS

Race Condition

Race Condition ์ด๋ž€, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต ์ž์›์„ ๋™์‹œ ์ ‘๊ทผํ•˜์—ฌ ์ฝ๊ฑฐ๋‚˜, ์“ฐ๋Š” ๊ฒฝ์šฐ, ์–ด๋–ค ์ˆœ์„œ๋กœ ์ ‘๊ทผํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ์„œ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ์ด๋‹ค.
์ฆ‰, ๊ณตํ†ต ์ž์›์„ ๋†“๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํƒœ์ด๋‹ค.
โ†’ Race(๊ฒฝ์Ÿ)์˜ ์˜๋ฏธ๊ฐ€ ๊ทธ๋Œ€๋กœ ํ•จ์ถ•๋˜์–ด ์žˆ๋‹ค.

ย Critical Section Problem

โ€ข
์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณต์œ  ์ž์›์„ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ด๋‹ค.
โ€ข
Critical Section ์ด๋ž€, ๊ฐ ํ”„๋กœ์„ธ์Šค์— ์กด์žฌํ•˜๋Š” ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์ด๊ณ , Race Condition ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
๋งŒ์•ฝ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์— ์žˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ์ฝ”๋“œ ์˜์—ญ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.
โ€ข
Critical Section Problem ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  3๊ฐ€์ง€ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
โ—ฆ
Mutual Exclusion(์ƒํ˜ธ ๋ฐฐ์ œ) : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์„ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ทธ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
Progress : ํ˜„์žฌ Critical Section ์— ์ ‘๊ทผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, Critical Section ์— ๋“ค์–ด๊ฐ€๊ฒŒ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
โ—ฆ
Bounded Waiting(์œ ํ•œ ๋Œ€๊ธฐ) : ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์— ๋“ค์–ด๊ฐ€๋ ค๊ณ  ์š”์ฒญํ•œ ํ›„๋ถ€ํ„ฐ ์š”์ฒญ์ด ํ—ˆ์šฉ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด Critical Section ์— ๋“ค์–ด๊ฐ€๋Š” ํšŸ์ˆ˜์— ํ•œ๊ณ„๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค์˜ ๋ฌดํ•œ์ • ๋Œ€๊ธฐ๋ฅผ ๋ง‰๋Š” ๊ฒƒ์ด๋‹ค.

ย ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์„ธ์Šค๋“ค ๋ผ๋ฆฌ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ •ํ•ด์ฃผ๋Š” Synchronization(๋™๊ธฐํ™”) ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
โ€ข
Semaphore (์„ธ๋งˆํฌ์–ด) : ์„ธ๋งˆํฌ์–ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
Busy Waiting ์‚ฌ์šฉ X
โ€ข
Mutex (๋ฎคํ…์Šค) : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ Critical Section ์—์„œ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” Critical Section ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
โ€ข
Monitor : ๊ณต์œ  ์ž์›์˜ ๊ตฌ์กฐ, ๊ณต์œ  ์ž์›์˜ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜๋Š” Procedure , ํ˜„์žฌ ํ˜ธ์ถœ๋œ ํ”„๋กœ์‹œ์ €๊ฐ„์˜ ๋™๊ธฐํ™”๋ฅผ ์บก์Šํ™”ํ•œ ๋ชจ๋“ˆ์ด๋‹ค. ๊ณต์œ  ์ž์›์˜ ์ ‘๊ทผ์€ ํ”„๋กœ์‹œ์ €๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
โ†’ Busy Waiting : Critical Section ์ง„์ž…์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๊ณ„์† CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ

ref)