Operating System Services
Command Line Interpreter
putty, xterm, MacOS terminal์ ๋ง์ด ์ฌ์ฉํ๋ค. ์ด๋ณด์๋คํํ ๋ ๋ง์ด ๋ถํธํ ์ ์์ง๋ง ๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
Programming Interfaces
์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ Interface๋ System call์ด๋ค. POSIX IO call์๋ ๋ค์๊ณผ ๊ฐ์ call๋ค์ด ์๋ค. ํ์ผ์ ์ด๊ณ ์ฝ๊ณ ์ฐ๊ณ ๋ซ๋ ์ญํ ์ ํ๋ค. User Interfaces๋ ํ์ผ์ ์ฝ์ ์ ์๋ค. System call์ Interrupt์ ์ํด์ call ๋๋ค. ๋ณดํต ์ฌ์ฉํ๋ high level language๋ Interrupt๋ฅผ ์ง์ ์ ์ผ๋ก ๋ฐ์์ํฌ ์ ์๋ค. ๊ทธ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ Bridge ์ญํ ์ด ํ์ํ๋ฐ ๊ทธ๊ฒ System call Interface์ ์ญํ ์ด๋ค. POSIX์ ๋ํ ์๊ฐ๊ฐ ์๋ค. UNIX์ Standard์ด๋ค. Linux ๋ ๊ณต์์ ์ผ๋ก POSIX ์ธ์ ์ ๋ฐ์ง๋ ์์ง๋ง Unix ์ Implementation์ด๋ผ๊ณ ์ธ์ ๋ฐ๊ณ ์๋ค.
System call
Function call๊ณผ ์ ์ฌํ ์ ์ด ์๋ค. Application program์ด Usermode์ ๋์๊ฐ๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ค. Device๋ฅผ Accessํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ทธ ๊ถํ์ด ์์ด์ kernel์ ์์ฒญ์ ํ๊ฒ ๋๋ค. Kernel์ Device์ ์ ๊ทผํ๊ธฐ ์ํ ๋ชจ๋ ๊ถํ์ด ์๋ค. ์ผ๋ฐ์ ์ธ Function call๊ณผ ๋ค๋ฅธ ๊ฒ์ Interrupt ๋ฉ์ปค๋์ฆ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ์ด๋ค. Interrupt handler๋ก jump๋ฅผ ํ๊ฒ ๋๊ณ ์ด๋ kernel ์์ ์์นํ ์์ ํ๊ณ ๊ฒ์ฆ๋ ์ฝ๋์ด๋ค. C C++๋ก ์์ฑ๋์ด ์์ด์ ์๋ ๋ํ ๋น ๋ฅธ ํน์ง์ด ์๋ค. ์ด์งธ์ System call์ Interrupt call์ด๋ผ๋ ๋ณต์กํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? ์์ ํ๊ฒ Kernel mode๋ก ์ ํํ๊ธฐ ์ํ ๋ฐฉ์ด ์ฒด์ฌ๋ผ๊ณ ํ ์ ์๋ค.
Dual Mode Operation
ํ๋๋ User mode์ด๊ณ ํ๋๋ kernel mode์ด๋ค. OS ์๋น์ค๊ฐ ํ์ํ๋ฉด kernel์ ๋์์ ์์ฒญํ๊ณ Kernel service๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ kernel mode๋ฅผ ์คํํ๊ฒ ๋๋ค. usermode์์ kernel mode๋ก ์ ํ์ ํ ๋ preveledge๊ฐ ๋ฎ์ mode์์ ๋์ mode๋ก ๋ณํ๋๋ ํ์ด๋ฐ์ธ๋ฐ ๋ง์ฝ ์ด๋ฐ ์ ํ์ด ์๋ฌด ์ ์ฝ์์ด ์ฝ๊ฒ ์ด๋ฃจ์ด์ง๋ค๋ฉด user์ kernel์ ๊ตฌ๋ถํ ํ์์ฑ์ด ์์ด์ง๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ํ์ํ ๊ฒ์ด Interrupt ๋ฉ์ปค๋์ฆ์ด๋ค. ์ํํ ๋์์ ๋ค ๋ง์ ์ ์์ด์ผ ํ๋ค. Interrupt๋ฅผ ๋ ๋ฆฌ๋ ์๊ฐ Interrupt handler๋ก ์ ์ฝ๊ถ์ด ๋์ด๊ฐ๊ฒ ๋๊ณ Kernel์์ ์กด์ฌํ๋ฉฐ ์์ ํ๋ค. Interrupt vector๋ผ๋ Table์ด ๊ด์ฌํ๊ฒ ๋๋ค. jumpํ ์ ์๋ ๋ชฉ์ ์ง๋ Interrupt handler๋ก ๊ตญํ๋๊ฒ ๋๋ค. Kernel mode๋ก ๋์๊ฐ ๋ ์์ ํ ์ฝ๋๋ง์ ์คํํ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค. ๋ค์ user mode๋ก ๋์์ค๊ฒ ๋ ๋ ๋์ Preveldge์์ ๋ฎ์ ๊ณณ์ผ๋ก ์ด๋์ด์ฌ์ ๋ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
Parameter Passing in System call
Function์๋ parameter๊ฐ ์๋ค. System call์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๋์ง์คํฐ์ ๊ฐ์ ๊ฐ์ง๊ณ Interrupt๋ฅผ ๋ฐ์์ํค๊ณ Handler๊ฐ ๊ทธ ๊ฐ์ ๊ฐ์ง๊ณ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด๋ค. ์ ๋ณด๊ฐ ์์ ๋ ์ฃผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ ๋ณด๊ฐ ์ปค์ง๊ฒ ๋๋ฉด ์ฃผ์๊ฐ์ ๋๊ธฐ๋ ๋ฐฉ๋ฒ ๋ํ ์กด์ฌํ๊ณ , System stack์ ์ฌ์ฉํ ์ ์๋ค. Fucntion call parameter local variable์ ์ฌ์ฉํ ๋ ๋ง๋ค์ด์ง๋ค.
Example
file์ Copyํ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํด๋ณด์. A์์ B๋ก ์นดํผํ๋ค๊ณ ์๊ฐํด๋ณด์. srcFile๊ณผ destFile์ ์ฝ์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ์ ์ด๊ณ ์์ฑํํ Read์ Writhe๋ฅผ ์งํํ๋ค. close๋ฅผ ํ๊ฒ ๋๋ค. ์ด ๊ณผ์ ์ user์์ ํ์ผ์ ์ด๋ฆ์ ๋ฌผ์ด๋ณธ๋ค๋ฉด IO Device๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. User์๊ฒ ํ์ผ ์ด๋ฆ์ ์์ฑํ์ธ์ ๋ผ๋ ๊ฒ๋ OS๋ฅผ ํตํด์ ํ ์ ์๊ณ System call์ ์ํด์ ์๋ํ๊ฒ ๋๋ค. ์ ๋ถ ๋ค OS์ System call์ด ์๋ํ๊ฒ ๋๋ค. ์ฌ์ค์ ๊ต์ฅํ ๋ง์ OS์ System call์ด ๋ฐ์ํ๊ณ ์์๋ค.
System call Interface
open์ด๋ผ๋ function์ ์๊ฐํด๋ณด์. open์ kernel์ ๊ธฐ๋ฅ์ด ํ์ํ๊ณ kernel์ ๊ธฐ๋ฅ์ system call๋ก ์ ๊ณต๋๊ณ system call์ Interrupt๋ก ์ ๊ณต๋๋ค. High level language๋ function์ ํํ๋ก ์ ๊ณต๋๋ค๋ ๊ฒ์ด๋ค. ๋๊ตฐ๊ฐ๊ฐ Function call Interface์ OS๊ฐ ์ ๊ณตํ๋ Interrupt driven Interface์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ํ์ํ๋ค. ๊ทธ๊ฒ์ด System call Interface ์ด๋ค. ๊ทธ๋ฆผ์์ Interrupt vector๋ผ๋ ํ๋์ ์์๊ฐ ๋ณด์ธ๋ค.
System call Interface
์ผ์ชฝ์ user์ code์ด๋ค. ์ด ์ฝ๋์์ Open์ด๋ผ๋ function์ callํ๊ฒ ๋๋๋ค. open์ System call Interface ์์ ์๋ function call์ด๋ค. ๋ด๋ถ์๋ ์ด์๋ธ๋ฆฌ ์ฝ๋๋ฅผ ํฌํจํ๊ณ ์๋ค. C์ธ์ด ์์ ์ด์
๋ธ๋ฆฌ ์ฝ๋๊ฐ ์๋ ๊ฒ์ in-line assembly code๋ผ๊ณ ํ๋ค. ์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด๋ 5๋ผ๋ ์ซ์๋ฅผ eax๋ผ๋ ๋์ง์คํฐ์ ์ง์ด๋ฃ๋ผ๋ ๊ฒ์ด๋ค. int 0x80์ผ๋ก ๋์ด์๋ค. ์ด์
๋ธ๋ฆฌ์ด์์๋ int๋ Interrupt๋ฅผ ๋ฐ์์ํค๋ผ๋ ๊ฒ์ด๋ค. 80๋ฒ์ Interrupt๋ฅผ ๋ฐ์์ํค๋ผ๋ ๊ฒ์ด๋ค. Linux์ ๋ชจ๋ ์ข
๋ฅ์ Interrupt๋ 80๋ฒ์ ํตํด์ ์๋น์ค๊ฐ ๋๊ฒ ๋์ด์๋ค. System call๊ณผ ๋ฌด๊ดํ๊ฒ interrupt 80๋ฒ์ ํต๊ณผํด์ผ System call์ ํ ์ ์๊ฒ ๋๋ค. open์ ๊ฒฝ์ฐ 5๋ฒ์ด ์ง์ ๋์ด ์๋ค. System call ๋ฒํธ๋ฅผ ๋์ง์คํฐ์ ์ง์ด๋ฃ๊ณ 80๋ฒ Interrupt๋ฅผ ํธ์ถํ๊ฒ ๋๋ค. ๊ทธ ์ ์ด๊ฐ interrupt Handler๋ก ์ ์ด๊ถ์ด ๋์ด๊ฐ๊ฒ ๋๊ณ 80๋ฒ Entry๋ก ๋์ด๊ฐ๊ฒ ๋๋ค. 80๋ฒ Handler๊ฐInterrupt Handler์ด๊ณ eax ๋์ง์คํฐ์ ๊ฐ์ ์ฐธ์กฐํ๋ค. ์ค์ ๊ทธ open์ ์ฒ๋ฆฌํด์ค ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ค. sys_open์ด๋ผ๋ ์ค์ open์ ํ๊ฒ ํด์ฃผ๋ function์ด๋ค. mode ์ ํ์ Interrupt๋ฅผ ๋ฐ์์ํค๋ ์๊ฐ ์ ํ๋๋ค. sys_open์ kernel mode์์ ์ด๋ฃจ์ด์ง๋ค. ๋์์ด ๋๋๋ฉด Interrupt return ๋ฉ์ปค๋์ฆ์ ์ดํด์ open function์ผ๋ก ๋์์ค๊ณ ๋ค์ user์ open ์ฝ๋๋ก ๋์์ค๊ฒ ๋๋ค.
System call Interface
80๋ฒ ๋ฆฌ๋
์ค์ ์ํด์ ์ฌ์ฉ๋๋ค. System call์ ์ค์ ๋ก ์ฒ๋ฆฌํด์ค Handler๋ฅผ ์๊ธฐ ์ํด์ System call table์ด ์กด์ฌํ๋ค. Interrupt vector table๊ณผ ๊ตฌ๋ถ๋๋ค. 80๋ฒ Interrupt๊ฐ ๋ฐ์ํ๋ฉด Interrupt vector๋ฅผ ์ฐธ์กฐํด์ 80๋ฒ Interrupt๋ฅผ ์ฐพ์์ jumpํ๊ฒ ๋๋ค. 80๋ฒ handler๊ฐ ์์๋๋ฉด ์ง๊ธ ๋ด๊ฐ ์คํํด์ผ ํ๋ System call์ด ๋ฌด์์ธ์ง ์๊ธฐ ์ํด์ System call handler๊ฐ ์ ์ฅ๋์ด ์๋ table์ ์ดํด์ผ ํ๋ค. ๊ทธ Index System call Number๊ฐ ๋๋ค. ์ด์ ์ ๋์ง์คํฐ์ ๋ด๊ธด 5๋ผ๋ ์ซ์์ ๋์ํ๋ค. User ์
์ฅ์์ System call Interface๊ฐ
์ผ๋ฐ ์ ์ธ function call๊ณผ ๋ณ ๋ค๋ฆ์ด ์์ด ๋ณด์ธ๋ค.
System-call Interface
System call์ ํธ์ถํ ๋ ์ ๋ฌํด์ผ ํ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค. User mode์์ kernel mode๋ก ์ค์์นญ์ ํ๋ค. Interrupt๋ฅผ ๋ฐ์์ํค๋ ์๊ฐ ์ ํ์ด ๋๋ค. ํ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํํ๊ธฐ ์ํด ์ค๋นํด์ผ ํ ๊ฒ๋ค์ด ์๋ค๋ฉด System call Interface๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. read์ fread์ ์ฐจ์ด์ ์?? read๋ OS๊ฐ ์ ๊ณตํ๋ System call์ด๋ค. fread๋ C ์ธ์ด๊ฐ ์ ๊ณตํ๋ ํจ์์ด๋ค. C์ธ์ด๋ ํน์ ๋ OS์ ์ข
์๋๋ฉด ์๋๋ฏ๋ก ์ฌ๋ฌ OS๊ฐ ์ ๊ณตํ๋ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ๋ชจ์์ ํต์ผ๋๊ฒ ๋ชจ์ ๊ฒ์ด Standard function์ด๋ค. ๋ณดํต OS์ ๋ฌด๊ดํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๋ฌ OS๋ฅผ ์๋ํ๊ฒ ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ fread๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
API
OS๋ library๋ application์ด ์๊ธฐ์ ๊ธฐ๋ฅ์ ์๋น์ค๋ก ์ ๊ณตํ๊ธฐ ์ํด ์ ํด๋์ Interface๋ฅผ ์๋ฏธํ๋ค. Windows์ ๊ฒฝ์ฐ system call๊ณผ API๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒฝํฅ์ด ์๋ค. API๋ System call์ ์กฐํฉํด์ ๋ง๋ ๋ High level feature์ด๋ค. ์๋ฅผ ๋ค์ด MessageBox function์ด API์ ํด๋นํ๋ค. ๋ฐ๋ฅ์ Primitiveํ System call์ด ์๊ณ ์กฐํฉ์ ํด์ API๋ผ๋ high level feature๋ฅผ ์ ๊ณตํ๋ค.
Example of API
window์ ์๋ API function์ด ์๋ค.
Example of System call
์๋์ฐ
CreateProcess๋ผ๋ ๊ฒ์ Unix์ forkํจ์์ ๋์ํ๋ค.
Process Control: Load/Execution
ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๋ง์ฐ์ค๋ก ๋๋ธ ํด๋ฆญ์ ํ๋ค. ๊ทธ ๊ณผ์ ์ OS๊ฐ ๊ฐ์
๋๋ค. ์๋ฅผ ๋ค์ด User๊ฐ ๋๋ธ ํด๋ฆญ์ ํ๋ฉด Interrupt๊ฐ ๋ฐ์ํ๊ณ Interrupt Handler๋ก ์ ํํ๊ฒ ๋๊ณ ๋ง์ฐ์ค๋ผ๊ณ ์ธ์์ ํ๋ฉฐ Handler๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์ ํ๋ ๊ตฌ๋๋ฅผ ํ์
ํ๋ฉฐ OS๊ฐ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๊ฒ์ด๋ค. ๋ง์ง๋ง์ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ์ฃผ์ฒด๋ OS๊ฐ ๋๋ค๋ ๊ฒ์ด๋ค. CLI ๋ก ๋๋ฆฌ๊ฒ ๋๋ ๊ฒฝ์ฐ CLI์ ์๋ก์ด Child Process๋ฅผ ๋ง๋๋ Parent ์ญํ ์ ํ๋ค. Process Creation ์ญํ ์ ํ๋ค. Child Process ๋ง๋ค์ด์ง๋ ๋์ Parent๊ฐ ๋ฌด์จ ์ญํ ์ ํ๋๊ฐ? CHild๊ฐ ์คํ๋ ๋ Parent Proecss๊ฐ ๋์ฒด๋๋ ๊ฒฝ์ฐ ์์ค๋๋ค๊ณ ๋งํ ์ ์๋ค.
๋ ๋ฒ์งธ์ ๊ฒฝ์ฐ ๊ธฐ๋ค๋ฆฐ๋ค๊ณ ๋งํ๋ ๊ฒ์ด๋ค. CLI๊ฐ pause ๋๋ค. Parent Process๊ฐ Child Process์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋๋ ๊ฒฝ์ฐ์ด๋ค. MacOS Finder์ ๊ฒฝ์ฐ ์คํ์ ๋ฉ์ถ์ง ์๊ณ ๊ฐ์ด ์คํ๋๋ ๊ฒ์ด๋ค.
MS-DOS
Single tasking program์ด๋ค. booting ์ด ๋๋๋ฉด kernel์ด ๊ฐ์ฅ ๋ฎ์ address mode์ ์์นํ๊ฒ ๋๋ค. ์ฌ์ฉ์๊ฐ ํน์ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๊ฐ ๋๊ณ ์คํ์ด ๋๋ค. Command Interpreter๋ฅผ overwriteํ๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฐ ๊ผผ์์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ค.
FreeBSD Unix
Booting์ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉด ๋ชจ๋๊ฐ ๋ค ๋๋ฑํ ์ง์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Unix์์๋ Commend line Interpreter๋ฅผ ๋ด๊ฐ ์ํ๋ ๋ฒ์ ์ผ๋ก ์ ํํ ์ ์๋ค. Command Line Interpreter๊ฐ kernel์ ์ผ๋ถ๊ฐ ๋
๋ฆฝ๋ Userlevel์ ํ๋ก๊ทธ๋จ์ด์ด์ ๊ฐ๋ฅํ ๊ฒ์ด์๋ค. ๋ง์ ๊ฒฝ์ฐ์ CLI์์ ์คํ์ํจ๋ค. shell์ ํ๋ก๊ทธ๋จ์ ์
๋ ฅ์ ํ๋ฉด fork๋ผ๋ ์์คํ
์ฝ์ ํธ์ถํ๋ค. ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ช
๋ น์ด์ด๋ค. Parent Process์ ๊ฑฐ์ ๋๊ฐ์ด ์๊ธด Child Process๋ฅผ ์์ฑ์ํจ๋ค. ์ ๋ณต์ฌํ์ ๋ง๋๋๊ฐ?
์ฌ์ค Unix์์ ์๋ก์ด Process๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ Parent Process๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด๋ค. ๊ตฌํ ์์์ ๋ง์ ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ์๊ตฌ๋๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. Child Process๋ฅผ ๋ด๊ฐ ์ํ๋ ํ๋ก๊ทธ๋จ์ ๋์ฒด๋ฅผ ํด์ผ ํ๋ค. exec์ด๋ผ๋ ์์คํ
์ฝ์ด ๊ทธ์ญํ ์ ํ๋ค. ํ์ฌ์ ํ๋ก์ธ์ค๋ฅผ ์๋ก์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋์ฒดํ๋ค. ์ด๊ธฐ์๋ CLI์๋๋ฐ exec๋ฅผ ํตํด ์ํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค. ๋จผ์ fork๋ฅผ ํ๋ฉด wait์ด๋ผ๋ function call์ ํตํด ํ์ฌ ์๋ ์ํ๋ก ๊ธฐ๋ค๋ฆฌ๋ผ๋ ๋ช
๋ น์ ํ๊ฒ ๋๊ณ child process๊ฐ ์ข
๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค. child๊ฐ exec์ ์ํด์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋์ฒด๋๊ณ ๊ทธ ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๋ ๋์ Parent process๋ ๋ฉ์ถฐ์๊ฒ ๋๋ค. exit์ ํตํด์ ์ข
๋ฃํ๊ฒ ๋๋ฉด ๋ค์ Parent Process๊ฐ ๋์ํ๊ฒ ๋๋ค. CLI Interpreter์ ์ญํ ์ด๋ค. ๋์์ ๋ณ๋ ฌ์ ์ผ๋ก ๋์๊ฐ๊ฒ ํ ์ ์๋ค. Wait System call์ ํ์ง ์์ผ๋ฉด ๋๋ค. ์๋ fork๋ฅผ ํธ์ถํ Parent process๊ฐ ๋ฉ์ถ์ง ์๊ณ ๋ณ๋ ฌ์ ์ผ๋ก ๋์๊ฐ๊ฒ ๋๋ค.
Process Control: Load Execution
Process๊ฐ Process๋ฅผ control ํ ์ ์๋ค. Max execution time์ ํ๊ฑฐ๋ ๋ฉ์ถ๋ค๊ฑฐ๋์ ๋์์ ํ ์ ์๋ค. ๋ฌดํํ ๊ธฐ๋ค๋ฆด ์๋ ์๊ณ ์ ํด์ง ์๊ฐ๋์ ๊ธฐ๋ค๋ฆด ์ ์๋ค. Event๋ฅผ Parentํํ
์ ํ๋ ์๊ฐ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ ์ ์๋ค.
Debugging
๋๋ฒ๊น
๋คํ๋ ํ๋ก๊ทธ๋จ์ด ํ Statement์ฉ ๋๋๋ก ์ง์ ํ ์ ์๋ค. ํน์ ํ ์์ญ๋ง ์คํ์ํค๊ณ ๋ค์ parent๋ก ์ ์ด๊ถ์ด ๋์์ค๋ ๋ฑ์ ๋ฐ๋ณต์ ํ ์ ์๋ค.
Termination
Normal Termination, ์๋ฌ ์์ด ์ ์์ ์ผ๋ก ์ข
๋ฃํ๋ ๊ณผ์ . ์ ์งํ๊ธฐ ์ํด์ ํ ๋นํ๋ Resource๋ฅผ deallocation์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ํ์ํ๊ณ ์ด ํ๋ก์ธ์ค๊ฐ ์ด์ด๋์ ํ์ผ์ close๋ฅผ ํ๋ค.
๋ฐ๋ฉด ๋น์ ์์ข ๋ฃ์ ๊ฒฝ์ฐ ๋ค๋ฅด๋ค. User๊ฐ ์ํ๋ ์ํฉ์ด ์๋๊ธฐ์ ์ถ๊ฐ์ ์ธ ์ญํ ์ ํ ์ ์๋ค. ํ์ฌ ์ํฉ์ dump ํด๋ฒ๋ฆฌ๋ ์ํฉ์ผ ์๋ ์๋ค. ๋ฐ๋ผ์ฌ ๋์ค์ ๊ทธ ์ํฉ์ ๋ถ์ํ๊ธฐ ์ํด ์ ๋ณด๋ฅผ ๋จ๊ฒจ๋๋ ๊ณผ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
File Management
Createํ๊ณ Delete/ Read write repotion / Get set file / Directory Operation / More service
ls๋ผ๋ ๋ช
๋ น์ด. OS์ kernel์ด ์๋๊ณ ๋ณ๋์ ls๋ผ๋ ํ๋ก๊ทธ๋จ์ด ์๋ค. ์ด๋ ๊ฒ API๋ System call์ ํตํด์ OS๊ฐ ์ง์ ํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ํด์ File management๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
Device Management
์ฌ์ฉ๊ถ์ ์ ๋ฌํ ๋ ๋
์ ์ ์ธ ๊ถํ์ ๋ถ์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ง์ฝ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ์ค์ ์๋ Resource๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋๋ wait๋ฅผ ํ๊ฒ ํ๋ค. Resource allocation์ด๋ผ๊ณ ํ๋ค. ๊ทธ ๋ฆฌ์์ค์ Read์ Write operation์ ํ ์ ์๋ค. ์ฌ์ฉ ํ ๋ฐ๋ฉ์ ํ๋๋ฐ Release๋ผ๊ณ ํ๋ค.
Device Management
file ๋ฟ๋ง ์๋๋ผ network์ printer์ ๊ฐ๊ฐ read์ write๋ฅผ ํ ์ ์๋ค. ์ค์ ํ์ผ์ด ์๋ ์ฌ๋ฌ Device๋ฅผ ๊ฐ์์ ํ๊ฒฝ์ธ ๊ฒ์ฒ๋ผ Device๋ฅผ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ด๋ค. Consistence๊ฐ ์ข์์ง๊ณ ๋์ผํ flow์ ์ฌ์ฉ์ ํ๊ฒ ํ ์ ์๋ค.
Information Maintenance
System Programs
๊ธฐ๋ณธ์ ์ผ๋ก User mode์์ ๋์ํ๋ ์ผ๋ฐ์ ์ธ Application program์ด๋ค. ๊ตฌ์ฒด์ ์ธ task๋ฅผ ์ํด์ ๋ง๋ค์ด์ง ๊ฒ์ด๋ผ๊ธฐ ๋ณด๋ค ํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฒ์ด๋ผ๊ณ ์ดํดํด์ผ ํ๋ค.