linux採用虛擬段頁式儲存方式來管理記憶體,程式的基本邏輯儲存單元,也可以說是程式段。linux中有四個段,**段,資料段,bss段,堆疊段。虛擬位址從低到高依次是:**段,資料段,bss段,堆疊段。其中**段為程式本身(二進位制指令),資料段為**中初始化了的全域性變數和靜態變數,bss段為為初始化的全域性變數和靜態變數,堆為程式設計師申請的記憶體空間,棧是編譯器用來存放函式區域性變數,引數等資料的位置。將程式的邏輯儲存單元分配好後,每個段在記憶體中以頁為基本單元進行儲存。我們在程式中,用取位址符取的位址,叫做邏輯位址,也叫做虛擬位址。虛擬位址由段號和段內偏移量組成。mmu通過段機制檢視段表來尋找該段號對應的頁號,該頁號和段偏移量組成的位址是線性位址;通過頁機制檢視頁表,找到該頁號對應的物理號,物理號和偏移量組成的位址,即為實體地址。
還有一種老的記憶體管理機制叫做記憶體分割槽,它分為固定分割槽和可變分割槽。固定分割槽指的是每次放入記憶體的作業大小是固定的。可變分割槽指的是放入記憶體中的大小隨作業而變化。固定分割槽不可以執行較大程式,可變分割槽會生成內碎片。記憶體分割槽會用到一種覆蓋技術,指掉入記憶體的頁一般會覆蓋掉不同時執行的部分。也就是頁1已經在記憶體中了,現在頁2也要掉入記憶體,系統判斷,頁1和頁2不會同時執行,就將頁1用頁2覆蓋掉。
交換技術是虛擬記憶體提出來的,在電腦磁碟中有乙個交換分割槽,當記憶體中的某頁當前不需要時,就將它交換出來,而將需要的交換進去。
若寫不對,敬請指正。
Linux虛擬記憶體
一 虛擬記憶體 1 系統會為每個程序分4g的虛擬記憶體空間。32個0 32個1 位址範圍。2 使用者只能使用虛擬位址,無法直接使用物理記憶體。3 虛擬位址與物理記憶體進行對映才能使用,否則就會產生段錯誤。4 虛擬位址與物理記憶體的對映由作業系統動態維護。5 讓使用者使用虛擬位址一方面為了安全,另一方...
linux記憶體與虛擬記憶體
linux支援虛擬記憶體 記憶體 記憶體條 物理記憶體 實際存在 程式中的記憶體 虛擬記憶體 os對映出來的 直接對映 檔案對映 提速 檔案io操作 耗時長 記憶體操作 耗時短 mmap函式可以把檔案對映成虛擬記憶體,像操作記憶體一樣去操作檔案。mmap函式可以直接對映一塊虛擬記憶體。include...
Linux虛擬記憶體 brk sbrk
虛擬記憶體 問題 乙個程式不能訪問另外乙個程式的位址指向的空間.理解 1.每個程式的開始位址0x80084000 2.程式中使用的位址不是物理,而是邏輯位址 虛擬記憶體 邏輯位址僅僅是編號.編號使用int 4位元組整數表示.每個程式提供了4g的訪問能力 問題 邏輯位址與實體地址關聯才有意義 過程稱為...