? 虛擬存儲出現的動機:把程序員從大量繁瑣的存儲管理工作中解放出來,使得程序員編程時不用管主存容量的大小
基本思想:把地址空間和主存容量的概念區分開來。程序員在地址空間里編寫程序,而程序則在真正的內存中運行。由一個專門的機制(操作系統)來實現地址空間和實際主存直接的映射。
虛擬內存提供了三個重要的能力:1)它將主存看成是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保存活動區域,并根據需要在磁盤和主存之間來回傳送數據,通過這種方式,它高效的使用了主存。 2)它為每個進程提供了一致的地址空間,從而簡化了內存管理。3)它保護了每個進程的地址空間不被其他程序破壞。
分頁
? ? 基本思想:
? ? ? ? 內存被分成固定長且比較小的存儲快(頁框,實頁,物理頁)
? ? ? ? 每個進程也被劃分成固定長的程序塊(頁,虛頁,邏輯頁)
? ? ? ? 程序塊可裝到存儲器中可用的存儲塊中
? ? ? ? 無需用連續頁框來存放一個進程
? ? ? ? 操作系統為每個進程生成一個頁表
? ? ? ? 通過頁表(page table)實現邏輯地址向物理地址轉換
? ? 邏輯地址:程序中指令所用地址(進程所在的地址空間),也稱為虛擬地址(VA)
? ? 物理地址(PA):存放指令或數據的實際內存地址。
不需要將一個進程的全部都裝入內存,根據程序訪問的局部性可知:可把當前活躍的頁面調入主存,其余留在磁盤上。局部性原則保證了在任意時刻,程序將趨向于在一個較小的活動頁面集合上工作。