虛存
虛存
簡介 把內存與外存有機的結合起來使用,從而得到一個容量很大的“內存”,這是虛擬內存。進程不完全載入,就叫虛存。可以分成按需取頁和按需取段兩種方式。
如果用戶編製程序時,可以不考慮內存的實際容量,即允許程序中的邏輯地址空間大於內存的絕對地址空間,那麼,會使用戶感到極大的方便。存儲管理利用磁碟作為內存的後援,當一個大型的程序要裝入內存時,僅把當前需要的部分裝入,其餘部分暫留在磁碟上。程序執行中要用到不在內存中的信息時,再由操作系統將其裝入內存。如果內存空間不夠,則可由操作系統採用覆蓋技術。這樣,用戶就感到計算機系統提供了容量極大的內存空間。實際上,這個容量極大的內存空間不是物理意義上的內存,而是操作系統中的一種存儲管理方式,這種方式為用戶提供的是一個虛擬的存儲器。虛擬存儲器比實際內存的容量大,起到了擴充內存空間的作用。
虛擬存儲器:把輔助存儲器作為對主存儲器的擴充, 向用戶提供一個比實際主存大得多的的地址空間
虛擬地址和物理地址
虛擬地址: 程序在虛擬存儲器中的地址
物理地址: 程序在主存儲器中的地址
地址寄存器可以表示:
鏈接:編譯鏈接程序把用戶源程序編譯后鏈接到一個以0地址為始地址的線性或多維虛地址空間。
靜態鏈接:在程序執行以前由鏈接程序完成。
動態鏈接:在程序執行過程中由於需要而進行。
在程序裝入時,不必將其全部讀入到內存,而只需將當前需要執行的部分頁或段讀入到內存,就可讓程序開始執行。
在程序執行過程中,如果需執行的指令或訪問的數據尚未在內存(稱為缺頁或缺段),則由處理器通知操作系統將相應的頁或段調入到內存,然後繼續執行程序。
另一方面,操作系統將內存中暫時不使用的頁或段調出保存在外存上,從而騰出空間存放將要裝入的程序以及將要調入的頁或段――具有請求調入和置換功能,只需程序的一部分在內存就可執行,對於動態鏈接庫也可以請求調入.
可在較小的可用內存中執行較大的用戶程序;
可在內存中容納更多程序併發執行;
不必影響編程時的程序結構(與覆蓋技術比較)
提供給用戶可用的虛擬內存空間通常大於物理內存
物理內存分配的不連續,虛擬地址空間使用的不連續(數據段和棧段之間的空閑空間,共享段和動態鏈接庫佔用的空間)
與交換的比較:調入和調出是對部分虛擬地址空間進行
通過物理內存和快速外存相結合,提供大範圍的虛擬地址空間
範圍大,但佔用容量不超過物理內存和外存交換區容量之和
佔用容量包括:進程地址空間中的各個段,操作系統代碼