- 論壇徽章:
- 13
|
本帖最后由 _nosay 于 2015-11-06 11:27 編輯
網(wǎng)上有篇文章,對于動態(tài)鏈接的說明很詳細、很清晰:http ://www. cnblogs.com/catch/p/3857964.html
但是其中有2句話,不知道該如何理解:
1. 對于加載時重定位,其原理很簡單,它與鏈接時重定位是一致的,只是把重定位的時機放到了動態(tài)庫被加載到內(nèi)存之后,由動態(tài)鏈接器來進行。
2. 因為不允許對可執(zhí)行文件的代碼段進行加載時符號重定位,。。。
疑問:不管動態(tài)庫,還是可執(zhí)行文件,text段不都是只讀屬性嗎?
我自己是這樣理解的:可執(zhí)行文件運行時,第1次需要某個動態(tài)庫時,便加載該庫,會出現(xiàn)一個這樣的場景:動態(tài)庫的text段在加載進內(nèi)存到開始被執(zhí)行之前,text段還不是真正的“text段”(因為還沒正式開始被CPU執(zhí)行),只是內(nèi)存中一段普通的數(shù)據(jù),所以可以被動態(tài)鏈接器修改;而可執(zhí)行文件的text段,此時正在被執(zhí)行,所以不能被修改。
看似矛盾的2句話,是不是因為加載都是指動態(tài)庫加載時? |
|