程序位址空間

2021-08-21 09:01:58 字數 953 閱讀 4175

記憶體一般都是按位元組定址的,意思就是乙個位址指向的記憶體單元有乙個位元組,即8位

32位是指計算機位址匯流排是32位的,cpu、記憶體控制器、作業系統都是按32位位址匯流排設計的。

32位位址匯流排可以支援的記憶體位址

這4g個位址碼正好可以分給4g記憶體,但是其他暫存器都需要系統分配給他們位址**,所以總容量為

4g的記憶體就有一部分記憶體分派不到位址碼而不能使用

32位cpu有32根位址線,實體地址=2^32=4294967296=4gb

1.什麼叫程序

當程式安靜的躺在硬碟上時,他是乙個檔案,可執行檔案、

當程式執行起來,他從硬碟上一躍進入記憶體,這時就叫做程序了。

首先,預備的並不是真實的記憶體空間大小,

而是 記憶體位址  大小, 更嚴格的說 ,是記憶體的  虛擬位址

真實記憶體位址被稱為實體地址。

如果把記憶體空間的最小單位想象成乙個格仔,

那麼記憶體位址就是格仔的門牌號。

這裡的4g,是指由4g個記憶體虛擬位址,

再直白一點,就是每個程序可以獲得4g個門牌號,而不是4g個真實的記憶體抗擊那。

一部分可能被掛在  虛擬記憶體(硬碟空間)上,

還有很大一部分哪也不掛,真個就是作業系統給程序開的白條。

虛擬記憶體和虛擬位址沒多大關係。後者是作業系統分配給每個程序一直的從0到4gde

記憶體位址,前者是作業系統拿硬碟空間假裝成記憶體空間欺騙你程序。

記憶體不夠,硬碟來湊,訪問真實記憶體的速度是納秒級別,訪問硬碟的速度是毫秒級別。

程式需要多一些檔案很正常,但是如果程式需要非常頻繁的讀寫檔案,

就需要考慮設計思路是否有問題。

比如讀取配置檔案,一遍被設計在程式啟動期間,讀入記憶體,之後一直使用記憶體中的資料,如果程式

在執行過程總,配置檔案會被外部修改,則應爭取設定成通知機制,即有修改後,程式接收到乙個通知,然後重讀檔案,

而不應該設計成每次都需要配置,就從檔案中讀取

程序位址空間

這篇文章應該不能說是原創的,這裡的記錄都是我通過閱讀整理來的,並沒有太多的自己的想法。資料 現代作業系統 之所以去了解位址空間也是因為在學習dll的時候看到要將dll對映到程式的位址空間,不甚明了所以去查詢相關的資料。位址空間其實很好理解 當然針對早期的機器 早期的機器是沒有ram,rom,cach...

程序位址空間

kernel筆記 程序位址空間 2013 09 03 09 53 49 分類 linux 下圖是x86 64下linux程序的預設記憶體布局形式 下面逐一分析以上各個位址段的含義。text 段 段,從虛擬記憶體位址00400000開始,使用pmap 可以檢視到,這個位址是固定的 linux pmap...

程序位址空間

程序位址空間 1.可執行檔案 的記憶體對映,稱為 段 2.可執行檔案的已初始化全域性變數的記憶體對映,稱為資料段 3.包含未初始化的全域性變數,也就是bss段的零頁的記憶體對映 4.用於程序使用者控制項棧的零頁的記憶體對映 5.任何記憶體對映檔案 6.任何共享記憶體段 7.任何匿名的記憶體對映,比如...