進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理

進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理

ID:44672777

大?。?00.07 KB

頁數(shù):5頁

時(shí)間:2019-10-24

進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理_第1頁
進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理_第2頁
進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理_第3頁
進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理_第4頁
進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理_第5頁
資源描述:

《進(jìn)程管理、進(jìn)程地址空間管理、內(nèi)存管理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、進(jìn)程與內(nèi)存進(jìn)程如何使用內(nèi)存?亳無疑問所有進(jìn)程(執(zhí)行的程序)都必須占用一定數(shù)量的內(nèi)存,它或是用來存放從磁盤載入的程序代碼,或是存放取fl用戶輸入的數(shù)據(jù)等等。不過進(jìn)程對這些內(nèi)存的管理方式因內(nèi)存用途不一而不盡相同,有些內(nèi)存是爭先靜態(tài)分配和統(tǒng)一回收的,而有些卻是按需要?jiǎng)討B(tài)分配和回收的。對任何一個(gè)嚴(yán)通進(jìn)程來講,它都會(huì)涉及到5種不同的數(shù)據(jù)段。稍有編程知識的朋友都該能想到這兒個(gè)數(shù)據(jù)段種包含有“程序代碼段”、“程序數(shù)據(jù)段”、“程序堆棧段”等。不錯(cuò),這兒種數(shù)據(jù)段都在其中,但除了以上兒種數(shù)據(jù)段Z外,進(jìn)程還另外包含兩種數(shù)據(jù)段。下面我們來簡

2、單歸納一下進(jìn)程對應(yīng)的內(nèi)存空間中所包含的5種不同的數(shù)據(jù)區(qū)。代碼段:代碼段是用來存放可執(zhí)行9文件的操作指令,也就是說是它是可執(zhí)行程序在內(nèi)存種的鏡像。代碼段需耍防止在運(yùn)行時(shí)彼非法修改,所以只準(zhǔn)許讀取操作,而不允許寫入(修改)操作——它是不可寫的。數(shù)據(jù)段:數(shù)據(jù)段用來存放可執(zhí)行文件中已初始化全局變量,換句話說就是存放程序靜態(tài)分配的變量和全局變址。BSS段:BSS段包含了程序中耒初始化全局變雖,在內(nèi)存中bss段全部耗零。堆(heap):堆是用于存放進(jìn)程運(yùn)行中被動(dòng)態(tài)分配的內(nèi)存段,它大小并不固定,可動(dòng)態(tài)擴(kuò)張或縮減。當(dāng)進(jìn)程調(diào)用mall

3、oc等函數(shù)分配內(nèi)存時(shí),新分配的內(nèi)存就被動(dòng)態(tài)添加到堆上(堆被擴(kuò)張);當(dāng)利用仇c等函數(shù)鄴放內(nèi)存時(shí),被釋放的內(nèi)存從堆中被剔除(堆被縮減)棧:棧是用戶存放程序臨時(shí)創(chuàng)建的局部變昴,也就是說我們函數(shù)括弧“{}”中定義的變呈(但不包括static明的變量,static意味這在數(shù)據(jù)段中存放變量)。除此以外在兩數(shù)被調(diào)用時(shí),其參數(shù)也會(huì)被壓入發(fā)起調(diào)用的進(jìn)程棧中,并且待到調(diào)用結(jié)束片,函數(shù)的返回值也回被存放回棧中。由于棧的先進(jìn)先出特點(diǎn),所以棧特別方便用來保存/恢復(fù)調(diào)用現(xiàn)場。從這個(gè)憊義上將我們可以把堆??闯梢粋€(gè)臨時(shí)數(shù)據(jù)寄存、交換的內(nèi)存區(qū)。進(jìn)程如

4、何組織這些區(qū)域?上述兒種內(nèi)存區(qū)域中數(shù)據(jù)段、BSS和堆通常是被連續(xù)存儲(chǔ)的一內(nèi)存位笹上是連續(xù)的,而代碼段和棧往往會(huì)被獨(dú)芷存放。有趣的是堆和棧兩個(gè)區(qū)域關(guān)系很“曖昧”,他們一個(gè)向下“長”(i386體系結(jié)構(gòu)中棧向下、堆向上),一個(gè)向上“長”,相對而生。但你不必?fù)?dān)心他們會(huì)碰頭,因?yàn)樗麄僙間間隔很大(到底大到多少,你可以從下面的例子程序計(jì)算一下),絕少有機(jī)會(huì)能碰到一起。卜圖簡要描述『進(jìn)程內(nèi)存區(qū)域的分布:代碼段從前面的例子,我們對進(jìn)程使用的邏輯內(nèi)存分布已經(jīng)先睹為快。這部分我們就繼續(xù)進(jìn)入操作系統(tǒng)內(nèi)核看看進(jìn)程對內(nèi)存具體是如何進(jìn)行分配和管

