๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜์ฒด์ œ] Address Binding, Logical vs Physical Address Space, Dynamic Linking and Shared Library, Swapping

by UKHYUN22 2022. 5. 26.
728x90

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๊ฐ€ ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค.