[ ๋๊ธฐํ ]
ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ์ํ ์๊ธฐ๋ฅผ ๋ง์ถ๋ ๊ฒ
์๊ธฐ 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๋ฒ, ๋ฐ๋์ ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ์ผ ํ๋ ๊ฑด ์๋ |
'๐ฉโ๐ป ์๊ณ ๋ฆฌ์ฆ > ๐๏ธ ์ปดํจํฐ ๊ตฌ์กฐ & OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํผ๊ณตํ์ต๋จ 12๊ธฐ ] 14๊ฐ - ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (0) | 2024.08.25 |
---|---|
[ํผ๊ณตํ์ต๋จ 12๊ธฐ] 13๊ฐ - ๊ต์ฐฉ ์ํ (0) | 2024.08.24 |
[ํผ๊ณตํ์ต๋จ 12๊ธฐ] 11๊ฐ - CPU ์ค์ผ์ค๋ง (0) | 2024.08.04 |
[ํผ๊ณตํ์ต๋จ 12๊ธฐ] 10์ฅ, ํ๋ก์ธ์ค์ ์ค๋ ๋ (0) | 2024.07.28 |
[ํผ๊ณตํ์ต๋จ 12๊ธฐ] 9์ฅ, ์ด์์ฒด์ ์์ํ๊ธฐ (0) | 2024.07.28 |