第七周linux内核分析
生活随笔
收集整理的這篇文章主要介紹了
第七周linux内核分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
可執行程序的裝載
作者 黎靜+ 原創作品轉載請注明出處 + 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
可執行程序是怎么來的
目標文件的格式ELF
?
靜態鏈接的ELF可執行文件和進程的地址空間
-
程序的入口 :Entry point address:0x8048300
-
一般靜態鏈接會將所有代碼放在一個代碼段
- 動態鏈接的進程會有多個代碼段
裝載可執行程序之前的工作
- 可執行程序的執行環境
shell命令行、main函數的參數與execve的參數 Shell會調用execve將命令行參數和環境參數傳遞給可執行程序的main函數,先函數調用參數傳遞,再系統調用參數傳遞。
-
execve和fork都是特殊一點的系統調用:一般的都是陷入到內核態再返回到用戶態。 fork父進程和一般進程調度一樣,子進程返回到一個特定的點retfromfork,子進程是從retfromfork開始執行然后返回到用戶態;
-
一般是地址空間為0x8048000或0x8048300;
-
execve特殊:執行到可執行程序--陷入內核--構造新的可執行文件--覆蓋掉原可執行程序--返回到新的可執行程序,作為起點(也就是main函數) ,需要構造他的執行環境;
-
靜態鏈接:elfentry指向可執行文件的頭部,一般是main函數;2. 動態鏈接:elfentry指向ld的起點
可執行程序測裝載
淺析動態鏈接的可執行程序的裝載
(1)可以關注ELF格式中的interp和dynamic。
(2)動態鏈接庫的裝載過程是一個圖的遍歷。
(3)裝載和連接之后ld將CPU的控制權交給可執行程序。
轉載于:https://www.cnblogs.com/heiguirenxi/p/5366146.html
總結
以上是生活随笔為你收集整理的第七周linux内核分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 192.168.8.1网关是多少
- 下一篇: linux 其他常用命令