๐Ÿ‘ฉ‍๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/๐ŸŽ›๏ธ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & OS

[ํ˜ผ๊ณตํ•™์Šต๋‹จ 12๊ธฐ] 12๊ฐ• - ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

์˜ค๋ธŒ ๐Ÿง™‍โ™‚๏ธ 2024. 8. 23. 23:55

[ ๋™๊ธฐํ™” ]

ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ์ˆ˜ํ–‰ ์‹œ๊ธฐ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ

 

์‹œ๊ธฐ 1. ์‹คํ–‰ ์ˆœ์„œ ์ œ์–ด

: ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰

EX) ์›Œ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์“ฐ๋Š” ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ์ฝ๋Š” ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ

 

์‹œ๊ธฐ 2. ์ƒํ˜ธ ๋ฐฐ์ œ

: ๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ž์›์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ (๋™์‹œ ์‚ฌ์šฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)

EX) ์ƒ์‚ฐ์ž, ์†Œ๋น„์ž ๋ฌธ์ œ

 

๊ณต์œ ์ž์› 

EX) ์ „์—ญ ๋ณ€์ˆ˜, ํŒŒ์ผ, ์ž…์ถœ๋ ฅ์žฅ์น˜, ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ ... ๋“ฑ๋“ฑ 

์ž„๊ณ„ ๊ตฌ์—ญ

๊ณต์œ ์ž์› ์ค‘์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ

๋ ˆ์ด์Šค ์ปจ๋””์…˜

์ž˜๋ชป๋œ ์‹คํ–‰์œผ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ž„๊ณ„ ๊ตฌ์—ญ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ๊นจ์ง€๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

 

์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๋™๊ธฐํ™”

(1) ์ƒํ˜ธ๋ฐฐ์ œ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ–ˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ์ž„๊ผ ๊ตฌ์—ญ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†์Œ

(2) ์ง„ํ–‰

์ž„๊ณ„ ๊ตฌ์—ญ์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ์ง„์ž…ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

(3) ์œ ํ•œ ๋Œ€๊ธฐ

ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” ์–ธ์  ๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

(=์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด์˜ค๊ธฐ ์œ„ํ•ด ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•˜๋ฉด ์•ˆ๋จ)

 

๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ 1 - [ ๋ฎคํ…์Šค ๋ฝ ]

๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ž์›์— ๋™์‹œ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“œ๋Š” ๋„๊ตฌ ( =์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ์œ„ํ•œ ๋™๊ธฐํ™” ๋„๊ตฌ )

 

๋ฐ”์œ ๋Œ€๊ธฐ

์ž„๊ณ„๊ตฌ์—ญ์ด ์ž ๊ฒจ ์žˆ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ lock๋ฅผ ํ™•์ธ 

 

์˜ท๊ฐ€๊ฒŒ ํƒˆ์˜์‹ค์—์„œ ์‚ฌ๋žŒ์ด ์žˆ์„ ๋•Œ ์ž๋ฌผ์‡ ๋ฅผ ๊ฑธ๊ณ , ์‚ฌ๋žŒ์ด ์—†์œผ๋ฉด ์ž๋ฌผ์‡ ๋ฅผ ํ‘ธ๋Š” ๊ธฐ๋Šฅ

 

์ž๋ฌผ์‡  : ์ „์—ญ๋ณ€์ˆ˜ lock

 

์ž„๊ณ„๊ตฌ์—ญ ์ž ๊ทธ๋Š” ์—ญํ•  : acquire ํ•จ์ˆ˜

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ธฐ ์ „์— ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜.

์ž„๊ณ„ ๊ตฌ์—ญ์ด ์ž ๊ฒจ ์žˆ์œผ๋ฉด ์—ด๋ฆด ๋•Œ๊นŒ์ง€(lock์ด false๊ฐ€ ๋  ๋•Œ๊นŒ์ง€) ์ž„๊ณ„๊ตฌ์—ญ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ™•์ธํ•˜๊ณ , ์ž„๊ณ„ ๊ตฌ์—ญ์ด ์—ด๋ ค ์žˆ์œผ๋ฉด ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์ž ๊ทธ๋Š”(lock์„ true๋กœ ๋ฐ”๊พธ๋Š”) ํ•จ์ˆ˜

 

์ž„๊ณ„๊ตฌ์—ญ ์ž ๊ธˆ ํ•ด์ œ ์—ญํ•  : release ํ•จ์ˆ˜

์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ์˜ ์ž‘์—…์ด ๋๋‚˜๊ณ  ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜.

