亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

通過一個可執行文件被執行的過程理解進程的深刻性

2024-06-28 13:23:15
字體:
來源:轉載
供稿:網友
通過一個可執行文件被執行的過程理解進程的深刻性

  不知大家在平時想過沒有,我們放在磁盤(之前我一直認為Windows的C盤是主存,DEF盤是磁盤,哈哈,應該沒有像我這樣無知的人吧)上的一個可執行文件(或者應用程序)是如何得到執行的,而且為什么我們在寫程序的時候怎么感覺程序中的一些變量的地址好像在各個不同的程序中都差不多,同時這個地址到底真正對應的是什么?是我們可執行文件對應所在位置的磁盤地址嗎?下面我就以linux為平臺(Windows也一樣,只是將命令方式變為圖形方式了)為大家詳細講解一下一個可執行文件是如何得到執行的。

  在Linux中當我們打開shell時,我們相當于已經新建了一個進程,這個進程運行的是shell這個應用程序。當在shell中輸入一個可執行目標文件的名字時,shell會用fork()函數創建一個新的進程,在這個新進程中調用execve()函數來加載和執行這個可執行文件。

  我準備詳細來說明一下這個execve()函數是如何來工作的,比如它是如何將磁盤上的目標文件拷貝到主存中來讓CPU運行的?程序中我們所看到的地址到底是什么?帶著這些問題我們來一步一步分析。

  首先因為execve()函數是在shell這個進程的子進程中運行的,而子進程必定會拷貝(其實也不是拷貝,要不然這個進程設計的也太臃腫了,是一種叫寫時拷貝的機制)很多父進程已存在的內容,所以必須刪除掉。

然后它開始映射(看到映射有沒有想到數學中叫函數映射的東西,本質上都是一樣的)我們可執行文件中的內容,談到映射那必然是X------>Y,現在Y是我們的可執行文件,那X呢?先給大家補充一點進程中的知識,等補充完了,才能說X。每個進程中都有一個叫頁表的東西,頁表有很多項,每一項叫頁表項(為了簡化問題的復雜性我們就假設Linux是一級頁表吧),同時在操作系統中一般一個頁或者物理塊的大小為4KB(對應為12位的頁內地址),所以在一個32的操作系統中只需要保存2^20個頁表項就可以表示地址從0x00000000到0xffffffff的范圍,其中這個地址的后12位為頁內地址,而我們在程序中所見到的地址就是這個地址,根本不是什么我們程序對應的物理地址。記住,這個地址并不是真正對應的磁盤或者內存的地址,而是虛擬的,叫虛擬地址。如果現在還不太明白等我全部講完就會懂的。

講到這里大家先稍微理解理解,免得看的一頭霧水。那我開始,剛剛我們說到進程中的頁表項,每一個頁表項從開始到結束對應的編號為0x00000-0xfffff(一共2^20個,大家可以畫一畫),這個頁表項主要有兩個部分,第一個部分用來指向磁盤的物理塊或者內存上的塊,第二個部分表明所指向的塊是在磁盤上還是內存上或者這部分就根本沒用。

那么我們現在可以說X是什么了,就是虛擬地址!說完了X,Y,那還有映射規則呢,對于我們程序中的文本塊,數據塊,棧,堆等在Linux中分別對應不同的虛擬地址,而且是固定的,對所有程序都一樣。這也就可以解釋為什么不同的程序不同的變量有時候地址卻差不多,因為他們的虛擬地址都是從0x00000000---0xffffffff,因此當他們的變量都保存在棧中時,對應的虛擬地址也很接近。

