Basic HardWare
ํ๋์จ์ด๊ฐ ์๋์ ์ผ๋ก ๋ฒ์ด๋ฌ๋์ง ์๋์ง๋ฅผ ํ์ธํด์ค๋ค. Memory Management Unit. ์์ฃผ ๋น ๋ฅธ ์๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ํ์ฌ ํ๋ก์ธ์ค์ ์์์ ์ base๋ผ๊ณ ํ๋ค. ์ฃผ์๋ฅผ ๋ฌ๋ผ๊ณ ํ๋ฉด base์ ๋น๊ต๋ฅผ ํด์ ์๋ ์์ผ๋ฉด NO (Interrupt๊ฐ ๋ฐ์)์์ ์์ผ๋ฉด YES๋ฅผ ์ป๊ฒ ๋๋ค. base๋ณด๋ค ํฐ ๊ฐ์ด๋ฉด ๋ค์ Task๋ฅผ ๋น๊ตํ๋ค. base + limit์ ํด์ ์ฃผ์๊ฐ์ ์ป๊ณ ์ด๋ณด๋ค ํฌ๊ฒ ๋๋ฉด Segmentation fault๋ฅผ ๋ณด๊ฒ ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ HardWare๊ฐ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์. base์ limit์ด ์ ์ฅ๋๋ ๊ณณ์ ๋์ง์คํฐ์ด๋ค. ์์ฃผ ๋น ๋ฅธ ์๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. Base/limit ๋์ง์คํฐ๋ priviledge ~ ์ด ๋ฌธ์ฅ ํ์ธํด๋ณผ ๊ฒ!
Address Binding
Symbolic Address๋ ๋ฌด์์ผ๊น? ๋ณ์ ์ด๋ฆ, ๋ฐฐ์ด ์ด๋ฆ. count๋ผ๋ ์ด๋ฆ์ ์ซ์๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ค. ํ๋๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด๋ด๋ Objectํ์ผ์ Rellocate Address์ด๋ค. ์ปดํ์ผ๋ฌ๊ฐ ํด์ฃผ๋ ๊ฒ์ Symbolic Address๋ฅผ Relocatable Address๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด๋ค. ์ฃผ์๊ฐ ๊ณ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก Mapping ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๊ฒ์ Binding ์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ต์ข ์ ์ธ ์ฃผ์๊ฐ์ Binding์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Building and Running Program
Source๋ฅผ ์ปดํ์ผ ํ๋ฉด Object ํ์ผ์ด ์๊ธฐ๊ณ LInk๋ฅผ ํ๋ฉด ์คํํ์ผ์ด ์๊ธด๋ค. ์์ ์ Source์ฝ๋๋ง Object ํ์ผ๋ก ๋ฐ๊พธ๊ฒ ๋๋ค. ์ฆ, ์๋์ ์ธ ์๋ฏธ๋ก ์๊ธฐ ์ค๋ธ์ ํธ ์์์ ํต์ฉ๋๋ ์๋ฏธ์ด๋ค. Linking ์ ํ๋ฉด ์คํํ์ผ์ด ๋ง๋ค์ด์ง๊ณ ์ด๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ Linking์ ํด์ค์ผ ํ๋ค.
Address Binding
load time์ Binding time์ ๋งํ๋ค. MS-DOS๋ Single User๋ก Single Task๋ฅผ ์ฒ๋ฆฌํ๋ OS์๋ค. ํ๋ก๊ทธ๋จ ํ๋๊ฐ ์ผ์ ํ ์์น์ ์ฌ๋ ค์ง๋ ๊ฒ์ ๊ฑฐ์ ๋ณด์ฅํ๊ณ ์์๋ค. absolute๋ฅผ ๊ฒฐ์ ํ๋ค๋ ๋ป์ loading๋๋ ์์น๊ฐ ์ผ์ ํ๋ค๋ ์ ์ ๊ฐ ์์ด์ผ ํ๋ค. ์์ฆ์ absolute code๋ฅผ ๋ง๋ค ์ ์์๊น? (์์ฆ ์คํ์ผ์ ์๋์ง๋ง ๊ทธ๋๋ ์ด๋ ๊ฒ ์คํ๋ ์๋ ์๋ค) relocatable code๋ ์คํํ๋ ๋์ค์ ์ต์ข Address๊ฐ ์๊ธธ ์ ์๋ค. ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ค๊ณ ์ถ์๋ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด ๊ทธ ํ๋ก์ธ์ค๋ฅผ Disk๋ก ๋ณด๋ด๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ํ ๋นํ๋ค๋ ๊ฒ์ด Swapping์ด๋ค. ๋ง์ฝ ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์น๊ตฌ๊ฐ Disk๋ก ๋ณด๋ด์ก๋๋ฐ ๋ค์ ํ์ํ ๊ฒฝ์ฐ ๋์ด ์ฌ๋ ค์ผ ํ๋ค. ์ด๋ ๋์ผํ ์ฃผ์๊ฐ์ผ๋ก ๋์์จ๋ค๊ณ ๋ณด์ฅํ ์ ์์๊น? ์๋๋ค. ์ค๊ฐ์ ๋ฐ๋๋ค๋ ๊ฒ์ Swapping์ ํ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก relocation ์ดํ์๋ ์ฃผ์๊ฐ์ด ๊ณ์์ ์ผ๋ก ๋ฐ๋ ์ ์๋ค.
Execution Time,
๊ธฐ๋ณธ์ ์ผ๋ก hardware supporting์ด ์์ด์ผ ํ๋ค. ํ๋์จ์ด๊ฐ ํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ์๋ํ ์ ์๋ค.
Logical vs Physical Address Space
CPU๊ฐ ํน์ ํ ์์น๋ฅผ Accessํ๋ ค๊ณ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋์ฐฉํ์ ๋์ Address์ ๋์ผํ์ง ์๋ค. ๋ค๋ฅธ ์ซ์๋ก ์ ๋ฌ ๋ ์ ์๋ค.(๋ณดํต ์ด๋ ๋ค) ์๋ํ๋ฉด ์ค๊ฐ์ Address๋ฅผ ๋ณํํด์ฃผ๋ ์น๊ตฌ๊ฐ ์๋ค. ๊ทธ๊ฒ์ด MMU์ด๋ค. ๋ณํ๊ธฐ์ธ MMU๊ฐ ์๋ค๋ฉด CPU๋ ์๊ณ ์ด์๋ ๊ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณํํ๋ MMU๊ฐ ์๋๋ฐ ์ด์ ์ CPU๊ฐ ์ค Address๊ฐ logical Address์ด๋ค. ๊ทธ๋ฆฌ๊ณ Physical Address๋ MMU์ดํ ๊ฐ๊ฒ ๋๋ ์ฃผ์์ด๋ค. ์ด Binding์ด ๋น ๋ฅธ ์ด์ ๋ HardWare Binding์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Logical vs Physical Address Space
Logical Address๋ฅผ ๋ค๋ฅธ ๋ง๋ก Virtual Address๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ๋ก์ธ์ค ๋ณ๋ก ๊ฐ์๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ค ๋ฐ๋ก ์กด์ฌํ๋ค. P1, P2, P3, P4์ ๊ฒฝ์ฐ, P1์ 1000๋ฒ์ง๋ MMU๋ฅผ ํต๊ณผํ์ ๋ A์ด๊ณ P2์ 1000๋ฒ์ง๋ MMU๋ฅผ ํต๊ณผํ์ ๋ B๋ผ๋ ๋ค๋ฅธ Address๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. Logical Address Space๋ Logical address์ ๊ฐ๋ฅํ ์ ์ฒด ์งํฉ์ ์๋ฏธํ๋ค. Physical Memory Space๋ 1๊ฐ์ด๋ค. Logical Address Space๋ Process์ ๊ฐ์์ ๋น๋กํ์ฌ ๋ฌ๋ผ์ง๋ค. Run-time address mapping
Logical vs Physical Address Space
ํ์ฌ ํ๋ก์ธ์ค์ ์์ญ์ด ๋งจ ์ค๋ฅธ์ชฝ ์ฌ๊ฐํ์ด๋ผ๊ณ ํด๋ณด์. CPU๊ฐ 346์ ์ฃผ์๋ฅผ ํ ๋นํด๋ฌ๋ผ๊ณ ํ๋ฉด ๋งจ ์ค๋ฅธ์ชฝ์ ์๋ถํฐ ์์ํ๋ ๊ฒ์ด ์๋ ์ฌ๊ฐํ์ ๋งจ ์๋ก๋ถํฐ 346๋งํผ ๋จ์ด์ง ๋ถ๋ถ์์ ํ ๋น์ ์์ํ๋ค. MMU์ relocation resgister๊ฐ 14000๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด 14346์ด Physical Address๊ฐ ๋๋ค. ๋์ง์คํฐ์ ๊ฐ๋ง ์ ๋ฐ๊ฟ์ฃผ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ ์ ์์ ํ๋ค. HardWare์ ์ํด์ ์ฐ์ฐ์ด ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค.
Dynamic Linking and Shared Library
Source code๊ฐ ์ปดํ์ผ ๋๋ฉด Object๊ฐ ๋๊ณ Link ํ๋ฉด ์คํํ์ผ์ด ๋์จ๋ค. ์ด๋ ์ฌ์ฉ๋๋ Iibrary ํ์ผ๋ค์ System Library์ ์กด์ฌํ๋ค. ๋์ค์ Linkํ ๋ ๋ฌถ์ด์ ์คํํ์ผ์ ๋ง๋ค๊ฒ ๋๋ค. ์ค์ ๋ก ๋ค ๋ฌถ์ด์ ์ง์ด ๋ฃ๊ฒ ๋๋ ๊ฒ์ Static Linking์ด๋ผ๊ณ ํ๋ค. Statc linking์๋ ๋ฌธ์ ์ ์ด ์๋ค. Library๊ฐ ์คํ ๋๋ ๋งํผ ์ค๋ณต๋์ ์คํํ์ผ์ ๋ค์ด๊ฐ๊ฒ ๋๋ค. ํ์ผ ํฌ๊ธฐ๋ง ์ปค์ง๋ ๊ฒ์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๋ง์ด ์ก์๋จน๊ฒ ๋๋ค.
Stub์ด๋ผ๋ ์์ ๊ฒ์ ์ง์ด๋ฃ์ด์ ์คํ๋๋ ์๊ฐ์ Library code๊ฐ ๋ค์ด๊ฐ์ง ์๊ณ ํธ์ถ๋๊ธฐ๋ง ํ ๋ฟ์ด๋ค. Hello World 1์๋ Library์๋ ์์ง๋ง ์คํ๋ ๋ loading๋๋ค. ๋ ๋ฒ์งธ Hello world๋ฅผ ํธ์ถํ ๋ ๋ค์ Library๋ฅผ Loadํ ํ์ ์์ด ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๊ณผ ๋์คํฌ ๊ณต๊ฐ์ด ์ ์ฝ๋์๋ค.
Link ๋ผ์ ์ฌ๋ผ์จ Library ์ฝ๋๋ฅผ ๋ค๋ฅธ ๊ฒ๋ค๋ ๊ณต์ ํด์ ์ฌ์ฉํ ์๊ฐ ์๋ค. ๋ง์ฝ library๊ฐ Update ๋ ๊ฒฝ์ฐ Link๋ฅผ ๋ค์ํ ํ์๋ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
absolute address๋ physical address์ธ๊ฐ? ๋ณดํต์ ์๋๋ค.
CPU๋ Physical Address์ธ๊ฐ
Swapping
Address๊ฐ ์์ ์ ์ผ๋ก launching ๋์ด์ผ ํ๋ค. Execution time bounding์ ์ด์ฉํ๋ฉด ๋๊ฐ๋ค๊ฐ ๋ค๋ฅธ Address๋ก ๋ค์ด์๋ ๋ฌด๋ฐฉํ๋ค. Swap out ์ดํ Swap in ํ ๋ ์ฃผ์๊ฐ ๋ฐ๋์ด๋ ๊ด์ฐฎ๋ค๋ ๊ฒ. ์๋ Disk์ Task๋ File์ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ์ Backing Store๋ผ๊ณ ๋ถ๋ฅธ๋ค. (File Read๋ฅผ ์ํ ๊ณต๊ฐ์ด ์๋๋ค) Windows๊ฐ ์ด๋ ๊ฒ ํ๋ค. ๊ฐ์ ํ๊ฒฝ์์ sudo gnome-disks . Backing Store๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฅํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
Dispatcher
์ง๊ธ ์คํํด์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉด ๋ฐ๋ก ์คํ์ํค๋ฉด ๋๋๋ฐ Swap๊น์ง์ ๊ธฐ๋ฅ๊น์ง Dispatcher๊ฐ ์ํํด์ค๋ค.