ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ธ๊ฐ์? (Context, Context Switching, Blocked ์ํ์ Suspended ์ํ ์ฐจ์ด)
ํ๋ก์ธ์ค๋ ๋์คํฌ์ ์คํ ํ์ผ๋ก ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์คํ๋๊ธฐ ์์ํ๋ฉด ํ๋ก์ธ์ค๋ผ ๋ถ๋ฆ ๋๋ค.
ํ๋ก์ธ์ค ์ปจํ์คํธ๋ CPU ์ค์ผ์ฅด๋ง์ ์ํด CPU ์ ์ ๊ถ์ ๋นผ์๊ฒผ๋ค๊ฐ ๋ค์ ํ๋ํ๊ฒ ๋์์๋ ์ด์ ์ ์ํ๋ฅผ ์ฌํํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋งํฉ๋๋ค.
- ํ๋ก์ธ์ค ๋ฌธ๋งฅ์ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋ฉ๋๋ค.
- CPU ์ ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ์ปจํ์คํธ = PC๊ฐ, ๋ ์ง์คํฐ๊ฐ
- ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ = code, data, stack
- ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ๊ตฌ์กฐ์ธ PCB
์ปจํ์คํธ ์ค์์นญ์ด๋ CPU ์ ์ ๊ถ์ด ํ์ฌ ํ๋ก์ธ์ค์์ ๋ค์ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋ ๊ณผ์ ์์ ์ ์ ๊ถ์ ๋นผ์๊ธฐ๋ ํ๋ก์ธ์ค๋ ํ์ฌ ์ปจํ์คํธ๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด PCB์ CPU์ pc๊ฐ๊ณผ ๋ ์ง์คํฐ ๊ฐ์ ์ ์ฅํด๋๊ณ , ์ ์ ๊ถ์ ์ป๋ ํ๋ก์ธ์ค๋ ์ด์ ์ ์ปจํ์คํธ๋ฅผ ๋ณต์ํ๊ธฐ ์ํด PCB์ pc๊ฐ๊ณผ ๋ ์ง์คํฐ ๊ฐ์ CPU์ ๋ณต์ํฉ๋๋ค.
blocked ์ํ๋ ํ๋ก์ธ์ค๊ฐ cpu ์ ์ ๊ถ์ ๊ฐ์ง๊ณ ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค๊ฐ io์์ ๊ณผ ๊ฐ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ํ ๊ฒฝ์ฐ์ ์ํ์ ๋๋ค. ํด๋น ํ๋ก์ธ์ค๋ cpu ์ ์ ๊ถ์ ๋ฐํํ๊ณ , io์์ ์ ๋ง์น๋ฉด ready ์ํ๊ฐ ๋์ด ready queue์ ๋๊ธฐํ์ฌ cpu ์ค์ผ์ฅด๋ฌ์๊ฒ ์ค์ผ์ฅด๋ง ๋นํ๊ธธ ๊ธฐ๋ค๋ฆฝ๋๋ค.
suspended ์ํ๋ CPU ๋๋ ์ธ๋ถ(์ฌ๋, ์ค๊ธฐ ์ค์ผ์ฅด๋ฌ)์ ์ํด ๊ฐ์ ๋ก ์ ์ง๋นํ ํ๋ก์ธ์ค์ ์ํ์ ๋๋ค. ์ด ์ํ์ ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋นผ์๊ฒจ ๋์คํฌ๋ก swap out๋๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์ ์ฌ๊ฐ ํด์ค์ผ activeํ ์ํ๊ฐ ๋ฉ๋๋ค.
์ค์ผ์ฅด๋ฌ์ ๋ํด ์์๋์? (์ค์ผ์ฅด๋ฌ ์ข ๋ฅ)
์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์์์ ํ ๋นํด์ค์ง ๊ฒฐ์ ํ๋ ์ด์์ฒด์ ์ ์ปค๋ ์ฝ๋๋ฅผ ์ง์นญํฉ๋๋ค.
3๊ฐ์ง ์ค์ผ์ฅด๋ฌ๊ฐ ์์ต๋๋ค.
-
์ฅ๊ธฐ ์ค์ผ์ฅด๋ฌ (job ์ค์ผ์ฅด๋ฌ)
๋ฉ๋ชจ๋ฆฌ ์์์ ์ด๋ค new ์ํ์ ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ฅด๋ฌ์ ๋๋ค.
์ด ์ค์ผ์ฅด๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ์ฌ๋ผ๊ฐ ํ๋ก์ธ์ค์ ์๋ฅผ ์ ์ดํฉ๋๋ค. ๋ณดํต ์๋ถํ ์์คํ ์์๋ ์ฅ๊ธฐ ์ค์ผ์ฅด๋ฌ๊ฐ ์์ต๋๋ค. (new ์ํ์ ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ๊ณง๋ฐ๋ก ready ์ํ๊ฐ ๋ฉ๋๋ค)
๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ์ฌ๋ผ๊ฐ ํ๋ก์ธ์ค์ ์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ค๊ธฐ ์ค์ผ์ฅด๋ฌ์ ์ํด ์ํ๋ฉ๋๋ค.
-
์ค๊ธฐ ์ค์ผ์ฅด๋ฌ (swapper)
์ค๊ธฐ ์ค์ผ์ฅด๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ๊ฐ ๊ฒฝ์ฐ, ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ ๊ณจ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋นผ์๊ณ ๋์คํฌ๋ก swap out ์ํค๋ ์ญํ ์ ํฉ๋๋ค.
์ค๊ธฐ ์ค์ผ์ฅด๋ฌ์ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋นผ์๊ธด ํ๋ก์ธ์ค๋ suspended ์ํ๊ฐ ๋ฉ๋๋ค.
-
๋จ๊ธฐ ์ค์ผ์ฅด๋ฌ (cpu ์ค์ผ์ฅด๋ฌ)
cpu ์ ์ ๊ถ์ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ฅด๋ฌ์ ๋๋ค.
์ค์ผ์ฅด๋ง์ด ์ผ์ด๋๋ ๋จ์๊ฐ ๋ฐ๋ฆฌ์ธ์ปจ๋๋ก ๊ต์ฅํ ์์ฃผ ์ผ์ด๋ฉ๋๋ค.
์ค๋ ๋๊ฐ ๋ฌด์์ธ๊ฐ์?
์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ ๋จ์์ ๋๋ค.
ํ๋ก์ธ์ค ํ๋์ CPU ์ํ ๋จ์๋ง ์ฌ๋ฌ๊ฐ ๋์์ ๋ ๊ทธ ๊ฐ๊ฐ์ ์ค๋ ๋๋ผ ํฉ๋๋ค.
- ์ค๋ ๋๋ง๋ค ๋ณ๋๋ก cpu ์ํ์ ํ์ํ ์ ๋ณด์ธ pc๊ฐ๊ณผ ๋ ์ง์คํฐ ๊ฐ์ด ํ์ํฉ๋๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์ฃผ์ ์์ญ์ค code, data ์์ญ์ ๊ณต์ ํ์ง๋ง stack ์์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค. code ์์ญ์ ์ํํ๋ค ํจ์ ํธ์ถ์ด ์ผ์ด๋๋ฉด, ํด๋น ํจ์์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ stack์ ์์ ๋๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ๋ง๋ค ๋ ๋ฆฝ์ ์ธ stack ์์ญ์ด ํ์ํฉ๋๋ค.
๋ง์ฝ ์ค๋ ๋๊ฐ ์๋ค๋ฉด
- ๋์ผํ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ฉด, ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ๊ณผ PCB๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค์ด์ ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ญ๋น๊ฐ ์ฌํด์ง๋๋ค.
๋ฉํฐ ํ๋ก์ธ์ค, ๋ฉํฐ ์ค๋ ๋์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์
๋ฉํฐ ํ๋ก์ธ์ค๋
- ํ๋์ ํ๋ก๊ทธ๋จ์ ๋ค์์ ํ๋ก์ธ์ค๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ณ๋ ฌ์ ์ผ๋ก ์์ ์ ์ํํ๋ ๊ฒ์ ๋๋ค.
- ์ฅ์
- ๊ฐ ํ๋ก์ธ์ค ๋ง๋ค ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํ๋์ ํ๋ก์ธ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ด ์์ต๋๋ค.
- ๋จ์
- ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ปจํ์คํธ ์ค์์นญ์ด ์์ฃผ ์ผ์ด๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
- ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ด ์์น์ ์ผ๋ก ์ ํ๋์ด ์์ง๋ง, ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ณ๋์ ํต์ ์ IPC๋ฅผ ํตํด ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด shared memory ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ปค๋๋ก๋ถํฐ ํ๋ก์ธ์ค๋ผ๋ฆฌ ๊ณต์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ , ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํตํด ํต์ ์ ํ ์ ์์ต๋๋ค. ๋ค๋ง ๊ณต์ ์์์ ๋ํ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋ฉํฐ ์ค๋ ๋๋
- ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ์ค๋ ๋๋ก ์์์ ๊ณต์ ํ๋ฉฐ ์์ ์ ๋๋์ด ์ํํ๋ ๊ฒ์ ๋๋ค
- ์ฅ์
- ์ผ๋จ ํ๋์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ code, data๊ณผ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ ์์ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ ํ๋ก์ธ์ค์ IPC์ ๊ฐ์ ํต์ ์ ์ํ ๊ธฐ์ ์ด ํ์ํ์ง ์์ต๋๋ค.
- ์๋ต์ฑ์ด ๋์ต๋๋ค. ์น ๋ธ๋ผ์ฐ์ ์ ํ๋์ ํญ์์ ํ๋์ ์ค๋ ๋๊ฐ ์น ํ์ด์ง๋ฅผ ๋ค์ด ๋ฐ์ผ๋ฉด, ๊ทธ์ ๋์์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ค์ด ๋ฐ์ html์ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ํฉ์ฒ๋ผ ์๋ต์ฑ์ ๋ํ ์ ์์ต๋๋ค.
- ๋จ์
- ์ฌ๋ฌ ์ค๋ ๋๋ผ๋ฆฌ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ์ ๋ฐ๋ฅธ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋๊ธฐํ ๋ฌธ์ ๋ ๋ฎคํ ์ค, ์ธ๋งํฌ์ด ๋ฐฉ์์ ํ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ํ๋์ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ์ํฅ์ ๋ฐ์ต๋๋ค.
IPC์ ๋ํด์ ์ค๋ช ํด๋ณด์ธ์
IPC๋ ํ๋ก์ธ์ค๊ฐ์ ํต์ ๊ธฐ๋ฒ์ ๋๋ค.
ํ๋ก์ธ์ค ๋ผ๋ฆฌ์ ํต์ ์ ์์น์ ์ผ๋ก ์ ํ๋์ด์์ง๋ง IPC ๊ธฐ๋ฒ์ ํตํด ํต์ ์ ํ ์ ์์ต๋๋ค.
๋ํ์ ์ผ๋ก shared memory, message passing ๊ธฐ๋ฒ์ด ์์ต๋๋ค.
message passing
- ํ๋ก์ธ์ค๊ฐ ์ปค๋์ ํตํด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํต์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ํต์ ํ๋ ค๋ ํ๋ก์ธ์ค์ ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ํ์ํ์ฌ ์ ๋ฌํ๋ direct communication๋ฐฉ์๊ณผ
- mailbox๋๋ port๋ฅผ ํตํด ๋ฉ์์ง๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ ๋ฌํ๋ indirect communication ๋ฐฉ์์ด ์์ต๋๋ค.
shared memory ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด
- ์ปค๋๋ก๋ถํฐ ํ๋ก์ธ์ค๋ผ๋ฆฌ ๊ณต์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ , ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํตํด ํต์ ์ ํ ์ ์์ต๋๋ค. ๋ค๋ง ๊ณต์ ์์์ ๋ํ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
CPU ์ค์ผ์ค๋ง์ด ๋ฌด์์ธ์ง์ ๋ชฉ์ ์ ์ค๋ช ํด์ฃผ์ธ์.
CPU ์ค์ผ์ค๋ฌ๋ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ ํ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ด์์ฒด์ ์ ์ฝ๋์ ๋๋ค. CPU๋ฅผ ์ฌ์ฉํ๋ ํจํด์ด ์์ดํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ์์คํ ๋ด๋ถ์์ ํจ๊ป ์คํ๋๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ CPU ์ฌ์ฉ์ ์ํด ํ์ํฉ๋๋ค.๋น์ ์ ๋ฐฉ์๊ณผ ์ ์ ๋ฐฉ์์ ์ค๋ช ํด์ฃผ์ธ์.
๋น์ ์ ๋ฐฉ์์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋นผ์์ง ๋ชปํ๋ ๋ฐฉ์์ ๋๋ค. ๋น์ ์ ๋ฐฉ์์ CPU๋ฅผ ์ค๊ฐ์ ๊ฐ๋ก์ฑ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ต์๊ฐ ์์ธก์ด ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ค์ํ ์์ ์ด ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ ์ ๋ฐฉ์์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์์ด๋ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ์ค๋ฉด CPU๋ฅผ ๋นผ์์ ์ ์๋ ๋ฐฉ์์ ๋๋ค. ์ ์ ๋ฐฉ์์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ฆ์ Context Switching์ผ๋ก ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.์ค์ผ์ค๋ง ๊ธฐ๋ฒ ์ค FCFS์ ๋จ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํด์ฃผ์ธ์.
FCFS ๋ ๋๊ธฐ ํ์ ๋์ฐฉํ ์์์ ๋ฐ๋ผ CPU๋ฅผ ํ ๋นํฉ๋๋ค. ๊ทธ๋์ ๊ธด ์์ ์ด ์งง์ ์์ ์ ์ค๋ซ ๋์ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. ๋จ์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค ์ค ๊ฐ์ฅ CPU ์๊ตฌ๋์ด ์ ์ ๊ฒ์ ๋จผ์ ์คํ์์ผ ์ฃผ๋ SJF(Shortest Job First)๊ฐ ์์ต๋๋ค.ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐํ ํด์ผํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?
๊ณต์ ๋ฐ์ดํฐ์ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ๋ฉด data inconsistency๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋๊ธฐํ๋ฅผ ํ๊ธฐ ์ํด์ ์ด๋ค ์ด์๋ฅผ ํด๊ฒฐํด์ผํ๋์??
์ฒซ ๋ฒ์งธ๋ก ์ด๋ป๊ฒ ํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ ๋ณด๋ฅผ ๋๊ธธ ๊ฒ์ธ์ง ์ ํด์ผํ๊ณ , ๋ ๋ฒ์จฐ๋ก ์ด๋ป๊ฒ ๋๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ํ๋์ ๋ฐ์ดํฐ์ ๋์์ ์ ๊ทผํ์ง ์๋๋ก ํ ๊ฒ์ธ์ง์ ์์กด ๊ด๊ณ๊ฐ ์กด์ฌํ ๋ ์ด๋ป๊ฒ ์ ์ ํ ์์๋ฅผ ๋ถ์ฌํ ๊ฒ์ธ์ง ์ ํด์ผํฉ๋๋ค.
Race condition์ ๋ฌด์์ธ๊ฐ์?
ํ๋์ ๊ณต์ ๋ฐ์ดํฐ์ ์ฌ๋ฌ process๊ฐ ์ ๊ทผํ๋ ค ํ๋ ์ํฉ์ด race condition์ด๋ผ๊ณ ํ๋ค. ๋ง์ง๋ง ๊ฒฐ๊ณผ๋ ์ ํํ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ธ์ ์ํ๋๋์ง์ ๋ฐ๋ผ์ ๊ฒฐ์ ๋ฉ๋๋ค.
- race condition์ ์ธ์ ๋ฐ์ํ๋์?
์ฒซ ๋ฒ์งธ๋ ์ปค๋ ์์ ์ ์ํ ์ค์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๋์ ํ๋ก์ธ์ค๊ฐ system call์ ํ์ฌ ์ปค๋๋ชจ๋๋ก ์ง์ ํ์ฌ ์ํํ๋ ๋์ค context switch๊ฐ ๋ฐ์ํ ๋, ๋ง์ง๋ง์ผ๋ก ๋ฉํฐ ํ๋ก์ธ์์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ปค๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋ ์ ๋๋ค.
Critical region์ ๋ฌด์์ธ๊ฐ์?
-
Criticla region ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ๋งํด์ฃผ์ธ์
mutual exclusion, progress, bound waiting์ ๋๋ค. mutual exclusion์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์๊ณ๊ตฌ์ญ์ ์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ค์ด๊ฐ ์ ์๋ ๊ฒ์ด๊ณ , progress๋ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ์ด๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ๊ฒ์ธ์ง ์ ์ ํ ์ ํํด์ค์ผํ๋ ๊ฒ์ ๋๋ค. ๋ง์ง๋ง์ผ๋ก bound waiting ๋ ๊ทธ ์ด๋ค ํ๋ก์ธ์ค๋ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ๊ธฐ ์ํด ์์ํ ๊ธฐ๋ค๋ ค์๋ ์๋๋ค๋ ๊ฒ์ ๋๋ค. -
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์๋ ๋ฌด์์ด ์๋์?
semaphore, mutex, monitor๊ฐ ์์ต๋๋ค.
-
Semaphore, mutex, monitor์ด ๋ฌด์์ธ๊ฐ์?
mutex๋ ์๊ณ ๊ตฌ์ญ์ ๋ณดํธํ๊ณ ๊ฒฝ์์ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก mutex lock์ ์ฌ์ฉํฉ๋๋ค. ํ๋ก์ธ์ค๋ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ฐ๋์ ๋ฝ์ ํ๋ํด์ผํ๊ณ , ์๊ณ๊ตฌ์ญ์ ๋น ์ ธ๋์ฌ ๋ ๋ฝ์ ๋ฐํํด์ผํฉ๋๋ค. mutual exclusion์ ์ ๊ณตํ์ง๋ง bounded waiting ์กฐ๊ฑด์ ์๋ฐฐํฉ๋๋ค. ์๋ํ๋ฉด ํน์ ํ๋ก์ธ์ค๊ฐ ์๊ณ๊ตฌ์ญ๋ด์ ์์ ๋ while๋ฌธ์ ํตํด์ ๋ฐ๋ณต๋ฌธ์์ ๋น ์ ธ๋์ค์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก์ธ์ค์ ์๊ฐ์ด ์งง์ ๋ mutex๋ ์ ์ฉํฉ๋๋ค.
semaphore๋ ์์์ ๊ฐ์๋ฅผ ๋ปํฉ๋๋ค. ๋์์ ์์์ ์ ๊ทผํ ์ ์๋ ํ์ฉ๊ฐ๋ฅํ counter์ ๊ฐ์ ์ ๋๋ค. ์ธ๋งํฌ์ด๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ ์ํด ๊ณต์ ๋๋ ๋ณ์๋ก ์ ์ํ๊ณ ์ด ๋ณ์๋ ์ค์ง P, V๋ผ๋ atomicํ ์ฐ์ฐ์ ์ํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
monitor๋ mutex์ condition variable์ ๊ฐ์ง๊ณ ์๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ํธ๋ฐฐ์ ๋ฅผ ํจ์ผ๋ก์จ ์๊ณ๊ตฌ์ญ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ค์ด๊ฐ ์ ์์ต๋๋ค. monitor๋ ์ค์ ํ๋ก๊ทธ๋จ์์ ์ธ๋งํฌ์ด๋ฅผ ๊ตฌํํ ๊ฒ์ ๋๋ค. ์ํธ ๋ฐฐ์ ๋ฅผ ์ํ ๋ฐ์ดํฐ ๋ฐ ํ๋ก๊ทธ๋จ ๋ชจ๋, ์ด์์ฒด์ ๋ด๋ถ์ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ํฐ๋ผ๊ณ ํ๋ค.
Mutex vs. Semaphore vs. Monitor๋ฅผ ๋งํด์ฃผ์ธ์
- Mutex vs. Semaphore
์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค๊ฐ ๋ ์ ์์ง๋ง ๋ฌดํ ์ค๋ ์ธ๋งํฌ์ด๊ฐ ๋ ์ ์๋ค. ๋ ์ธ๋งํฌ์ด๋ ์์ ํ ์ ์์ง๋ง ๋ฎคํ ์ค๋ ์์จํ ์ ์๊ณ ์์ ํ ์ฌ๋์ด ๋ฐ๋์ ์์ํ๋ก ๋๋ ค๋์์ผํ๋ค. ๋ฎคํ ์ค์ ๊ฒฝ์ฐ ๋ฎคํ ์ค๋ฅผ ์์ ํ๊ณ ์๋ ์ค๋ ๋๊ฐ ์ด ๋ฎคํ ์ค๋ฅผ ํด์ ํ ์ ์๋ค. ํ์ง๋ง ์ธ๋งํฌ์ด๋ ์์ ํ์ง ์๊ณ ์๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ธ๋งํฌ์ด๋ฅผ ํด์ ํ ์ ์๋ค. ๋ฎคํ ์ค๋ ๋๊ธฐํ๋์์ด 1๊ฐ ์ธ๋งํฌ์ด๋ ๋๊ธฐํ ๋์์ด ์ฌ๋ฌ ๊ฐ์ผ ๋ ์ฌ์ฉํ๋ค.
- Semaphore vs. monitor
์๋ฐ์์๋ ๋ชจ๋ํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ฒด์๊ฒ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง๋ง c์์๋ ์ฌ์ฉํ ์ ์๋ค. ์ธ๋งํฌ์ด๋ ์นด์ดํฐ๋ผ๋ ๋ณ์๊ฐ์ผ๋ก ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํธ๋ฐฐ์ ๋ ์ ๋ ฌ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ ์ ๋งค๋ฒ ๊ฐ์ ๋ฐ๋ก ์ง์ ํด์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค. ๋ฐ๋ฉด์ ๋ชจ๋ํฐ๋ ์ด๋ฌํ ์ผ๋ค์ด ์บก์ํ๋์ด ์์ด์ ๊ฐ๋ฐ์๋ ์นด์ดํฐ ๊ฐ์ 0 ๋๋ 1๋ก ์ฃผ์ด์ผํ๋ ๊ณ ๋ฏผ์ ํ ํ์๊ฐ ์๋ค.
- monitor vs. mutex
๋ฎคํ ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ค๋ ๋ ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ค. ๋ชจ๋ํฐ๋ ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋ค๋ฅธ ์ค๋ ๋ ๊ฐ์ ๋๊ธฐํํ ๋ ์ฌ์ฉํ๋ค. ๋ฐ๋ฉด์ ๋ชจ๋ํฐ๋ ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋ค๋ฅธ ์ค๋ ๋ ๊ฐ์ ๋๊ธฐํํ ๋ ์ฌ์ฉํ๋ค. ๋ฎคํ ์ค๋ ์ด์์ฒด์ ์ปค๋์ ์ํด์ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ system call๋ก ์ธํ์ฌ ์๋๊ฐ ๋๋ฆฌ๊ณ ๊ทธ์ ๋ฐํด ๋ชจ๋ํฐ๋ ํ๋ ์ ์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ทธ ์์ฒด์์ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
๋น๋๊ธฐ, ๋๊ธฐ, ๋ธ๋กํน, ๋ ผ๋ธ๋กํน์ ๊ฐ๋ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์
์ฒ๋ฆฌํด์ผํ ์์ ๋ค์ ์ด๋ ํ ํ๋ฆ์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ธ์ง์ ๋ฐ๋ผ ๋๊ธฐ์ ๋น๋๊ธฐ๋ก ๋๋ ์ ์์ต๋๋ค.
- 2๊ฐ ์ด์์ ์ฃผ์ฒด๊ฐ ์์ ์ ๋์์ ์์ํ๊ฑฐ๋, ๋์์ ๋๋ด๊ฑฐ๋, ํ ์ฃผ์ฒด๊ฐ ์์ ์ ๋๋๊ณผ ๋์์ ๋ค๋ฅธ ์ฃผ์ฒด๊ฐ ์์ ์ ์์ํ๋ ํ๋ฆ์ ๋๊ธฐ๋ผ๊ณ ํฉ๋๋ค.
- ๋น๋๊ธฐ๋ 2๊ฐ ์ด์์ ์ฃผ์ฒด๊ฐ ๊ฐ์ ๋ณ๋์ ์์์๊ฐ ๋๋ ์ข ๋ฃ ์๊ฐ์ ๊ฐ์ง๋ฉฐ ์์ ์ ์ฒ๋ฆฌํ๋ ํ๋ฆ์ ๋๋ค.
์ฒ๋ฆฌ๋์ด์ผ ํ๋ ํ๋์ ์์ ์ด ์ ์ฒด์ ์ธ ์์ ์ ํ๋ฆ์ ๋ง๋์ง ์๋ง๋์ง์ ๋ฐ๋ผ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
- ๋ธ๋กํน์ด๋ ํจ์๋ฅผ ํธ์ถํ ์ฃผ์ฒด๊ฐ ์ ์ด๊ถ์ ํจ์์๊ฒ ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์์ ํ๋ฆ์ด ๋ฉ์ถ๊ณ , ํจ์๊ฐ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ์์ ์ ์ด์ด๊ฐ ์ ์์ต๋๋ค.
- ๋ ผ๋ธ๋กํน์ด๋ ํจ์๋ฅผ ํธ์ถํ ์ฃผ์ฒด๊ฐ ์ ์ด๊ถ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํจ์์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ ์ ์ฒด์ ์์ ํ๋ฆ์ ์ด์ด๊ฐ๋๋ค.
๋น๋๊ธฐ, ๋๊ธฐ, ๋ธ๋กํน, ๋ ผ๋ธ๋กํน์ ๊ฐ ์กฐํฉ์ ํน์ง์ ๋งํด์ฃผ์ธ์
๋๊ธฐ + ๋ธ๋กํน
- ํํ๊ฒ ์ ํ ์ ์๋ ๋๊ธฐ ์์
๋ฐฉ์์
๋๋ค.
- ๋๊ธฐ์ด๊ธฐ ๋๋ฌธ์ 2๊ฐ ์ด์์ ์ฃผ์ฒด๊ฐ ์์ ํ๋ฆ์ ๋ง์ถฅ๋๋ค. ๊ธฐ๋ฅA๊ฐ ๋จผ์ ๊ฐ๋ฐ๋ ํ์์ผ ๊ธฐ๋ฅB๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋ ์ํฉ์ ์์๋ก ๋ค ์ ์์ต๋๋ค.
- ๋ธ๋กํน์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA๋ฅผ ๊ฐ๋ฐํ๋ ๋์ ์๋ฃ๋ ๋๊น์ง ์ ์ฒด์ ์ธ ์์ ์ ํ๋ฆ์ด ๋ฉ์ถฅ๋๋ค. ๊ธฐ๋ฅA์ ๊ธฐ๋ฅB๋ฅผ ๋์์ ๊ฐ๋ฐํ ์ ์๊ณ , ๊ธฐ๋ฅA์ ๊ฐ๋ฐ์ด ์๋ฃ๋ ํ์์ผ ๊ธฐ๋ฅB์ ๊ฐ๋ฐ์ ์์ํ ์ ์์ต๋๋ค.
๋๊ธฐ + ๋ ผ๋ธ๋กํน
- ๋ชจ๋ ์คํ๊ณผ ํ๋ฆ์ด ์์ฐจ์ ์ด๊ธฐ ๋๋ฌธ์ ์ ์ดํ๊ธฐ ์ฌ์ด ์กฐํฉ์
๋๋ค.
-
๋๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA์ ๊ธฐ๋ฅB์ ๊ฐ๋ฐ ์์๊ฐ ์ ํด์ ธ ์์ต๋๋ค.
-
๋ ผ๋ธ๋กํน์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA๋ฅผ ๊ฐ๋ฐํ๋ ๋์ ์ ์ฒด์ ์ธ ์์ ํ๋ฆ์ด ๋ฉ์ถ์ง ์์ต๋๋ค. ๋ค๋ง ๊ธฐ๋ฅA์ ๊ฐ๋ฐ์ด ์๋ฃ๋์๋์ง ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๋ polling ์์ ์ด ํ์ํฉ๋๋ค.
๋์์ ๋๊ธฐ์ ์ธ ์์ ์ด๋ผ ๊ธฐ๋ฅA๊ฐ ๊ฐ๋ฐ๋๋ ๋์ ๊ธฐ๋ฅB๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์์๋ Aโ B์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
๋น๋๊ธฐ + ๋ธ๋กํน
- ์์
์ ํ๋ฆ์ ๋น๋๊ธฐ๋ก ์ค๊ณํ์ง๋ง ๋ธ๋กํน์ด๊ธฐ ๋๋ฌธ์ ๋๊ธฐ + ๋ธ๋กํน๊ณผ ๊ฐ์ ํ๋ฆ์ ๊ฐ์ง๋๋ค. ์ด๋ ๊ฐ์ฅ ๋นํจ์จ์ ์ธ ๋ชจ๋ธ๋ก ์๋์น ์๊ฒ ๋์ํฉ๋๋ค. ๋๋ ์ง๊ด์ ์ธ ์ฝ๋ ํ๋ฆ์ ์ ์งํ๋ฉด์ ์์
์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
- ๋น๋๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA์ ๊ธฐ๋ฅ B์ ๊ฐ๋ฐ ์์๊ฐ ์์ต๋๋ค. ์๋ฌด๋ ๊ฒ๋ ๊ฐ๋ฐํด๋ ๋ฉ๋๋ค.
- ๋ธ๋กํน์ด๋ผ ๊ธฐ๋ฅA๋ฅผ ๊ฐ๋ฐํ๋ ๋์์๋ ๊ธฐ๋ฅ B๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ๊ธฐ๋ฅA์ ๊ฐ๋ฐ์ด ์๋ฃ๋๊ณ ๋์ ๊ธฐ๋ฅ B๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ + ๋ ผ๋ธ๋กํน
- ์ฑ๋ฅ๊ณผ ์์์ ํจ์จ ์ธก๋ฉด์์ ๊ฐ์ฅ ์ฐ์ํ ์กฐํฉ์
๋๋ค.
- ๋น๋๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA์ ๊ธฐ๋ฅ B์ ๊ฐ๋ฐ ์์๊ฐ ์์ต๋๋ค.
- ๋ ผ๋ธ๋กํน์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅA๋ฅผ ๊ฐ๋ฐํ๋ ๋์ ๊ธฐ๋ฅB๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
์ด๋ค ์กฐํฉ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ ์๊ฐํ์๋์? ๊ทธ ์ด์ ๋?
๋น๋๊ธฐ + ๋ ผ๋ธ๋กํน ์กฐํฉ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฐ ์์์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ํ ์ ์์ต๋๋ค. (๋น๋๊ธฐ) ๋ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋์ ์์ ํ๋ฆ์ด ๋ฉ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ๋์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. (๋ ผ๋ธ๋กํน)
์ด๋ค ์กฐํฉ์ด ๊ฐ์ฅ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํ์๋์? ๊ทธ ์ด์ ๋?
๋น๋๊ธฐ + ๋ธ๋กํน ์กฐํฉ์ด ๊ฐ์ฅ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฐ ์์์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ๊ฐ๋ฐ์ ํ ์ ์์ง๋ง, ํ๋์ ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ๋๋ ๋์ ์์ ํ๋ฆ์ด ๋ฉ์ถฐ ๋์์ ๋ค๋ฅธ ๊ฐ๋ฐ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ์์์ ๋ฐ๋ผ ์ ์ฒด์ ์ธ ์์ ํ๋ฆ์ด ์๋์น ์๊ฒ ์ ํด์ง๋๋ค.
deadlock์ด๋ ๋ฌด์์ธ๊ฐ์?
๋ฐ๋๋ฝ์ ํ๋ก์ธ์ค๊ฐ์ ์๋ก๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ block๋ ์ํ์ ๋๋ค. ์์์ ๋์ ์ถฉ์กฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
deadlock ๋ฐ์ ์กฐ๊ฑด 4๊ฐ์ง๊ฐ ๋ฌด์์ธ๊ฐ์?
๋ฐ์ ์กฐ๊ฑด์๋ ์ํธ ๋ฐฐ์ , ๋น์ ์ , ์ ์ ๋๊ธฐ, ์ํ ๋๊ธฐ๊ฐ ์์ต๋๋ค. ์ํธ ๋ฐฐ์ ๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ๊ฒ์ ๋๋ค.
๋น์ ์ ์กฐ๊ฑด์ ํ๋ก์ธ์ค๊ฐ ์์์ ๋ด๋์ ๋ฟ ๊ฐ์ ๋ก ๋นผ์๊ธฐ์ง ์๋ ๊ฒ์ ๋๋ค.
๊ทธ ๋ค์์ผ๋ก ์ ์ ๋๊ธฐ๋ ์์์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆด ๋ ๋ณด์ ์์์ ๋์ง ์๊ณ ๊ณ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ํ๋๊ธฐ๋ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ๊ฐ์ ์ฌ์ดํด์ด ํ์ฑ๋์ด์ผ ํฉ๋๋ค.
์ 4๊ฐ์ง ์กฐ๊ฑด์ด ๋์์ ์ฑ๋ฆฝํ ๋ deadlock์ด ๋ฐ์ํฉ๋๋ค.
4๊ฐ์ง๋ฅผ ์ ๋ถ ์ด์ด์ ์๊ฐํด๋ณด๋ฉด ์๋ก ์ํธ๋ฐฐ์ ํ๊ณ ์๋ ํ๋ก์ธ์ค๊ฐ ์๋ก์ ์์์ ์ํ๋ฉด ์ฌ์ดํด์ด ๋ฐ์ํ ๊ฒ์ด๊ณ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ์์์ ๋์ง ์๊ณ ๊ณ์ ๊ฐ์ง๊ณ ์๊ณ ๋ ๋น์ ์ ์ผ๋ก ํ๋ก์ธ์ค ์์์ ๋นผ์์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๋๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ์ ๋ฐ์ ์๋ ๊ฒ์ ๋๋ค.
deadlock ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์๋ ๋ฌด์์ด ์๋์?
deadlock ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์๋ deadlock prevention, deadlock avoidance, deadlock detection and recovery, deadlock ignorance๊ฐ ์์ต๋๋ค.
- deadlock prevention์ ๋ฌด์์ธ๊ฐ์?
์์ ํ ๋น ์ ๋ฐ๋๋ฝ์ 4๊ฐ์ง ํ์ ์กฐ๊ฑด ์ค ์ด๋ ํ๋๋ฅผ ๋ง์กฑํ์ง ์๊ฒ ํ๋ ๊ฒ์ ๋๋ค. ์ฐ์ mutual exclusion์ ๋ถ์ ํ๋ฉด ๊ณต์ ํด์๋ ์๋๋ ์์์ mutual exclusion์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
hold and wait๋ฅผ ๋ถ์ ํ๊ฒ ๋๋ฉด ํ๋ก์ธ์ค ์์ ์ ๋ชจ๋ ํ์ํ ์์์ ํ ๋น ๋ฐ๊ฒ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์์์ด ํ์ํ ๊ฒฝ์ฐ ๋ณด์ ์์์ ๋ชจ๋ ๋ด๋๊ณ ๋ค์ ์์ฒญํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋น์ ์ ๋ถ์ ์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ณด์ ํ ์์์ด ์ ์ ๋๊ฒ ํ๊ฑฐ๋ ๋ชจ๋ ํ์ํ ์์์ ์ป์ ์ ์์ ๋ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์์์ํค๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ํ ๋๊ธฐ ๋ถ์ ์ ์์์ ๊ณ ์ ํ ๋ฒํธ๋ฅผ ํ ๋นํ๊ณ ๋ฒํธ ์์๋๋ก ์์์ ์๊ตฌํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ฐฉ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฑ๋ฅ ์ ํ์ starvation ๋ฌธ์ ๋ฅผ ์ ๋ฐํฉ๋๋ค.
- deadlock avoidance๋ ๋ฌด์์ธ๊ฐ์?
๊ต์ฐฉ์ํ ํํผ๋ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ฉด ํผํด๋๊ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์์ ์๊ตฌํ ๋ ์์คํ ์ ์์์ ํ ๋นํ ํ์๋ ์์ ์ํ๋ก ๋จ์ ์๊ฒ ๋๋์ง๋ฅผ ๊ฒ์ฌํ์ฌ ๊ต์ฐฉ ์ํ๋ฅผ ํํผํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์์ ์ํ์ ์์ผ๋ฉด ์์์ ํ ๋นํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ์์์ ํด์ ํ ๋๊น์ง ๋๊ธฐํฉ๋๋ค. ์์คํ ์ด ์์ ์ํ์ ์์ผ๋ฉด ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์๊ณ , ๋ถ์์ ์ํ์ ์์ผ๋ฉด ๋ฐ๋๋ฝ์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
ํํผ์ ๊ฒฝ์ฐ ์์์ ์ ํ ๋น ์ธ์คํด์ค์ ๊ฐ์์ ๋ฐ๋ผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ค๋ฆ ๋๋ค. 1๊ฐ ์ธ์คํด์ค๋ผ๋ฉด ์์ ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๊ณ 2๊ฐ ์ด์์ ์ธ์คํด์ค๋ผ๋ฉด bankerโs ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
- ์์ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด์์ธ๊ฐ์?
์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค์ ๋ฏธ๋ ์์ ํ ๋น์ ๊ทธ๋ํ๊ฐ ์ฌ์ดํด์ด ์๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ์์ฒญ ์์์ ํ ๋นํ์ง ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- bankerโs algorithm์ ๋ฌด์์ธ๊ฐ์?
ํ๋ก์ธ์ค์ ์์ ํํ์ ๋ฐ๋ผ์ ์ต๋ ์์์ ํ์ ํ์ฌ ํน์ ์์์ ๋ง์ถฐ ํ ๋นํ์ ๋, deadlock์ด ๋ฐ์ํ์ง ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์์ ๋ชจ๋ ์ฌ์ฉํ๋ฉด ์์์ ๋ฐ๋ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ์๋ก ํ๋ณด๋ ์์์ด ์ ์ ๋์ด๋ ์์์ ๋ง์ด ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๊น์ง ๋ชจ๋ ์๋ฃํ ์ ์์ต๋๋ค. ์์์ ์ง๊ธ ๋น์ฅ ์ค ์ ์์์๋ ๋ง์ฝ ๋ถ์์ ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ฉด ์์์ ์ฃผ์ง ์์ต๋๋ค. ์ด๊ฒ์ ํ๋จํ๋ ๊ธฐ์ค์ ์ต๋ ์์ ์์ฒญ๊ณผ ํ์ฌ ๊ฐ์ฉ ์์์ ์ถฉ์กฑ ์ฌ๋ถ์ ๋๋ค.
- deadlock detection and recovery๊ฐ ๋ฌด์์ธ๊ฐ์?
๋ฐ๋๋ฝ ํ์ง ๋ฐ ํ๋ณต๋ ํํผ์ ๋น์ทํ๊ฒ ๋์ํฉ๋๋ค. ํ์ง๋ง ๋ฐ๋๋ฝ ๋ฐ์์ ํ์ฉํ์ง๋ง ๊ทธ์๋ํ ํ์ง ๋ฃจํด์ ๋์ด์ ๋ฐ๋๋ฝ์ด ๋ฐ๊ฒฌ๋๋ฉด ํ๋ณต๋๋ ๋ฐฉ์์ ์ฑํํ๊ณ ์์ต๋๋ค.
ํ์ง๋ single instance์ ๊ฒฝ์ฐ wait-for graph๋ฅผ multiple instance๋ผ๋ฉด bankers algorithm์ ์ด์ฉํฉ๋๋ค.
- deadlock recovery๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ํ ์ ์๋์?
๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ ์ฒซ ๋ฒ์งธ๋ก process๋ฅผ ๋๋ด๋ ๋ฐฉ์๊ณผ ์์ ์ ์ ์ ํ๋ ๋ฐฉ์์ด ์์ต๋๋ค. ํ๋ก์ธ์ค๋ฅผ ๋๋ด๋ ๋ฐฉ์์ ๋ชจ๋ ๊ต์ฐฉ ์ํ์ ํ๋ก์ธ์ค๋ฅผ ์ค๋จํ๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด์ ์ธ์์ ์ผ๋ก ์์ ๋ ๋ฐฉ์์ ๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์์์ ์ ์ ํ๊ฒ ๋๋ ๊ฒ์ธ๋ฐ ์์ ์ํ๋ก rollbackํ์ฌ process๋ฅผ ์ฌ์์ํฉ๋๋ค. ๊ทธ๋ ๊ฒ๋๋ฉด ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๋์ผํ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ ํฌ์ ํ๋ก์ธ์ค๋ก ์ ์ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- deadlock ignorance๊ฐ ๋ฌด์์ธ๊ฐ์?
deadlock์ด ์์คํ ์ด ์ฑ ์์ง์ง ์๋ ๊ฒ์ ๋๋ค. ํ๋ ์ด์์ฒด์ ๋ ์ด๋ฐฉ๋ฒ์ ์ฑํํ๊ณ ์์ต๋๋ค. ์ ์ ๋๊ธฐ๊ฐ ์ด ๋ฐฉ๋ฒ ์ค์ ํ๋ ์ ๋๋ค.
์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ํ ๋น ๋ฐฉ๋ฒ์ ์ข ๋ฅ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์. -> (์ฐ์ ํ ๋น, ๋ถ์ฐ์ ํ ๋น) ๊ฐ๊ฐ์ ์ข ๋ฅ ํน์ง ์ค๋ช
์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ํ ๋น ๋ฐฉ๋ฒ์๋ ๋จผ์ ํฌ๊ฒ ์ฐ์ ํ ๋น๊ณผ ๋ถ์ฐ์ ํ ๋น์ด ์์ต๋๋ค. ์ฐ์ ํ ๋น์ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ ์ฌ๋๋๋ก ํ๋ ํ ๋น์ด๊ณ ๋ถ์ฐ์ ํ ๋น์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์์ญ์ ๋ถ์ฐ๋์ด ์ฌ๋ผ๊ฐ๋ ํ ๋น์ ๋๋ค. ์ฐ์ํ ๋น์๋ ๊ณ ์ ๋ถํ ๋ฐฉ์๊ณผ ๊ฐ๋ณ ๋ถํ ๋ฐฉ์์ด ์กด์ฌํ๋๋ฐ์. ๊ณ ์ ๋ถํ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฃผ์ด์ง ๊ฐ์๋งํผ์ ์๊ตฌ์ ์ธ ํํฐ์ ์ผ๋ก ๋ฏธ๋ฆฌ ๋๋์ด๋๊ณ ๊ฐ ํํฐ์ ์ ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ์ฌํด ์คํํฉ๋๋ค. ๊ทธ์ ๋ฐํด ๊ฐ๋ณ ๋ถํ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ํํฐ์ ์ ํฌ๊ธฐ, ๊ฐ์๊ฐ ๋์ ์ผ๋ก ๋ณํ๋ ๋ฐฉ์์ ๋๋ค. ๋ถ์ฐ์ ํ ๋น์๋ paging, segmenting, paged segmentation ๋ฐฉ์์ด ์กด์ฌํฉ๋๋ค.
Paging ๊ธฐ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํ์ด์ง ๊ธฐ๋ฒ์ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ๋์ผํ ํฌ๊ธฐ์ ํ์ด์ง ๋จ์๋ก ๋๋์ด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก ๋ค๋ฅธ ์์น์ ํ์ด์ง๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ด์ง์ ๋์ผํ ํฌ๊ธฐ์ ํ๋ ์์ผ๋ก ๋ฏธ๋ฆฌ ๋๋์ด ๋ก๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๋จ์๊ฐ ๋์ผํ ํฌ๊ธฐ์ ํ์ด์ง ๋จ์์ด๋ฏ๋ก ์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ์ง ์๊ณ , ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฌธ์ ๋ ๊ณ ๋ คํ ํ์๊ฐ ์์ต๋๋ค.
Paging์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๋จ์๊ฐ ๋์ผํ ํฌ๊ธฐ์ ํ์ด์ง ๋จ์์ด๋ฏ๋ก ๋จผ์ ์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ์ง ์๊ณ , ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฌธ์ ๋ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋๋ฒ์จฐ๋ก Swapping์ด ์ฉ์ดํด์ง๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๊ทธ์ ๋ฐํด ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๊ฐ ํญ์ ํ์ด์ง ํฌ๊ธฐ์ ๋ฐฐ์๊ฐ ๋๋ค๋ ๋ณด์ฅ์ด ์์ผ๋ฏ๋ก ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ ์ค ์ ์ผ ๋ง์ง๋ง์ ์์นํ ํ์ด์ง์์๋ ๋ด๋ถ ์กฐ๊ฐ์ด ๋ฐ์ํ ์ ์๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ํด์ ํ์ด์ง ํ ์ด๋ธ์ ๋จผ์ ์ ๊ทผํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค์ ์ ์ผ๋ก 2๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํฉ๋๋ค. ๋ ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ์ง๊ณ ์์ด ํ์ด์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ๋ฐฉ๋ํด์ง๋ ๋ฌธ์ ๊ฐ ์๊น๋๋ค.
์บ์์ ์ง์ญ์ฑ์ ๋ํด ์ค๋ช ํ์ธ์.
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋๊ฐ ๋น ๋ฅธ ์ฅ์น์ ๋๋ฆฐ ์ฅ์น๊ฐ์ ์๋์ฐจ์ ๋ฐ๋ฅธ ๋ณ๋ชฉ ํ์์ ์ค์ด๊ธฐ ์ํ ๋ฒ์ฉ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. ์ด๋ฌํ ์ญํ ์ ์ํํ๊ธฐ ์ํด์๋ CPU ๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ด๋ ์ ๋ ์์ธกํ ์ ์์ด์ผ ํฉ๋๋ค. ์บ์์ ์ฑ๋ฅ์ ์์ ์ฉ๋์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ CPU ๊ฐ ์ดํ์ ์ฐธ์กฐํ , ์ธ๋ชจ ์๋ ์ ๋ณด๊ฐ ์ด๋ ์ ๋ ๋ค์ด์๋๋์ ๋ฐ๋ผ ์ข์ฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ๋ ์ ์ค์จ(Hit rate)์ ๊ทน๋ํ ์ํค๊ธฐ ์ํด ๋ฐ์ดํฐ ์ง์ญ์ฑ(Locality)์ ์๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ง์ญ์ฑ์ ์ ์ ์กฐ๊ฑด์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ท ๋ฑํ๊ฒ Access ํ์ง ์๋๋ค๋ ํน์ฑ์ ๊ธฐ๋ณธ์ผ๋ก ํฉ๋๋ค. ์ฆ, Locality๋ ๊ธฐ์ต ์ฅ์น ๋ด์ ์ ๋ณด๋ฅผ ๊ท ์ผํ๊ฒ Access ํ๋ ๊ฒ์ด ์๋ ์ด๋ ํ ์๊ฐ์ ํน์ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ํน์ฑ์ธ ๊ฒ์ ๋๋ค.
์ด ๋ฐ์ดํฐ ์ง์ญ์ฑ์ ๋ํ์ ์ผ๋ก ์๊ฐ ์ง์ญ์ฑ(Temporal Locality)๊ณผ ๊ณต๊ฐ ์ง์ญ์ฑ(Spatial Locality)์ด ์์ต๋๋ค.
์๊ฐ ์ง์ญ์ฑ์ ์ต๊ทผ์ ์ฐธ์กฐ๋ ์ฃผ์์ ๋ด์ฉ์ ๊ณง ๋ค์์ ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ์ด๊ณ , ๊ณต๊ฐ ์ง์ญ์ฑ์ ๋๋ถ๋ถ์ ์ค์ ํ๋ก๊ทธ๋จ์ด ์ฐธ์กฐ๋ ์ฃผ์์ ์ธ์ ํ ์ฃผ์์ ๋ด์ฉ์ด ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ์ ๋๋ค.
์บ์ ๋ผ์ธ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
์บ์์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ์ฌ ์ถ๋ ฅํ ์ ์๋๋ก ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์บ์๋ผ์ธ์ ์ฌ์ฉํฉ๋๋ค.
ํ์ด์ง ๊ต์ฒด๊ฐ ์ ํ์ํ๊ฐ์?
CPU๊ฐ ์ฐธ์กฐํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ด์ง๊ฐ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์์ง ์๋ค๋ฉด page fault๊ฐ ๋ฐ์ํฉ๋๋ค.
page fault๊ฐ ๋ฐ์ํ๋ฉด ๋์คํฌ์์ ํด๋น ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ page frame์ผ๋ก ๋ถ๋ฌ ๋ค์ ๋๋ค.
๋น์ด์๋ page frame์ด ์์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ ๊ธฐ์กด์ ์ ์ฌ๋ page frame๊ณผ ์ฌ์ฉํ page frame์ ๊ต์ฒด๊ฐ ํ์ํฉ๋๋ค.
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์๋ ๋ฌด์์ด ์๋์? ๊ฐ๊ฐ์ ํน์ง์?
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์๋ Optimal, FIFO, LRU, LFU, Clock ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค.
-
Optimal
-
๋ฏธ๋์ ์ฐธ์กฐ๋ ํ์ด์ง ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์๊ณ ์๋ค๋ ๊ฐ์ ์ด ์ ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํฉ๋๋ค.
ํ์ด์ง ๋ถ์ฌ์จ์ด ๊ฐ์ฅ ์์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ชจ๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ upper bound๋ฅผ ์ ๊ณตํ์ง๋ง, ์ค์ ์์คํ ์์ ์ฌ์ฉํ์ง ๋ชปํฉ๋๋ค.
-
-
FIFO
-
๋จผ์ swap in ๋ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
ํ๋ก์ธ์ค์ ํ ๋น๋ page frame์ด ๋์ด๋๋ฉด ์คํ๋ ค ํ์ด์ง ๋ถ์ฌ์จ์ด ๋์์ง๋ FIFO Anomaly๊ฐ ์กด์ฌํฉ๋๋ค.
-
-
LRU
-
๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํ๋ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ฐ์ํ ์์ ์ด์ ์ ํ์ด์ง ์ฐธ์กฐ ์ด๋ ฅ์ ์ฐธ๊ณ ํ์ฌ victim ํ์ด์ง๋ฅผ ์ ํํฉ๋๋ค.
-
-
LFU
-
ํ์ด์ง์ ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํ๋ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๊ฐ์ฅ ์ ์ ์ฐธ์กฐ ํ์๋ฅผ ๊ฐ์ง ํ์ด์ง๊ฐ ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด, ์์๋ก victim ํ์ด์ง๋ฅผ ์ ์ ํฉ๋๋ค.
-
-
Clock
-
ํ์ด์ง์ reference bit๋ฅผ ๋์ด ํฌ์ธํฐ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ์ด๋์ํค๋ฉด์ reference bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
ํฌ์ธํฐ๋ฅผ ์ด ๋๋ฒ ํ์ ์ํต๋๋ค. ์ฒซ ๋ฒ์งธ ํ์ ์์๋ ํ์ด์ง์ reference bit๊ฐ 1์ธ ๊ฒ์ 0์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ ๋ฒ์งธ ํ์ ์์ ํ์ด์ง์ reference bit๊ฐ 0์ธ ๊ฒ์ victim ํ์ด์ง๋ก ์ ์ ํฉ๋๋ค.
๋ง์ฝ ํ์ด์ง์ Write ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ก๋ค๋ฉด modified bit๊ฐ 1์ด ๋ฉ๋๋ค. reference bit๊ฐ 0์ด๋ฉด์ modified bit๊ฐ 1์ธ ํ์ด์ง๋ disk ๋ก swap outํ ๋ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋์คํฌ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ IO ์์ ์ด ๋๋ฐ๋ฉ๋๋ค.
์ฑ๋ฅ์ ์ํด reference bit๊ฐ 0์ธ ํ์ด์ง๋ค ์ค modified bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ ์ฐ์ ์ ์ผ๋ก victim ํ์ด์ง๋ก ์ ์ ํ๋ ๋ฐฉ์์ด ์์ต๋๋ค.
-
FIFO์ LRU์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
FIFO ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๊ธฐ ๋๋ฌธ์ 1๋ฒ์งธ๋ก ๋ค์ด์จ ํ์ด์ง๊ฐ ์ต๊ทผ๊น์ง ์ฐธ์กฐ๋์์๋ ๋ถ๊ตฌํ๊ณ victim ํ์ด์ง๋ก ์ ์ ๋ฉ๋๋ค.
LRU ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๊ธฐ ๋๋ฌธ์ 1๋ฒ์งธ๋ก ๋ค์ด์จ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐํ๋ค๋ฉด ํด๋น ํ์ด์ง๋ victim ํ์ด์ง ๋์์์ ๋ฉ์ด์ง๋๋ค.
LRU์ LFU์ ๋น๊ตํด๋ณด์ธ์. LRU์ LFU ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ป๊ฒ ๊ตฌํ๋์๋์ง ์์๋์? ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋งํด๋ณด์ธ์
LRU์ LFU ๋น๊ต
- LRU ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ฐ์ํ ์ง์ ์ ํ์ด์ง ์ฐธ์กฐ ์์ ๋ง ํ์ธํ์ง๋ง, LFU๋ ์ฅ๊ธฐ์ ์ธ ์๊ฐ ๊ท๋ชจ๋ฅผ ํ์ธํ์ฌ victim ํ์ด์ง๋ฅผ ์ ์ ํ๊ธฐ ๋๋ฌธ์ ํ์ด์ง์ ์ธ๊ธฐ๋(์ฐธ์กฐ ํ์)๋ฅผ ์ ํํ ๋ฐ์ํฉ๋๋ค.
- LFU๋ ํ์ด์ง ์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ๋ฐ์ํ์ง ๋ชปํฉ๋๋ค. ์ต๊ทผ์ ๊ฑฐ์ ์ฐธ์กฐ๋์ง ์์ ํ์ด์ง์ผ์ง๋ผ๋ ๊ณผ๊ฑฐ์ ๋ง์ด ์ฐธ์กฐ๋์๋ค๋ฉด victim ํ์ด์ง๋ก ์ ์ ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ด์ง๋๋ค.
- LFU ์๊ณ ๋ฆฌ์ฆ์ LRU ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๊ตฌํ์ด ๋ณต์กํฉ๋๋ค.
LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ
-
LRU
-
์ฐธ์กฐ ์์ ์ด ๊ฐ์ฅ ์ค๋๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ๊ณ ๋ฅด๊ธฐ ๋๋ฌธ์ LinkedList๋ก ๊ตฌํํฉ๋๋ค. ๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ tail์ ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ head์ ๋ก๋๋ค.
ํ์ด์ง๊ฐ ์ฌ์ฐธ์กฐ ๋๋ฉด, ํด๋น ํ์ด์ง์ ์ฐธ์กฐ ์์ ์ ๊ฐ์ฅ ์ต๊ทผ์ด ๋ฉ๋๋ค. ๋ฐ๋ผ์ LinkedList์ ๋ง์ง๋ง(tail)์ผ๋ก ์ด๋ํฉ๋๋ค. ์ด๋ ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
victim ํ์ด์ง๋ฅผ ์ ์ ํ ๋ LinkedList์ head์ ์์นํ ํ์ด์ง๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
-
-
LFU
-
์ฐธ์กฐ ํ์๊ฐ ์ ์ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๊ธฐ ๋๋ฌธ์ Heap ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌํํฉ๋๋ค.
ํ์ด์ง๊ฐ ์ฌ์ฐธ์กฐ๋๋ฉด, ํด๋น ํ์ด์ง์ ์ฐธ์กฐ ํ์๊ฐ ์ฆ๊ฐํฉ๋๋ค. ์ดํ Heap ๊ตฌ์กฐ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
victim ํ์ด์ง๋ฅผ ์ ์ ํ ๋, root ๋ ธ๋๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค. ์ด๋์ ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค. ์ดํ heapify๋ฅผ ํตํด Heap ๊ตฌ์กฐ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ์๊ฐ๋ณต์ก๋๋ O(logN)์ด๋ฏ๋ก ์ด O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
-
ํ์ด์ง ์์คํ ์์ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์๋์? ๊ทธ ์ด์ ๋? ๊ทธ๋ผ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ง ์์คํ ์ ์ ์ฉํ ๊น์?
ํ์ด์ง ์์คํ ์์ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๋ ์ฃผ์ฒด๊ฐ ์ด์์ฒด์ ์ธ๋ฐ, LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ๋ ํ์ด์ง ์ ๋ณด๋ฅผ ์ด์์ฒด์ ๊ฐ ์ ํํ๊ฒ ์ ์ง ๋ชปํฉ๋๋ค.
- ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ฐ์ํ๋ฉด, CPU ์ ์ ๊ถ์ด ํ๋ก์ธ์ค์์ ์ด์์ฒด์ ๋ก ๋์ด๊ฐ๋๋ค. ์ด์์ฒด์ ๋ ํ์ด์ง ๊ต์ฒด๋ฅผ ์ํํ๋ฉด์, ํ์ด์ง์ ์ฐธ์กฐ ์์ ์ ๋ณด๋ฅผ ์ ์ ์์ต๋๋ค.
- ํ์ง๋ง ์ฐธ์กฐํ๋ ค๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ฉด, ํ์ด์ง ํ ์ด๋ธ์ ํตํด ํ๋์จ์ด์ ์ผ๋ก๋ง ์ฃผ์ ๋ณํ์ด ์ด๋ค์ง๋๋ค. ๋ฐ๋ผ์ ํ์ด์ง์ ์ฐธ์กฐ ์์ ์ด๋ ์ฐธ์กฐ ํ์๋ฅผ ์ด์์ฒด์ ๊ฐ ์์ง ๋ชปํฉ๋๋ค.
์ด์์ฒด์ ๊ฐ ๋ฐ ์ชฝ์ง๋ฆฌ ํ์ด์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ค์ ํ์ด์ง ์์คํ ์์ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ค์ ํ์ด์ง ์์คํ ์์ ์ ์ฉ๊ฐ๋ฅํ ์๊ณ ๋ฆฌ์ฆ์ Clock ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค
Clock ์๊ณ ๋ฆฌ์ฆ์ ๋์๋ฐฉ์์ ๋งํด์ฃผ์ธ์
ํ์ด์ง์ reference bit๋ฅผ ๋์ด ํฌ์ธํฐ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ์ด๋์ํค๋ฉด์ reference bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ victim ํ์ด์ง๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
ํฌ์ธํฐ๋ฅผ ์ด ๋๋ฒ ํ์ ์ํต๋๋ค. ์ฒซ ๋ฒ์งธ ํ์ ์์๋ ํ์ด์ง์ reference bit๊ฐ 1์ธ ๊ฒ์ 0์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ ๋ฒ์งธ ํ์ ์์ ํ์ด์ง์ reference bit๊ฐ 0์ธ ๊ฒ์ victim ํ์ด์ง๋ก ์ ์ ํฉ๋๋ค.
๋ง์ฝ ํ์ด์ง์ Write ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ก๋ค๋ฉด modified bit๊ฐ 1์ด ๋ฉ๋๋ค. reference bit๊ฐ 0์ด๋ฉด์ modified bit๊ฐ 1์ธ ํ์ด์ง๋ disk ๋ก swap outํ ๋ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋์คํฌ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ IO ์์ ์ด ๋๋ฐ๋ฉ๋๋ค.
์ฑ๋ฅ์ ์ํด reference bit๊ฐ 0์ธ ํ์ด์ง๋ค ์ค modified bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ ์ฐ์ ์ ์ผ๋ก victim ํ์ด์ง๋ก ์ ์ ํ๋ ๋ฐฉ์์ด ์์ต๋๋ค.
Thrashing์ด ๋ฌด์์ธ๊ฐ์? ์ด๋ฅผ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
์ฐ๋ ์ฑ์ด๋ ํ๋ก์ธ์ค์ ํ์ด์ง ๋ถ์ฌ์จ์ด ๊ณ์ํด์ ๋์์ง๋ ์ ์ํ์ ๋งํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ๋ก์ธ์ค์ ์๊ฐ ๋ง์ผ๋ฉด ๊ฐ ํ๋ก์ธ์ค๋ง๋ค page frame์ด ์ ๊ฒ ํ ๋น๋์ด ํ์ด์ง ๋ถ์ฌ์จ์ด ๋์์ง๋๋ค.
- ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ฐ์ํ๋ฉด ํ์ด์ง๊ฐ swap out, swap in๋ ๋ IO ์์ ์ด ๋๋ฐ๋๊ธฐ ๋๋ฌธ์ CPU ์ด์ฉ๋ฅ ์ด ๋ฎ์์ง๋๋ค.
- ์ด์์ฒด์ ๋ ๋ฎ์ CPU ์ด์ฉ๋ฅ ์ ๋ณด๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ๋ก์ธ์ค์ ์๋ฅผ ๋๋ฆฌ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๊ตญ ์ด๋ ํ๋ก์ธ์ค์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋์ฑ ๋ํ ์ํฉ์ ์ ํ ์ํต๋๋ค. ์ด์ ๊ฐ์ ์ํฉ์ ์ฐ๋ ์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
์ฐ๋ ์ฑ์ ์๋ฐฉํ๊ธฐ ์ํด์ Working Set์๊ณ ๋ฆฌ์ฆ, PFF(Page Fault Frequency) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
Page ์ฌ์ด์ฆ๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ํฌ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
ํ์ด์ง ์ฌ์ด์ฆ๊ฐ ์์ผ๋ฉด
- ํ์ด์ง ๊ฐ์๊ฐ ๋ง์์ง๊ณ , ํ์ด์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ์ปค์ ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์งํฉ๋๋ค.
- ๋ด๋ถ ์กฐ๊ฐ์ ๊ฐ์๊ฐ ๊ฐ์ํฉ๋๋ค.
- ํ์ด์ง์ ํ์ํ ์ ๋ณด์ ๋น์จ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ด์ฉ์ด ํจ์จ์ ์ ๋๋ค
ํ์ด์ง ์ฌ์ด์ฆ๊ฐ ํฌ๋ฉด
- ์ฐธ์กฐ๋ ์ฃผ์์ ์ธ์ ์ฃผ์๋ฅผ ๋ค์ ์ฐธ์กฐํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค๋ ๊ณต๊ฐ ์ง์ญ์ฑ ํ์ฉ ์ธก๋ฉด์์ ์ข์ต๋๋ค.
- ํ ๋ฒ์ ๋์คํธ ํค๋ ์์ง์์ผ๋ก ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ธฐ ๋๋ฌธ์ Disk Transfer ํจ์จ์ฑ ์ธก๋ฉด์์ ์ข์ต๋๋ค.