虛擬內存技術的誕生(程序加載運行發展史)


無存儲器抽象

早期大型計算機(20世紀60年代之前),小型計算機(20世紀70年代之前),個人計算機(20世紀80年代)
不能同時運行2個以上程序,比如第一個程序在地址2000處存放了一個數據,第二個程序向2000也寫入數據,那么之前2000地址處的數據會被擦除
將物理地址暴露的缺點:1、容易破壞操作系統 2、運行多個程序是困難的

嵌入式系統和智能卡系統中無存儲器抽象還是很常見的,比如收音機、洗衣機、微波爐。
因為他們通常只有一個程序。

一種存儲器抽象:地址空間

地址空間:一個進程可用於尋址內存的一套地址集合

主要解決2個問題:保護和重定位

通過在CPU中增加基址寄存器界限寄存器來實現
每加載一個程序到內存中,基址寄存器保存程序的起始地址,界限寄存器保存程序的長度
這樣做的問題就是如果程序大小超過內存大小就無法運行

交換技術

2種處理內存超載的方法:
交換技術:進程調入內存,運行一段時間,然后存回磁盤
虛擬內存:程序的一部分調入內存

20世紀60年代把程序分為許多段,稱為覆蓋
由程序員必須把程序分割成多個片段,費時枯燥,易於出錯
解決辦法:讓計算機去做這些事情

虛擬內存基本思想

小例子

把一個程序抽象為一個班級,地址抽象為每個座位,內存抽象為坐在座位上的學生
有一個演出活動,由多個班級參加,在一個大會場,會場的座位區域抽象為虛擬內存
每個參與演出的班級都會來到會場對應的座位,人是教師的人,但是地址變了,這個地址是虛擬地址,在操作系統中是一個結構體保存着虛擬內存和物理內存之間的映射關系
表演場地抽象為內存
操作系統抽象為工作人員,工作人員會記錄哪個班級進行表演
到某一個班級表演時,如果表演人員沒有到位,那對應的幾個學生先去表演,即部分程序加載到內存
同時有多個班級在表演,表示系統可以同時進行多個進程的執行
當場地不夠時,場上許久沒有進行表演的同學可以回到會場座位上了,為最近最久未使用算法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM