Github & Portfolio
๐งช Computer Science(26)
-
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๋๊ธฐํ
์๊ณ์์ญ(Critical Section) ๋ฉํฐ ์ค๋ ๋ฉ์ ๋ฌธ์ ์ ์์ ๋์ค๋ฏ, ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ๋ ์์ ์ ์คํํ๋ ์ฝ๋ ์์ญ์ ์๊ณ์์ญ(Critical Section)์ด๋ผ ํ๋ค. ์๊ณ์์ญ ๋ฌธ์ (Critical Section Problem) ํ๋ก์ธ์ค๋ค์ด Critical Section์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ํ๋กํ ์ฝ์ ์ค๊ณํ๋ ๊ฒ์ด๋ค. ํด๊ฒฐ์ ์ํ ๊ธฐ๋ณธ ์กฐ๊ฑด(Requirements) ์ํธ ๋ฐฐ์ (Mutual Exclusion) ํ๋ก์ธ์ค A๊ฐ Critical Section์์ ์คํ ์ค์ด๋ผ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ทธ๋ค์ด ๊ฐ์ง Critical Section์์ ์คํ๋ ์ ์๋ค. ์งํ(Progress) Critical Section์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ๋ณ๋์ ๋์์ด ์๋ ํ๋ก์ธ์ค๋ค๋ง Critical..
-
[์ด์์ฒด์ ] CPU ์ค์ผ์ค๋ฌ(CPU Scheduler)
์ค์ผ์ค๋ง ๋์์ Ready Queue์ ์๋ ํ๋ก์ธ์ค๋ค์ด๋ค. ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ค๋ฉด I/O๋ ์ธํฐ๋ฝํธ ๋ฐ์ ๋๋ ํ๋ก์ธ์ค ์ข ๋ฃ๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ๋ ๊ฒ FCFS(First Come First Served) ํน์ง ํ๋ก์ธ์ค์ ๋์ฐฉ ์์๋๋ก CPU๋ฅผ ํ ๋น ๋ฌธ์ ์ convoy effect ์์์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋๋ฌํ์ฌ ํจ์จ์ฑ์ ๋ฎ์ถ๋ ํ์์ด ๋ฐ์ํ๋ค. SJF(Shortest Job First) ํน์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ์ด๋ CPU ์์ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค์ ๋จผ์ CPU๋ฅผ ํ ๋น ๋ฌธ์ ์ starvation ์ฌ์ฉ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๊ฑฐ์ ์์ํ CPU๋ฅผ ํ ๋น๋ฐ์ ์ ์๋ค. ์ ์ ํ(Preemptive) ์ค์ผ์ค๋ง ํ๋ก์ธ์ค..
-
[์ด์์ฒด์ ] ๋ฉํฐ ํ๋ก์ธ์ค vs ๋ฉํฐ ์ฐ๋ ๋
๋ฉํฐ ํ๋ก์ธ์ค ํ๋์ ํ๋ก๊ฐ๋ฆ์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ ํ๋ก์ธ์ค๊ฐ 1๊ฐ์ ์์ ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ ํน์ง ์ฅ์ 1๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ด๋ ์์ ํ๋ก์ธ์ค ์ด์ธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ณ์ ์คํ๋๋ค. ๋จ์ Context Switching์ ์ํ ์ค๋ฒํค๋(์บ์ ์ด๊ธฐํ, ์ธํฐ๋ฝํธ ๋ฑ)๊ฐ ๋ฐ์ํ๋ค. ํ๋ก์ธ์ค๋ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์๊ธฐ ๋๋ฌธ์ ํต์ ํ๋ ๊ฒ์ด ์ด๋ ต๋ค. ๋ฉํฐ ์ฐ๋ ๋ ํ๋์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ ์ฐ๋ ๋๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ ์ฐ๋ ๋๊ฐ 1๊ฐ์ ์์ ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ ํน์ง ์ฅ์ ํ๋ก์ธ์ค๋ฅผ ์ํด ์์์ ํ ๋นํ๋ ์์คํ ์ฝ์ด๋ Context Switching์ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ค. ์ฐ๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, ํต์ ์ด ์ฝ๊ณ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋จ์ ํ๋์ ์ฐ๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด..
-
[์ด์์ฒด์ ] ํ๋ก์ธ์ค vs ์ฐ๋ ๋
๋ฉ๋ชจ๋ฆฌ๋? ๋ฉ๋ชจ๋ฆฌ๋ ์ปดํจํฐ์์ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฒ๋ฆฌ ๋์์ด๋ ๊ฒฐ๊ณผ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ์ ๋ณด๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์ฒ๋ฆฌ๋๋ค. ํ๋ก์ธ์ค์ ์ฐ๋ ๋์ ์ฐจ์ด ํ๋ก์ธ์ค(Process) ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค ํน์ง ์ด์์ฒด์ ๋ก๋ถํฐ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ๋๋ค.(๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ์ ๊ทผ X) ํ๋ก์ธ์ค๋ค์ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ํต์ ํ๊ธฐ ์ํด IPC๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ํ๋ก์ธ์ค๋ ์ต์ 1๊ฐ์ ์ฐ๋ ๋(๋ฉ์ธ ์ฐ๋ ๋)๋ฅผ ๊ฐ์ง๊ณ ์๋ค. PCB(Process Control Block, ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก) PCB๋ ํน์ ํ๋ก์ธ์ค์ ๋ํ ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ์ด์์ฒด์ ์ ์๋ฃ๊ตฌ์กฐ๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด, ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ๋์์ ๊ณ ์ ํ PCB๋ฅผ ..
-
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํ๋ณต(Recovery)
์ฅ์ ์ ์ ํ ํธ๋์ญ์ ์ฅ์ : ํธ๋์ญ์ ์ ์คํ ์ ๋ ผ๋ฆฌ์ ์ธ ์ค๋ฅ๋ก ๋ฐ์ํ ์ ์๋ ์๋ฌ ์ํฉ ์์คํ ์ฅ์ : H/W ์์คํ ์์ฒด์์ ๋ฐ์ํ ์ ์๋ ์๋ฌ ์ํฉ ๋ฏธ๋์ด ์ฅ์ : ๋์คํฌ ์์ฒด์ ์์์ผ๋ก ๋ฐ์ํ ์ ์๋ ์๋ฌ ์ํฉ ํ๋ณต(Recovery) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ์ ์ํ๋ก ๋ณต๊ตฌ์์ผ์ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ฅผ ๋ง๋๋ ๊ฒ ํ๋ณต์ ์ํ ๋ฐ์ดํฐ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ๋คํ(Dump)์ ๋ก๊ทธ(Log) ๋ ๊ฐ์ง๊ฐ ์๋ค. ๋คํ(Dump): ์ผ์ ์ฃผ๊ธฐ๋ก ์๋ณธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ฅธ ์ ์ฅ์ฅ์น์ ๋ณต์ฌํ๋ ๊ฒ ๋ก๊ทธ(Log): ๋ณ๊ฒฝ ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณ๊ฒฝ ์ฐ์ฐ์ด ๋ฐ์ํ ๋๋ง๋ค ๋ก๊ทธ ํ์ผ์ ์์ฑํ์ฌ ๊ธฐ๋กํ๊ณ , ํ๋ณตํ ๋ ๋ก๊ทธ์ ์ ํ ๋ด์ฉ์ ์ฌ์ฉํ์ฌ ๋ณต์ํ๋ ๋ฐฉ๋ฒ ๋ก๊ทธํ์ผ(Log File..
-
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํธ๋์ญ์ ๊ณ ๋ฆฝ ์์ค(Transaction Isolation Level)
์ค์์ฝ๊ธฐ(Dirty Read) ์ฝ๊ธฐ ์์ ์ ํ๋ ํธ๋์ญ์ A๊ฐ ์์ ์ ํ๋ ํธ๋์ญ์ B์ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์์ ์ค์ธ ํธ๋์ญ์ B๊ฐ ์์ ์ Rollbackํ ๊ฒฝ์ฐ ํธ๋์ญ์ A๋ ๋ฌดํจ๊ฐ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋๊ณ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ค. ๋ฐ๋ณต๋ถ๊ฐ๋ฅ ์ฝ๊ธฐ(Non-repeatable Read) ํธ๋์ญ์ A๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํธ๋์ญ์ B๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ (Update) ํธ๋์ญ์ A๊ฐ ๋ค์ ํ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์๊ธฐ๋ ๋ฌธ์ ํธ๋์ญ์ A๊ฐ ์ฝ๊ธฐ ์์ ์ ๋ค์ ํ ๋ฒ ๋ฐ๋ณตํ ๊ฒฝ์ฐ ์ด์ ์ ๊ฒฐ๊ณผ์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ํ์ ์ ๋ น๋ฐ์ดํฐ ์ฝ๊ธฐ(Phantom Read) ํธ๋์ญ์ A๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํธ๋์ญ์ B๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ (Insert) ํธ๋์ญ์ A๊ฐ ๋ค์ ํ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์๊ธฐ๋ ๋ฌธ์ ํธ๋์ญ์ A๊ฐ ..