虛擬記憶體的基本思想:
每個程式擁有自己的位址空間,這個空間被分割成多個塊。每一塊 稱作一頁或頁面(page)。每一頁有連續的位址空間。這些頁被對映到物理記憶體,但並不是所有的頁都必須在記憶體中才能執行。當程式引用到一部分在物理記憶體中位址空間時,由硬體立刻執行必要的對映,當程式引用一部分不在物理記憶體中的位址空間時,由作業系統負責將缺失的部分裝入物理記憶體並重新執行失敗的指令。
由程式產生的位址稱為虛擬位址(virtual address)。他們構成了乙個虛擬位址空間(virtual address space)
在沒有虛擬位址的計算機上,進系統直接將虛擬位址送到記憶體匯流排上,讀寫操作使用具有相同位址的物理記憶體字,
在有虛擬位址的計算機上,而是被送到記憶體管理單元(memory management unit),mmu把虛擬位址對映到為物理記憶體位址。
虛擬位址空間按照固定大小劃分稱為頁面的若干單元。在物理記憶體中對應的單元稱為頁框(page frame)。頁面和頁框的大小通常一樣。ram和硬碟之間的互動總是以整個頁面為單位進行的。
虛擬位址被分成虛擬頁號(高位)和偏移量(低位部分)兩部分。虛擬頁號也可用頁表的索引,已找到該虛擬頁面對應的頁表項
兩個主要的問題:
如果全部用暫存器實現雖然速度很快,但是成本太高,而且每次上下問切換需要重新載入副本到暫存器。
如果全部用記憶體實現,每次執行指令都需要訪問記憶體多次效率很低。
基於大多數程式總是對少數頁面進行多次的訪問的原理。
通常採用折中的轉換檢測緩衝區(translation lookaside buffer ,tlb)或者相聯儲存器(associate momery),小型的硬體裝置將虛擬位址直接對映到實體地址。而不必再訪問頁表。
在現代的作業系統中,對tlb的管理通常都是在軟體中實現的。這些機器上,tlb表項被顯示地裝載。當發生tlb訪問失效的時候不再是mmu到頁表中查詢並取出資料,而是生成乙個tlb失效並將問題提交給作業系統解決。tlb失效比缺頁中斷更頻繁。
多級頁表
比如32位的位址,分為10+10+12,**位址。
倒排頁表
對於64如果還用多級頁表,需要的頁表空間太大。實際中記憶體每個頁框有乙個表項,而不是每個虛擬頁表有乙個表項。
不過這樣從虛擬位址到實體地址的轉換會變的困難,需要遍歷查詢,所以需要tlb將頻繁使用的頁面記錄下來。
讀書筆記 現代作業系統
ch1.1.作業系統中,抽象非常重要,乙個複雜的任務可以抽象成多個簡單的子任務,將複雜的硬體抽象成簡單的介面,書中針對向上層應用提供的介面做詳細的講解,但是對於使用者 終端使用者 介面不會做研究.2.作業系統中的資源有時間資源和空間資源,以及硬碟的空間資源,時間資源是時間復用的 如cpu的輪轉 空間...
《現代作業系統》讀書筆記 記憶體管理篇
標籤 讀書筆記 校招 作業系統 面試 實體地址是指出現在cpu外部位址匯流排上的定址物理記憶體的位址訊號,是邏輯位址變換後的最終結果位址,實體地址空間是指記憶體中實體地址單元的集合。記憶體保護是為了防止乙個作業有意或無意地破壞作業系統或其他作業。常用的儲存保護方法有界限暫存器方法和儲存保護鍵方法。界...
《現代作業系統》讀書筆記 執行緒
執行緒是最小的任務排程單位,是依賴於程序而存在的迷你程序。和程序一樣,執行緒也有三種狀態 執行 就緒 阻塞。我認為,執行緒是程序中任務真正的執行者,而程序提供了記憶體空間 cpu 程式計數器以及暫存器讓執行緒使用。對於程序來說,多個程序之間無法分享記憶體空間,對於一些應用而言,共享記憶體空間的能力是...