映射完之后,execve()調用啟動代碼,啟動代碼將調用main()函數,大家一定會想現在可執行目標不是還在磁盤上嗎?它是怎么拷貝到內存上,然后被CPU執行的呢?確實如此,因此當啟動代碼將main()函數的虛擬地址傳遞給CPU時,CPU通過解析虛擬地址發現內存中沒有main()相對應的頁或者物理塊,然后CPU通過進程中的頁表項找到我們可執行文件所在的磁盤位置,將磁盤上的塊拷貝到內存中,這樣CPU就可以順利的執行我們的程序了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品欧美视频| 成人免费网站在线看| 欧美日韩国产成人在线| 久久久97精品| 国产精品日韩久久久久| 国产精品电影网站| 欧洲亚洲免费在线| 夜夜嗨av一区二区三区四区| 国产精品一区电影| 一区二区三区视频免费在线观看| 国产精品爽爽ⅴa在线观看| 亚洲欧美资源在线| 2018中文字幕一区二区三区| 国产精品成人va在线观看| 日韩免费在线免费观看| 欧美色视频日本版| 中文字幕久久亚洲| 久久久久久成人精品| 日韩在线观看高清| 日本19禁啪啪免费观看www| 国产精品久久久久不卡| 538国产精品一区二区在线| 欧美电影免费观看网站| 亚洲精品一区二区三区婷婷月| 清纯唯美亚洲激情| 亚洲91精品在线| 九九热精品视频国产| 久久99国产精品久久久久久久久| 91青草视频久久| 亚洲精品97久久| 国产成人jvid在线播放| 国产男女猛烈无遮挡91| 亚洲精品一区中文字幕乱码| 国产www精品| 久久91精品国产91久久久| 日韩中文字幕不卡视频| 美女国内精品自产拍在线播放| 久久夜色撩人精品| 亚洲网站在线观看| 国产成人jvid在线播放| 91精品国产91久久久久久| 国产原创欧美精品| 秋霞午夜一区二区| 精品视频—区二区三区免费| 国产精品手机播放| 欧美日韩国产精品| 亚洲日本成人女熟在线观看| 亚洲福利视频网站| 不用播放器成人网| 91精品国产综合久久男男| 亚洲一二三在线| 日韩国产中文字幕| 亚洲欧美资源在线| 国产一区二区欧美日韩| 91视频九色网站| 亚洲成人激情在线观看| 国产精品黄页免费高清在线观看| 中文字幕日韩av电影| 国产免费观看久久黄| 亚洲电影成人av99爱色| 欧美激情图片区| 日韩免费在线播放| 亚洲欧美精品一区| 久久久亚洲福利精品午夜| 欧美日韩美女视频| 国产精品丝袜视频| 精品福利樱桃av导航| 欧美激情在线有限公司| 久久频这里精品99香蕉| 日韩精品福利网站| 亚洲精品一区久久久久久| 亚洲国产精品久久久久秋霞蜜臀| 国产日韩av在线| 成人情趣片在线观看免费| 国产精品27p| 1769国内精品视频在线播放| 伊人久久久久久久久久久| 久久久久久久av| 91精品国产高清久久久久久| 97视频人免费观看| 久久九九亚洲综合| 欧美精品久久久久久久| 欧美日韩国产91| 国产精品成人观看视频国产奇米| 中文字幕欧美精品在线| 中文字幕日韩av电影| 欧美视频专区一二在线观看| 日韩一区视频在线| 亚洲女人天堂网| 97久久国产精品| 亚洲成人激情视频| 亚洲自拍另类欧美丝袜| 911国产网站尤物在线观看| 欧美国产在线电影| 欧美激情网站在线观看| 久久影院中文字幕| 亚洲缚视频在线观看| 色中色综合影院手机版在线观看| 亚洲无线码在线一区观看| 国产一区二区免费| 欧美在线xxx| 欧美在线一区二区三区四| 7777精品视频| 久久99国产综合精品女同| 91久久久久久久久久久| 亚洲欧洲偷拍精品| 亚洲人成网站777色婷婷| 成人精品一区二区三区电影黑人| 日韩av网址在线| 久久久久九九九九| 欧美激情区在线播放| 正在播放国产一区| 国产欧美一区二区三区四区| 亚洲国产成人爱av在线播放| 伊人男人综合视频网| 久久久久北条麻妃免费看| 亚洲人成电影网| 8090成年在线看片午夜| 日韩高清电影免费观看完整| 日韩av一区二区在线观看| 日本韩国欧美精品大片卡二| 欧美一级电影在线| 日本精品视频在线| 黄色一区二区三区| 亚洲va电影大全| 亚洲精品日韩欧美| 一本一本久久a久久精品牛牛影视| 日韩中文理论片| 国产a∨精品一区二区三区不卡| 亚洲一区二区免费在线| 久久97精品久久久久久久不卡| 中文字幕亚洲自拍| 一区二区欧美日韩视频| 57pao成人永久免费视频| 亚洲第一偷拍网| 久精品免费视频| 国产精品吹潮在线观看| 亚洲图片在区色| 亚洲欧美资源在线| 日韩中文理论片| 日韩精品在线观看网站| 最近2019中文免费高清视频观看www99| 5566日本婷婷色中文字幕97| 青青久久av北条麻妃黑人| 欧美性受xxxx黑人猛交| 亚洲色图15p| 欧美激情中文字幕在线| 欧美一乱一性一交一视频| 青青草原成人在线视频| 国产日韩精品电影| 国产欧美日韩丝袜精品一区| 中文字幕精品网| 亚洲网站视频福利| 国产精品一区二区久久国产| 中文字幕日韩欧美精品在线观看| 国产精品高潮呻吟视频| 国产日产欧美精品| 国产精品美女免费看| 欧美亚洲视频在线看网址| 国产有码在线一区二区视频| 国产欧美精品一区二区三区-老狼| 日韩欧美福利视频| 欧美亚洲午夜视频在线观看| 国产精品福利无圣光在线一区|