Operating System Structure
ํ๋ก๊ทธ๋จ์ ๋๋ค๊ฐ IO๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด CPU๋ ์๋ํ์ง ์์ง๋ง ๊ทธ ๋์์ ๋ค๋ฅธ ์ผ์ ํ๊ฒ ๋ง๋ค๋ฉด ๋ ๋ง์ ์ผ์ ํ ์ ์๊ฒ ํ๋ค๋ ๊ฒ์ด ๋๊ธฐ์ด๋ค. Multiprograming์ ์ค์ํ ์ฑ์ง์ IO๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ์์ CPU๊ฐ ๋์ด์ ์ฌ์ฉํ ์ ์๋ ์ํฉ์ Switching์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. Multiprogramming์ CPU๊ฐ IO๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ, ์ฆ ๋ฉ์ถฐ์ผ ํ๋ ์ํฉ์์ ์ค์์นญ์ ํ๋ ๊ฒ์ด๋ค.
Multitasking == TImesharing
์ค์์นญ์ ๋นจ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. CPU๊ฐ ํ๋ ์๊ณ ์น๊ตฌ ๋๋ช ์ด์ ๊ฐ ํ๋ก๊ทธ๋จ์ ๋๋ฆฐ๋ค๊ณ ํด๋ณด์. ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์ค์์นญํ๋ฉด์ ํ๋ก๊ทธ๋จ 2๊ฐ๋ฅผ ๋๋ฆฐ๋ค๊ณ ํ๋ฉด ๋๊ธฐ์ง ์๊ณ ๋ณ๋ ฌ์ฒ๋ฆฌ ํ๋ ๊ธฐ๋ถ์ ๋ค๊ฒ ํ ์ ์๋ค. Interactiveํ ์ปดํจํ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ์ผ๋จ ์ค์์นญ์ด ๋นจ๋ผ์ผ ํ๋ค. ์ผ์ ์๊ฐ๋ง๋ค ์ค์์นญ์ ํ๋ค๋ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค. ์ค์ผ์ค๋ง์ ๊ฐ๋ ์ด ํ์ํ๊ฒ ๋๋ค. ์ ์ฒด ์์คํ ์๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์๋ค. ๋์คํฌ์ ์กด์ฌํ๊ฒ ๋๋๋ฐ ์ผ๋ถ๋ฅผ ์ ํํด์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ํ๊ฒ ๋๋ค. ์ ํํ๋ ๋ชจ๋์ ์ด์์ฒด์ ์ ์ผ๋ถ์ด๊ณ Job scheduler ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ํจ์ฌ ๋ ๋ง์ ํ๋ก๊ทธ๋จํํ ๋๋ ์ฃผ๋ ๊ฒ์ ์ค์ผ์ค๋ฌ๋ผ๊ณ ํ๋ค ,์ ๋ง ๊ทธ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ค์ผ์ค๋ฌ์ด๋ค. ์ ํํ๋ ๋ชจ๋์ธ ๊ฒ. ๋ ๊ฐ์ง ์ข ๋ฅ์ ์ค์ผ์ค๋ฌ๊ฐ ์กด์ฌํ๋ค. ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ฆฌ๋ ์ค์ผ์ค๋ฌ == Job scheduler ์ด๊ณ ๊ฐ๋ ์คํ์ด ๋๋ค.๊ทธ๋์ Long term scheduler๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ ๋ฒ์งธ์ ์ค์ผ์ค๋ฌ๋ CPU scheduler๋ผ๊ณ ํ๋ค. Ready jobs == Ready Queue๋ ํ๋ก๊ทธ๋จ๋ค์ด ๊ธฐ๋ค๋ฆฌ๋ ์ฅ์์ด๋ค. 10๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์๋ค๋ฉด ๊ทธ ์ค์ ํ๋๋ฅผ ๊ณจ๋ผ์ ์คํ์ ํด์ผ ํ๋๋ฐ ๊ทธ๊ฒ์ CPU scheduler์ ์ญํ ์ด๋ค. 1์ด์ 100๋ฒ ์ด์ ์คํ๋๊ฒ ๋๋ค. shorterm scheduler๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Virtual Memory 9์ฅ์ ๋์ค๋ ๋ด์ฉ
์์คํ ์ Utilization์ ์ํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋ก๋ํ๋ค๊ณ ๋งํ๋ค.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ 4๊ฐ์ job์ ์ฌ๋ ธ๋ค๊ณ ํ์. ํ์ง๋ง ์ฉ๋์ด ๋๋ฌด ๋ถ์กฑํ๋ค. ๊ทธ๋ผ 5๋ฒ์งธ Job์ ๋ก๋ํ ์ ์๋๋ฐ ๊ทธ๋ด ๋๋ ์์ฐ๊ณ ์๋ job์ ๋์คํฌ ์ชฝ์ผ๋ก ๋ด๋ ค๋ฒ๋ฆฌ๊ฒ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์กฑ์ ๋ณด์ถฉํ๊ธฐ ์ํด์ content๋ฅผ ๋์คํฌ๋ก ๋ณด๋ด๋ ์์ ์ swapping์ด๋ผ๊ณ ํ๋ค. ์ ์ ํ๋ก์ธ์ค๋ฅผ ๋๋ ค์ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Virtual Memeory๋ swapping ์๋ค๊ฐ ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒ์ ์๋ฏธํ๋ค. (์๋์ ๊ณ์ ์ค๋ช )
Virtual Memory
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋๋ณด๋ค ํฐ ํ๋ก๊ทธ๋จ์ ๋๋ฆด ์ ์๋๊ฐ? ํ๋๋์คํฌ์๋ ๋ ํฐ ์ฉ๋์ ์ ์ฅํ ์ ์๋ค. ์ดํ์ ์ฌ์ฉํ ๋ ๊ต์ฅํ ํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฉ๋์ ์ฐ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค. Physical ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์ ํ์ด ๋๋ค๊ณ ํ๋๋ผ๋ ๋์คํฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ฌ์ฉํ ์ ์๋ ๋๋์ ์ค ์ ์๋ค. Multiprogram๊ณผ Multitask๋ฅผ ํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ฐ ์ด๋ ๋์คํฌ๋ฅผ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ณ ์์ผ๋ฉด ๋๋ค.
Operating System Operations
์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ๊ณต์ ๋ Resource๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น. ๋ ธ๋๋ฐฉ์์ ๋ ธ๋๋ฅผ ๋ถ๋ฅผ ๋ ๋๊ฐ stop์ ๋๋ฅด๋ ๊ฒฝ์ฐ. ๋ง์ดํฌ๋ฅผ ๋ ์ ํ๋ ๊ฒฝ์ฐ. ๋ ๊ฐ์ง์ Issue๊ฐ ์๊ธด๋ค. ๋ฆฌ๋ชจ์ฝ์ ํน์ ํ ์ฌ๋์ด ์์ ํ๊ฒ ์งํค๊ณ ์์ด์ผ ํ๋ค. ๊ทธ ์งํค๋ ์ญํ ์ ํ๋ ๊ฒ์ด Kernel์ด ๋๋ค. kernel๋ง์ด stop ๋ฒํผ๊ณผ ๋ฒํธ๋ฅผ ๋๋ฅผ ์ ์๋ค. Kernel์ด ๋ฆฌ๋ชจ์ฝ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ด ์ค์ํ๋ฐ, ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ๋ฆฌ๋ชจ์ฝ์ ๋๋ฅผ ์ ์๋ค๋ ๊ฒ์ด ์ ์ผ ์ค์ํ ์ฌ์ค์ด๋ค. ๋ ๋ฒ์งธ์ ๊ฒฝ์ฐ๋ ์ผ์ ํ ์๊ฐ๋ง๋ค ์์ ๋ค์ด์ฃผ๋ ์ฅ๋น == ํ์ด๋จธ๊ฐ ์กด์ฌํ๋ค.
์ํํ Instruction == dual mode operation์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ผ์ ์๊ฐ๋ง๋ค term์ ๋ฐ๊พธ๋ ๊ฒ์ ํ์ด๋จธ๊ฐ ํ๋ค.
Dual Mode Operation
ํ๋๋ User mode์ด๊ณ ํ๋๋ Kernel mode์ด๋ค.
๋ฆฌ๋ชจ์ฝ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด kernel mode์ด๊ณ ๋ง์ดํฌ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด User mode์ด๋ค. Privileged Instruction์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค. ํ์ด๋จธ๋ฅผ ๊ฑด๋๋ฆด ์ ์๋ ๋ช ๋ น์ ์๋ฌดํํ ๋ ์ฃผ์ด์ง๋ฉด ์๋๋ค. ๊ทธ๋ฐ ๋ช ๋ น๋ค์ ์๋ฏธํ๋ค. user mode์์๋ ๊ถํ์ด ์๋ค.
User mode์์ ๋๊ณ ์๊ณ , Priviledged Instruction์ ๊ถํ์ด ์์ผ๋ฏ๋ก IO Device๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด OS์ kernelํํ ๋ถํ์ ํ๊ฒ ๋๋ค. kernel mode๋ก ์คํ์ ํด์ Priviledged Instruction์ ์ฌ์ฉํด์ IO Instruction์ ์ฌ์ฉํ๊ฒ ๋๋ค. mode_bit๊ฐ 0์ด๋ฉด Priviledged Instruction๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Kernel mode๋ก ๊ฐ๊ฒ ๋๋ฉด Priviledged Instruction๊ฐ 0์ผ๋ก ๋ณํ๋๋ค. Priviledged Instruction๊ฐ 1๋ก ๋ณํ๋๋ฉด user mode๋ก ์์ ํ ๋ชจ๋์์ ์ฌ์ฉ๋ ์ ์๋ค.
Advantage of dual mode operation
ํ๋์ ํ๋ก๊ทธ๋จ์ด ์ด์ํ ์ง์ ํ๋๋ผ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ๋๋ค. Mode๋ฅผ Violateํ๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ. ๊ทธ๋ Exception์ด ๋ฐ์ํ๊ฒ ๋๋ค. divide by 0์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ Exception์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ Exception์ด interrupt์ธ๋ฐ Interrupt๊ฐ ๋ฐ์ํ๋ฉด kernel์ด Interrupt Handler๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. Interrupt Handler๋ Kernel์ ์ผ๋ถ์ด๋ค. Kernel mode์์ ์๋ํ๋ค. Exception -> Kernel -> Interrupt Handler (Abnormal Termination == ํด๋น ํ๋ก๊ทธ๋จ๋ง ์ฃฝ์ธ๋ค). ์ด๋ ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋๋ค.
Timer
ํ๋์ ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ์ค๋ ์ก๊ณ ์๋ ๊ฒ์ ๋ง๊ธฐ ์ํ ํ ํฌ๋์ด๋ค. CPU scheduler๊ฐ User process๋ฅผ ์ ํํ๋ ค๊ณ ํ๋ค. ์ผ์ ์๊ฐ ์ดํ์ Interrupt๊ฐ ๋ ๋ผ๊ฐ๋๋ก Timer๋ฅผ ์ค์ ํ๋ค. ์ผ์ ์๊ฐ๋ณด๋ค ๋ CPU๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด Interrupt Handler๊ฐ Scheduler๋ฅผ ์คํ์์ผ์ Switching์ ์ํจ๋ค.
Multi-Mode Operation
Process Management
Process
ํ๋ก๊ทธ๋จ์ ๋๋ ์ ๋ ์คํ๋๋ ๊ฒ์ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค. (์คํ๋๊ณ ์์ด์ผ ํ๋ค) ๊ธฐ๋ณธ์ ์ธ Job์ ๋จ์๋ฅผ ๋งํ๋ค. Acitve ํ entity๋ฅผ ์๋ฏธํ๋ค. Resource๋ฅผ ํฌํจํ ๊ฐ๋ ์ด๋ค. ๋ณ์๋ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๊ฐ ์๋๋ผ ๋ฐ์ดํฐ๊ฐ ๋๋ค. ์ฆ, ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋๋ฐ ๊ทธ๊ฒ ๋ชจ๋ ํ๋ก์ธ์ค์ ํด๋นํ๊ฒ ๋๋ค., Dynamic Block๋ ํ๋ก์ธ์ค์ ์ผ๋ถ๊ฐ ๋๋ค๋ผ๋ ๊ฒ์ด๋ค.
์ฑ๊ธ ํ๋ก์ธ์ค ํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ํ๋์ด๋ค. 10๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ฉด ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ Address๊ฐ ๋ฐ๋ก ์ ์ฅ๋์ด์ผ ํ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ PC๋ 10๊ฐ๊ฐ ์กด์ฌํด์ผ ํ๋ค. ๋์ง์คํฐ, ๊ฐ ์ฃผ์๋ฅผ ๋ด๊ณ ์๋ ์ถ์์ ์ค๋ช ์ด ๋๋ค. ์ค์์นญ์ ํ ๋ ๋ค์ ํ๋ก์ธ์ค์ ์คํ ์ฃผ์๋ฅผ PC์ ๋ฃ์ด์ ์คํ์ ํ๊ฒ ๋๋ค.
์ผ์ ํ๋ Unit์ผ๋ก Job์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ํ๋ก์ธ์ค๋ค์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค๋ก ๋ถํฐ ๋ ๋ฆฝ๋๋๋ก ์ค์ ํ๋ค.
Thread
์๋๋ฅผ ๋ ๊ฐ ๋์ด ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ 2๊ฐ๊ฐ ๋์๊ฐ๋ค. ์๋ ํ๋๋ฅผ ํ๋ฆฐํธ ํ๋ ์ค ์์ ์ด ๊ฐ๋ฅํ๊ฐ? ๊ฐ๋ฅํ๋ค. ๋ ๊ฐ์ ํ๋ฆ์ด ์กด์ฌํ๊ณ ์๋ค. VSCode์ ๊ฒฝ์ฐ ๋ด๊ฐ ์ฝ๋ฉ์ ์์ฑํ ๋ ๊ณ์ ๋ด ์ฝ๋์ ์๋ฌ๊ฐ ์๋ ์ง ํ์ธํ๋ ํ๋ก๊ทธ๋จ์ด ํ๋๊ฐ ๊ณ์ ๋์๊ฐ๊ณ ์๋ค. ํ๋ฆ์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ๋ค. ํ๋์ ํ๋ก์ธ์ค ์์ ์ฌ๋ฌ ๊ฐ์ Thread๊ฐ ์กด์ฌํ ์ ์๋ค. Thread๋ ํ๋ก์ธ์ค๋ณด๋ค ์์ ๋จ์์ด๋ค. Thread์ Process์ ์ฐจ์ด์ ์ Resource๊ฐ ๊ณต์ ๋๋๊ฐ ์๋๊ฐ์ ์ฐจ์ด์ ์ด๋ค. ์๋๋ฅผ ๋ณด๊ฒ ๋๋ฉด ํ๋์ ํ์ผ์ ๋ค๋ฅธ ํ์ผ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค. ํ๋ฆฐํธ๋ฅผ ํ ๊ฒฝ์ฐ ๋ ํ์ผ ๋ชจ๋ ์ ๊ทผํ ์ ์๋๋ฐ ์ด๋ ํ๋์ ํ๋ก์ธ์ค ์์์ ๋ ๊ฐ์ ํ์ผ์ด ๊ณต์ ๋๊ณ ์๋ ์์์ด๊ธฐ ๋๋ฌธ์ด๋ค. Thread ์ ID๋ TID๋ผ๊ณ ๋ถ๋ฆฐ๋ค. word ํ๋์ Editing Thread์ Printing Thread ๋ ๊ฐ ์์ผ๋ฉด PC๊ฐ 2๊ฐ ์กด์ฌํ๋ค.
Task
Linux์ ๊ฒฝ์ฐ ์๋ก์ด THread์ Process๋ฅผ ๋ง๋ค ๋ ๊ณต์ ์์์ ๋ถ๋ถ์ ํ ๋น์ ํ ์ ์๋ค. ๊ทธ๋์ Task๋ผ๊ณ ํ์ณ์ ๋ถ๋ฅธ๋ค. Linux์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ง์ด๋ค.
Process Management
์ ์ผ ์ค์ํ ๊ฒ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ด๋ค. ํ๋๋ง ๋นผ๊ณ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ Kernel์ด ์ํ์ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ ๋น ๊ณต๊ฐ์ ํ๋ณดํ๊ณ ํ๋ก๊ทธ๋จ์ ๋ก๋ํ๋ ๊ฒ์ด ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ํ์ํ๋ค. ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ PID๊ฐ ํ์ํ๋ค. ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ก์ ๋ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ๋ค ์ ์ฅํ ์ ์๋ ํ๊ฐ ์์ด์ผ ํ๋ค. Process Control Block์ด๋ผ๊ณ ํ๋ค.
Ready Queue ์คํํ ์ค๋น๊ฐ ๋ ํ๋ก์ธ์ค๊ฐ ์คํ์ ํ๊ธฐ ์์ํ๊ณ Delete Process๊น์ง ์งํ๋๊ฒ ๋๋ค. ์ข ๋ฃ๋ฅผ ํ ๊ฒฝ์ฐ kernel์ด Interrupt Handler๋ก Ready Queue์์ ๊ฑฐ๊พธ๋ก ๊บผ๋ด๊ณ ์ ๋ถ ํด์ ํ๋ ์์ ์ ํด์ผ ํ๋ค.
Suspend๋ผ๋ ๊ฒ์ ์ ์งํ๋ ๊ฒ์ด๋ค. pause ๋ฒํผ์ด suspend์ ํด๋นํ๋ค. (์ผ์์ ์ง ๋ฒํผ์ ํด๋นํ๋ค๊ณ ์ดํดํ๋ฉด ๋จ)
Process Sychronization์ด๋ผ๋ ๊ฒ์ Shared Resource๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ ์ ์ ์ธ ์ฌ์ฉ์ด ์๋๋ฏ๋ก ํด๋น ์ ๋ณด๋ฅผ ๋ง์ถ๋ ์์ ์ ์๋ฏธํ๋ค.
Process management
๊ฐ๋ 2๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ํ๋ ์ด์์ ๋ฏธ์ ์ ์ํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ ํ๋ก์ธ์ค๋ ํ๋ ฅ์ ํด์ผ ํ๋ค. ํ๋ก์ธ์ค๋ ์๋ฒฝํ๊ฒ ๋ ๋ฆฝ๋ ์กด์ฌ๋ผ๊ณ ํ๋๋ฐ ์๋ก ์นจ๋ฒํ ์ ์๋ ๊ด๊ณ์ด๋ค. ์ํต์ด ์๋๋ ๊ฒ์ด๋ค. OS๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ํ๋ก์ธ์ค์ ๋ํด์ ์ด๋ค ๊ธฐ๋ฅ์ ํตํด์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค๋ค. ๊ทธ ๊ธฐ๋ฅ์ Kernel์ด ์ ๊ณตํ๋ค. A๋ผ๋ ํ๋ก์ธ์ค๊ฐ B๋ผ๋ ํ๋ก์ธ์ค์ ๋ฉ์์ง๋ฅผ ๋ฐ์ํ ์ ์๋ค.
ํ๋ก์ธ์ค์์ ๋ฆฌ์์ค๋ก ๊ฐ๋ ํ์ดํ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๋ค๋ ๊ฒ์ด๋ค. ๋ฆฌ์์ค์์ ํ๋ก์ธ์ค๋ก ํฅํ๋ ํ์ดํ๋ ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ฆฌ์์ค๋ฅผ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ์ด๋ผ๋ ๊ฒ์ธ๋ฐ.. ๋ถํธํ ์ด์ ๊ฐ ๋ฐํ์ก๋ค. A๋ B๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ B๋ A๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. ๋๋ค ์์ผ๋ก ๋๊ฐ ์ ์๊ณ ์ ์ํ๋ก ๋ฉ์ถฐ์๋๋ฐ ๊ทธ ์ํ๋ฅผ Dead Lock์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Memory Management
์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ๋์์ผ ํ๋๋ฐ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋์๊ฐ๊ฒ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ์ ๋ณด๋ฅผ OS๊ฐ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. Keep track ํด์ผ ํ๋ค.