5、理的。從用戶向內(nèi)核看,所使用的內(nèi)存表象形式會(huì)依次經(jīng)歷“邏輯地址”一“線形地址”一“物理地址”幾種形式(關(guān)于幾種地址的解釋在前而已經(jīng)講述了)。邏輯地址經(jīng)段機(jī)制轉(zhuǎn)化成線性地址;線性地址乂經(jīng)過頁機(jī)制轉(zhuǎn)化為物理地址。(但是我們要知道Linux系統(tǒng)雖然保留了段機(jī)制,但是將所冇程序的段地址都定死為0-4G,所以雖然邏祈地址和線性地址是兩種不同的地址空間,但在Linux中邏輯地址就等于線性地址,它們的值是-樣的)。沿著這條線索,我們所研究的主耍問題也就集中在下而幾個(gè)問題。1.進(jìn)程空間地址如何管理?2.進(jìn)程地址如何映射到物理內(nèi)存?3

6、.物理內(nèi)存如何被管理?以及由上述問題引發(fā)的一些子問題。如系統(tǒng)虛擬地址分布;內(nèi)存分配接口;連續(xù)內(nèi)存分配與非連續(xù)內(nèi)存分配等。進(jìn)程內(nèi)存空間Linux操作系統(tǒng)采用虛擬內(nèi)存管理技術(shù),使得每個(gè)進(jìn)程都有各自互不干涉的進(jìn)程地址空間。該空間是塊人小為4G的線性虛擬空間,用戶所看到和接觸的都是該虛擬地址,無法看到實(shí)際的物理內(nèi)存地址。利用這種虛擬地址不但能起到保護(hù)操作系統(tǒng)的效果(用戶不能立接訪問物理內(nèi)存),而11更重要的是川戶程序可使用比實(shí)際物理內(nèi)存更大的地址空間(具體的原因請看硬件基礎(chǔ)部分)。在討論進(jìn)程空間細(xì)節(jié)前,請人家這里先耍澄清下面

7、兒個(gè)問題。第一、4G的進(jìn)程地址空間被人為的分為兩個(gè)部分一用戶空間與內(nèi)核空間。用戶空間從0到3G(OxCOOOOOOO),內(nèi)核空間占據(jù)3G到4G。用戶進(jìn)程通常情況下只能訪問用戶空間的虛擬地址,不能訪問內(nèi)核空間虛擬地址。例外情況只有用戶進(jìn)程進(jìn)行系統(tǒng)調(diào)用(代表用戶進(jìn)程在內(nèi)核態(tài)執(zhí)行)等時(shí)刻町以訪問到內(nèi)核空間。第二、川戶空間對應(yīng)進(jìn)程,所以每當(dāng)進(jìn)程切換,川戶空間就會(huì)跟著變化:而內(nèi)核空間是由內(nèi)核負(fù)責(zé)映射,它并不會(huì)跟著進(jìn)程改變,是同定的。內(nèi)核空間地址冇自己對應(yīng)的頁表(init_mm.pgd),用戶進(jìn)程各白冇不同的頁表。第三、每個(gè)進(jìn)程

8、的用戶空間都是完全獨(dú)立、互不相下的。不信的話,你可以把上面的程序同時(shí)運(yùn)行10次(當(dāng)然為了同時(shí)運(yùn)行,讓它們在返回前一同睡眠100秒吧),你會(huì)看到10個(gè)進(jìn)程占用的線性地址--模--樣。進(jìn)程內(nèi)存管理進(jìn)程內(nèi)存管理的對象是進(jìn)程線性地址空間上的內(nèi)存鏡像,這些內(nèi)存鏡像其實(shí)就是進(jìn)程使用的虛擬內(nèi)存區(qū)域(memoryregion).跡程虛擬空間是個(gè)32或64位的“

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。