程序和記憶體空間
程序: 一旦程式正在執行,它就叫程序,程序擁有它自己的記憶體,檔案控制代碼及其他系統資源. windows工作列顯示的是主視窗而不是程序,單個程序可能有幾個主視窗,每個視窗都由它自己的執行緒支援.
每個程序都具有它自己"私有"的4gb虛擬位址空間, 它包括:程式的exe映像,所載入的任何非系統的dll(包括mfc dll),程式的全域性資料,內豐對映檔案等等.
windows95的程序位址空間
在95中,只有位址空間最底部的2gb(0--0x7fffffff)才是真正私有的,頂部的2gb對於所有的程序都是相同的,被所有的程序共享,它頂部的1gb包括windows95核心,可執行程式,虛擬裝置驅動程式(vxds)和檔案系統**等,另外1gb存放windows dll, 記憶體對映檔案.
windows nt程序位址空間
nt程序只能訪問其底部2gb位址空間,且其中最低的和最高的64kb不可訪問.nt核心,執行程式及裝置程式都駐留在頂部2gb之中.
虛擬記憶體的工作方式
一般分頁儲存,每一頁為4kb,當使用一頁時,占用物理記憶體,但實體地址你永遠看不到,intel微處理器可以有效地把乙個32位虛擬位址對映為物理頁以及在該頁內的偏移量.每個程序都有它自己的分頁表,晶元的cr3暫存器就保持指向當前執行的程序的目錄頁的指標,程序之間的切換只需要更新cr3即可.
當我們試圖訪問乙個不在當前ram之中的頁,將觸發乙個中斷,windows通過檢查,如果記憶體引用是假的,就會得到我們常見的"頁面錯誤",程式退出.否則就把該頁從磁碟檔案讀入ram中.
記憶體的管理的概念
1 作業系統要怎麼記錄哪些記憶體區域已經被分配出去了,哪些又還空閒呢?2 當程序執行結束之後,如何將程序占用的空間 呢?3 很多位置都可以放,那應該放 呢?提供虛擬化技術,從邏輯上對記憶體空間進行擴充套件,通過只有4g或8g記憶體的系統可以執行幾十或上百g的程式。1 作業系統負責實現邏輯位址到實體地...
記憶體管理之概念
程式裝入和鏈結 程式在經過編譯成目標模組 obj 檔案,鏈結程式鏈結之後,需要將對應的模組裝入記憶體,有三種方式 1 絕對裝入 絕對裝入程式按照裝入模組中的位址,將程式和資料裝入記憶體。由於程式中的邏輯位址與實際位址完全相同,不需要對程式和資料的位址進行修改。只適用於單道程式環境 也就是說,基本上接...
作業系統 記憶體管理(概念)
對於計算機系統而言,作業系統充當著基石的作用,它是連線計算機底層硬體與上層應用軟體的橋梁,控制其他程式的執行,並且管理系統相關資源,同時提供配套的系統軟體支援。對於專業的程式設計師而言,掌握一定的作業系統知識比不可少,因為不管面對的是底層嵌入式開發,還是上層的雲計算開發,都需要使用到一定的作業系統相...