ํ˜„์žฌ ์ž ๊ธด ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์—ด์–ด์ฃผ๋Š”(lock์„ false๋กœ ๋ฐ”๊พธ๋Š”) ํ•จ์ˆ˜

 

=> ๋ฝ์„ ํš๋“ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฌด์ž‘์ • ๋Œ€๊ธฐ / ๋ฝ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์ž ๊ทธ๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ ์ž‘์—… ์ง„ํ–‰ / ์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ ๋‚˜์˜ฌ ๋• ์ž„๊ณ„ ๊ตฌ์—ญ ์ž ๊ธˆ ํ•ด์ œ -> ๋ฌดํ•œ์ • ๋ฐ˜๋ณตํ•˜๋ฉฐ ํ™•์ธํ•˜๋ฏ€๋กœ CPU ์ฃผ๊ธฐ ๋‚ญ๋น„

๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ 2 - [ ์„ธ๋งˆํฌ ]

๋ฎคํ…์Šค ๋ฝ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์ข€ ๋” ์ผ๋ฐ˜ํ™”๋œ ๋ฐฉ์‹

 

๋ฎคํ…์Šค ๋ฝ์€ ํƒˆ์˜์‹ค์ด ํ•˜๋‚˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•˜์ง€๋งŒ, ์„ธ๋งˆํฌ๋Š” ํƒˆ์˜์‹ค์ด ์—ฌ๋Ÿฌ ๊ฐœ์—ฌ๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅ

: ๊ณต์œ  ์ž์›์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ์ƒํ™ฉ๋„ OK

 

์ข…๋ฅ˜

1. ์ด์ง„ ์„ธ๋งˆํฌ (binary semaphore)

2. ์นด์šดํŒ… ์„ธ๋งˆํฌ (counting semaphore)

 

๋ฉˆ์ถค/๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ์ฐจ ์‹ ํ˜ธ๊ธฐ

 

์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต์œ  ์ž์› ๊ฐœ์ˆ˜) : ์ „์—ญ ๋ณ€์ˆ˜ S

 

์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๋„ ์ข‹์€์ง€, ๊ธฐ๋‹ค๋ ค์•ผ ํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ•  : wait ํ•จ์ˆ˜

์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ 0์ดํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์ด ์žˆ๋Š”์ง€ ๋ฐ˜๋ณต ํ™•์ธํ•˜๊ณ ,

์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์ด๋ฉด S๋ฅผ ํ•˜๋‚˜ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ์ž„๊ณ„ ๊ตฌ์—ญ ์ง„์ž…

 

์ž„๊ณ„ ๊ตฌ์—ญ ์•ž์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ '์ด์ œ ๊ฐ€๋„ ๋จ' ์‹ ํ˜ธ๋ฅผ ์ฃผ๋Š” ์—ญํ•  : signal ํ•จ์ˆ˜

์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ์˜ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ S๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ด

 

=> wait ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์ด ์—†์„ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ , ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ PCB๋ฅผ ์„ธ๋งˆํฌ๋ฅผ ์œ„ํ•œ ๋Œ€๊ธฐ ํ์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค. ์ž„๊ณ„ ๊ตฌ์—ญ์—์„œ์˜ ์ž‘์—…์ด ๋๋‚˜๊ณ  signal ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด signal ํ•จ์ˆ˜๋Š” ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€๊ธฐ ํ์—์„œ ์ œ๊ฑฐํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ์ค€๋น„ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ ๋’ค ์ค€๋น„ ํ๋กœ ์˜ฎ๊ธด๋‹ค. 

 

๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ 3 - [ ๋ชจ๋‹ˆํ„ฐ ]

๊ณต์œ  ์ž์›๊ณผ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค(ํ†ต๋กœ)๋ฅผ ๋ฌถ์–ด ๊ด€๋ฆฌ

ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

 

๋งค๋ฒˆ ์ž„๊ณ„ ๊ตฌ์—ญ ์•ž๋’ค์— signal, wait ํ•จ์ˆ˜๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•˜๋Š” ์„ธ๋งˆํฌ์— ๋น„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌ

 

์กฐ๊ฑด ๋ณ€์ˆ˜

ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ณ€์ˆ˜

์ธก์ • ์กฐ๊ฑด์„ ๋ฐ”ํƒ•์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ผ์‹œ ์ค‘๋‹จํ•˜๊ธฐ ํ•  ๋•Œ ์‚ฌ์šฉ ( EX. wait, signal ํ•จ์ˆ˜ )

 

363p 1๋ฒˆ.
4๋ฒˆ, ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹˜