Re: [問題] 連結&載入器,分段分頁,Binding關係

作者: mshockwave (夏克維夫)   2015-07-11 20:41:09
※ 引述《gigigigi (gigigigi)》之銘言:
: 何謂Binding
: Def: 決定程式執行的起始位址。
: 即:程式要在內存的哪個地方開始執行。
: 可能的Binding時期有三個:
: 1. Compiling Time
: 2. Loading Time
: 3. Execution Time
: 3-1 : Dynamic Binding
: 3-2 : Dynamic Loading
: 鏈接器( Linker )是把不同部分的代碼和數據,收集、組合成為一個可加載、可執行的文
: 件。
: 加載器( Loader )把可執行文件從外存裝入內存並進行執行
: MMU : 分段 + 分頁
: 分段 - 邏輯位址 -> 線性位址
: 分頁 - 線性位址 -> 實體位址
: _________________________________________________________________________________
: 我被上面情況給搞的有點亂 , 有下面幾點疑惑
: 1.
: Binging 三個時期程式位址都算是虛擬位址?
是的 除非你玩的是沒MMU的處理器
: Compiling Time 位址是由編譯器計算出來?
不算是 其實是由連結器那邊設定的
: Loading Time 是由 加載器 計算出位址?
: Execution Time : 位址是 Local Address + Base Register ?
小弟不才 可能不完全正確 但其實元PO問的事情沒那麼複雜
用一句話回答的話就是:把一切交給虛擬位址就對了!
基本上會考慮到實體位址的就只有一位:核心
包括編譯器連結器在內 都是用虛擬位址在思考
而我剛剛講的 編譯完的位址 其實是由叫做linker script的東西設定的
這些script是ld在編譯的鏈結時期讀取的
(script路徑可由 ld
作者: descent (「雄辯是銀,沉默是金」)   2015-07-11 21:13:00
其實學校系統程式就是教這個, 只是我不知道為什麼他們都不教真實世界的東西, 而是弄一個教學用的平台觀念雖然一樣, 但卻沒有連接到真實世界的感覺

Links booklink

Contact Us: admin [ a t ] ucptt.com