淺談c語言的虛擬存儲器

ID:7230840

大?。?1.00 KB

頁數(shù):2頁

時間:2018-02-08

淺談c語言的虛擬存儲器_第1頁
淺談c語言的虛擬存儲器_第2頁
資源描述:

《淺談c語言的虛擬存儲器》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。

1、淺談c語言的虛擬存儲器發(fā)布于:2012-12-3111:39瀏覽量:346虛擬存儲器是一個抽象概念,它為每個進程提供了一個假象,好像每個進程都在獨占地使用內(nèi)存。每個進程看到的存儲器都是一致的,稱之為虛擬地址空間。下圖所示的是Linux進程的虛擬地址空間。在Linux中,最上面的四分之一的地址空間是預(yù)留給操作系統(tǒng)中的代碼和數(shù)據(jù)的,這對所有進程都一樣。底部的四分之三的地址空間用來存放用戶進程定義的代碼和數(shù)據(jù)。請注意,下圖的地址是從下往上增大的。每個進程看到的虛擬地址空間由大量準確定義的區(qū)(area)構(gòu)成,每個區(qū)都有專門的功能?,F(xiàn)在簡單看看每一個區(qū),

2、從最低的地址開始,逐步向上研究將是非常有益的。·程序代碼和數(shù)據(jù)。代碼是從同一固定地址開始,緊接著的是和C全局變量相對應(yīng)的數(shù)據(jù)區(qū)。代碼和數(shù)據(jù)區(qū)是由可執(zhí)行目標文件直接初始化的?!ざ?。代碼和數(shù)據(jù)區(qū)后緊隨著的是運行時的堆。代碼和數(shù)據(jù)區(qū)是在進程一旦開始運行時就被指定了大小的。與此不同,作為調(diào)用像malloc和free這樣的C標準庫函數(shù)的結(jié)果,堆可以在運行時動態(tài)地擴展和收縮?!す蚕韼臁T诘刂房臻g的中間附近是一塊用來存放像C標準庫和數(shù)學庫這樣共享庫的代碼和數(shù)據(jù)的區(qū)域。共享庫的概念非常強大,但是也是個相當難懂的概念?!?。位于用戶虛擬地址空間頂部的是用戶棧,編

3、譯器用它來實現(xiàn)函數(shù)調(diào)用。和堆一樣,用戶棧在程序執(zhí)行期間可以動態(tài)地擴展和收縮。特別地,每次我們調(diào)用一個函數(shù)時,棧就會增長。每次我們從函數(shù)返回時,棧就會收縮?!?nèi)核虛擬存儲器。內(nèi)核是操作系統(tǒng)總是駐留在存儲器中的部分。地址空間頂部的四分之一部分是內(nèi)核預(yù)留的。應(yīng)用程序不允許讀寫這個區(qū)域的內(nèi)容或者直接調(diào)用內(nèi)核代碼定義的函數(shù)。虛擬存儲器的運作需要硬件和操作系統(tǒng)軟件間的精密復(fù)雜的互相合作,包括對處理器生成的每個地址的硬件翻譯?;舅枷胧前岩粋€進程虛擬存儲器的內(nèi)容存儲在磁盤上,然后用內(nèi)存作為磁盤的高速緩存。

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

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

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