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