์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์ ๋ํฐ
- 4๊ธฐ
- ๋ค์ต์คํธ๋ผ
- ํฌ๋ํํค์ ๊ธ4๊ธฐ
- c#
- ์ค๋ธ์
- ์ถ์ํด๋์ค์์ธํฐํ์ด์ค
- ํฌ๋ํํค ์ ๊ธ
- ํฌ๋ํํค์ ๊ธ
- ์ฐ๊ฒฐ๋ฆฌ์คํธ
- TiL
- ํฌ๋ํํค ์ ๊ธ 4๊ธฐ
- KRAFTON JUNGLE
- ํํ ์ค
- Unity
- ์ด๋ฒคํธ ํจ์ ์คํ ์์
- pintos
- ์๊ณ ๋ฆฌ์ฆ
- project3
- ๋ฐฑ์ค
- User Stack
- C
- ์ ์-์ ํฌ
- anonymous page
- ์๊ณ ๋ฆฌ์ฆ์์ -๋๋น์ฐ์ ํ์2
- ๋คํธ์ํฌ
- BFS
- kraftonjungle
- ํ์ด์ฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Today
- Total
๋ง๊ฐ๋ก๊ทธ
ํฌ๋ํํค ์ ๊ธ WEEK07 DAY55 - ํด์ฆ ๊ณต๋ถ ๋ณธ๋ฌธ
๐2024.3.4
1. PintOS- Project1 Alarm
2. ํด์ฆ ๊ณต๋ถ
PintOS-Project1 - Alarm
ํด์ฆ ๊ณต๋ถ
ํ๋ก์ธ์ค์ ์ค๋ ๋
ํ๋ก์ธ์ค
- ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ํ๋ธ๋ค. ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ ์์(๋ฉ๋ชจ๋ฆฌ, ํ์ผ ,CPU ์๊ฐ ๋ฑ)์ ํ ๋น๋ฐ์ ์คํํ๋ค.
- ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ์ฃผ์ ๊ณต๊ฐ ๊ฐ์ง๋ฉฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ฒฉ๋ฆฌ๋์ด ์๋ค. ์ด๋ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
- ๊ฐ ํ๋ก์ธ์ค๋ ์ต์ํ ํ๋์ ์ค๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ค๋ ๋
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ๊ฐ์ฅ ์์ ์คํ ๋จ์์ด๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ๊ณต์ ํ๋ฉฐ, ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ ์ ์๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ Stack ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ธํ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ ํ๋ก์ธ์ค ๋ด ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต์ ํ๋ค.
ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ค๋ฉด IPC๋ฅผ ์ฌ์ฉํ๋ ๋ฑ์ ๋ฒ๊ฑฐ๋ก์ด ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ์ง๋ง, ์ค๋ ๋๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ค๋ ๋์ ์ ๋ณด ๊ณต์ ๊ฐ ์ฝ๋ค.
ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ํ๋ด๋ฉฐ, ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์คํ ๋จ์์ด๋ค.
ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๋ค.
์ธ๋งํฌ์ด์ ๋ฎคํ ์ค
์๊ณ๊ตฌ์ญ(Critical Section)
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉฐ ์ํ๋ ๋, ๊ฐ ํ๋ก์ธ์ค์์ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ํ๋ก๊ทธ๋จ ์ฝ๋ ๋ธ๋ก
์ฆ, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผ ์์์ ๋์์ ์ฐธ์กฐํ์ฌ ๊ฐ(๊ณต์ ํ๋ ๋ณ์๋ช , ํ์ผ ๋ฑ)์ด ์ค์ผ๋ ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์์ญ
์๊ณ๊ตฌ์ญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผํ ์ ์๋๋ก ์ ํ์ ๋๋ ๋๊ธฐํ ๋ฐฉ์์ ์ทจํด์ผ ํ๋ค. ๋ํ์ ์ผ๋ก ๋ฎคํ ์ค์ ์ธ๋งํฌ์ด๊ฐ ์๋ค.
๋ฎคํ ์ค
- ๋์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ณต์ ๋ถ๊ฐ๋ฅํ ์์์ ๋์ ์ฌ์ฉ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๋ฎคํ ์ค๋ ์ํธ ๋ฐฐ์ ๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ ๊ธ(lock) ์ฐ์ฐ์ ๋ฎคํ ์ค๋ฅผ ์์ ํ๋ ์ค๋ ๋๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฎคํ ์ค๋ฅผ ํ๋ํ๊ณ , ์ด๋ฏธ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฎคํ ์ค๋ฅผ ์์ ํ๊ณ ์๋ ๊ฒฝ์ฐ ํธ์ถํ ์ค๋ ๋๋ ๋ธ๋ก๋๋ค.
- ํด์ (unlock) ์ฐ์ฐ์ ๋ฎคํ ์ค๋ฅผ ํด์ ํ๊ณ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฎคํ ์ค๋ฅผ ํ๋ํ ์ ์๋๋ก ํ๋ค.
์ธ๋งํฌ์ด
- ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ๊ณต์ ๋ ์์์ ๋ํ ์ ๊ทผ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ธ๋งํฌ์ด๋ ์ ์ ๋ณ์๋ก, ์ผ๋ฐ์ ์ผ๋ก 0 ์ด์์ ๊ฐ์ ๊ฐ์ง๋ค.
- ์ธ๋งํฌ์ด๋ ๋ ๊ฐ์ง ์ฃผ์ํ ์ฐ์ฐ์ ์ง์ํ๋ค.
- P(Produce) ์ฐ์ฐ์ ์ธ๋งํฌ์ด ๊ฐ์ ๊ฐ์์ํค๊ณ , ์ธ๋งํฌ์ด ๊ฐ์ด ์์๊ฐ ๋๋ฉด ํธ์ถํ ์ค๋ ๋๋ ๋ธ๋ก๋๋ค. ์ด๋ ๋ฆฌ์์ค๊ฐ ์ฌ์ฉ ์ค์ผ ๋ ๋๊ธฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- V(Consume) ์ฐ์ฐ์ ์ธ๋งํฌ์ด ๊ฐ์ ์ฆ๊ฐ์ํค๊ณ , ์ธ๋งํฌ์ด ๊ฐ์ด ์์๊ฐ ๋๋ฉด ๋๊ธฐ ์ค์ธ ์ค๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ด๋ค.
๋ฎคํ ์ค์ ์ธ๋งํฌ์ด์ ์ฐจ์ด์
1. ๋๊ธฐํ ๋์์ ๊ฐฏ์
- ๋ฎคํ ์ค๋ ๋๊ธฐํ ๋์์ด 1๊ฐ ์ผ ๋ ์ฌ์ฉ
- ์ธ๋งํฌ์ด๋ ๋๊ธฐํ ๋์์ด 1๊ฐ ์ด์์ผ ๋ ์ฌ์ฉ
2. ๋ฎคํ ์ค ์์ ์์ ๊ฐ๋ฅ + ์ฑ ์์ ๊ฐ์ง๋ ๋ฐ๋ฉด, ์ธ๋งํฌ์ด๋ ์์ ์์ ๋ถ๊ฐ
- ๋ฎคํ ์ค๋ ์ํ๊ฐ 0, 1 ๋ฟ์ด๋ฏ๋ก Lock์ ๊ฐ์ง ์ ์๋ค
3. ๋ฎคํ ์ค๋ ์์ ํ๊ณ ์๋ ์ค๋ ๋๋ง์ด ์ด ๋ฎคํ ์ค๋ฅผ ํด์ ํ ์ ์๋ค.
- ๋ฐ๋ฉด, ์ธ๋งํฌ์ด๋ ์ธ๋งํฌ์ด๋ฅผ ์์ ํ์ง ์๋ ์ค๋ ๋๊ฐ ์ธ๋งํฌ์ด๋ฅผ ํด์ ํ ์ ์๋ค.
๊ฒฝ์ ์กฐ๊ฑด(Race condition)
- ๊ฒฝ์ ์กฐ๊ฑด์ ๋ฉํฐ ์ค๋ ๋ ๋๋ ๋ณ๋ ฌ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ์ ์๋ ๋๊ธฐํ ๋ฌธ์ ์ด๋ค.
- ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๊ณต์ ๋ ์์์ ๋์์ ์ ๊ทผํ๊ณ ๋ณ๊ฒฝํ ๋ ๋ฐ์ํ ์ ์๋ค. ๊ฒฝ์ ์กฐ๊ฑด์ ํ๋ก๊ทธ๋จ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ค๋ ๋ ์คํ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ฒฝ์ ์กฐ๊ฑด์ด ๋ฐ์ํ๋ ์์
1. ๊ณต์ ๋ ์์์ ๋์ ์ ๊ทผ
๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋์์ ๊ณต์ ๋ ๋ณ์, ์๋ฃ ๊ตฌ์กฐ ๋๋ ํ์ผ ๋ฑ์ ์ ๊ทผํ๊ณ ์์ ํ ๋, ์์ํ์ง ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค.
2. ๋๊ธฐํ ์๋ ์๊ณ๊ตฌ์ญ ์ ๊ทผ
์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์๊ณ ๊ตฌ์ญ์ ์ ๊ทผํ๊ณ ์์ ํ ๋, ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋์ง ์๊ณ , ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์๋ค.
3. ์ค์ผ์ค๋ง์ ์์ธก ๋ถ๊ฐ๋ฅ์ฑ
์ค๋ ๋์ ์คํ ์์๊ฐ ์์ธกํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ, ๊ฒฝ์ ์กฐ๊ฑด์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
๋ฐ๋๋ฝ(DeadLock , ๊ต์ฐฉ์ํ)
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ์๋ก ์์์ ์ป์ง ๋ชปํด์ ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ ์ํ์ด๋ค.
๋ฌดํํ ๋ค์ ์์์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ์ํ.
ex ) ์ธ๋๋ฌด ๋ค๋ฆฌ์ ์ ๋์์ ์๋ก๊ฐ ๋น์ผ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ๋ง ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.
๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ
ํ์ฌ ์๋ก ์ํ๋ ์์์ด ์๋๋ฐฉ์ ํ ๋น๋์ด ์์ด์ ๋ ํ๋ก์ธ์ค๊ฐ ๋ฌดํ์ wait ์ํ์ ๋น ์ง ๋
๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด
(4๊ฐ์ง ๋ชจ๋ ์ฑ๋ฆฝํด์ผ ๋ฐ๋๋ฝ ๋ฐ์, ํ๋๋ผ๋ ์ฑ๋ฆฝํ์ง ์์ผ๋ฉด ๋ฐ๋๋ฝ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ)
1. ์ํธ ๋ฐฐ์ (Mutual exclusion)
์์์ ํ ๋ฒ์ ํ ํ๋ก์ธ์ค๋ง ์ฌ์ฉํ ์ ์๋ค.
2. ์ ์ ๋๊ธฐ(Hold and Wait)
์ต์ํ ํ๋์ ์์์ ์ ์ ํ๊ณ ์์ผ๋ฉด์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋์ด ์ฌ์ฉํ๊ณ ์๋ ์์์ ์ถ๊ฐ๋ก ์ ์ ํ๊ธฐ ์ํด ๋๊ธฐํ๋ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํด์ผ ํ๋ค.
3. ๋น์ ์ (No preemption)
๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ค.
4. ์ํ ๋๊ธฐ(Circular wait)
ํ๋ก์ธ์ค์ ์งํฉ์์ ์ํ ํํ๋ก ์์์ ๋๊ธฐํ๊ณ ์์ด์ผ ํ๋ค.
๋ฐ๋๋ฝ ์ฒ๋ฆฌ
๊ต์ฐฉ ์ํ๋ฅผ ์๋ฐฉ & ํํผ
1. ์๋ฐฉ
๊ต์ฐฉ ์ํ ๋ฐ์ ์กฐ๊ฑด ์ค ํ๋๋ฅผ ์ ๊ฑฐํ๋ฉด์ ํด๊ฒฐํ๋ค.(์์ ๋ญ๋น ์์ฒญ ์ฌํจ)
2. ํํผ
์ํ์ ์๊ณ ๋ฆฌ์ฆ, ์์ ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ
๊ต์ฐฉ ์ํ๋ฅผ ํ์ง & ํ๋ณต
1. ํ์ง
์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ํตํด ๊ต์ฐฉ ์ํ๋ฅผ ํ์งํ๋ค.
2. ํ๋ณต
๊ต์ฐฉ ์ํ ์ผ์ผํจ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ฑฐ๋, ํ ๋น๋ ์์์ ํด์ ์์ผ ํ๋ณต์ํจ๋ค.
์ปจํ ์คํธ ์ค์์นญ(๋ฌธ๋งฅ ๊ตํ)
- ์ปจํ ์คํธ ์ค์์นญ์ CPU์ ์คํํ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๋ ๊ธฐ์ ์ด๋ค.
- ํ์ฌ ํ๋ก์ธ์ค์ PC์ SP ๋ฑ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์์ฃผ ์์ ๊ณต๊ฐ์ PCB๋ผ๊ณ ํ๋๋ฐ, PCB์๋ Process ID(PID), ๋ ์ง์คํฐ(PC,SP ๋ฑ)์ ํฌํจํด ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ธ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ PCB์ ์ ๋ฐ์ดํธ ํ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค.
- ๋ค์ ์คํ ํ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ CPU ๋ ์ง์คํฐ์ ๋ฃ๊ณ ์คํํ๋ค.
์ฐธ์กฐ