一,多級儲存器結構
對計算機而言,儲存層次至少擁有**:最高層為cpu暫存器、中間層是主存(記憶體)、最底層是輔存(硬碟)。
1,主儲存器
主儲存器(簡稱記憶體)是計算機系統的乙個重要的部件,用於儲存程序執行時的程式和資料。cpu只能從主儲存器中取得指令和資料,由於主儲存器的訪問速度遠低於cpu執行指令的速度,為緩和這一矛盾,在計算機系統中引入了暫存器和快取記憶體。
2,暫存器
暫存器的訪問速度很快,完全能與cpu協調工作,但是**比較的昂貴,因此容量不能做的很大。
二,程式的裝入和鏈結
在多工作業系統中,要使程式執行,必須先為之建立程序。而建立程序的第一件事,就是把程式和資料裝入記憶體。如何將乙個應用程式變為可在記憶體中執行的程序,需要經過下面幾個步驟:
(1),編譯:首先編譯器將程式源**編譯成若干個目標模組。
(3),裝入:由裝入程式將裝入模組裝入記憶體。
三,連續分配方式
為程式分配一塊連續的記憶體空間,這是一種最簡單的儲存管理方式,但只能用於單任務、單使用者的作業系統中。使用這方記憶體分配方式可能會產生很多記憶體"碎片"。
四,分頁儲存管理方式
連續分配方式會產生很多的碎片,雖然可以通過緊湊的方式,可以將碎片拼接成可以可用的大塊空間,要付出很大的開銷。如果允許將程序直接裝入到許多不相鄰的分割槽中,則無需再進行緊湊。基於這一思想便產生了離散分配方式,如果離散分配方式的基本單位是頁,則成為分頁儲存管理方式;如果離散分配的基本的單位是段,則成為分段儲存管理方式。
1,頁面和物理塊
分頁儲存管理是將乙個程序的邏輯位址空間分成若干個大小相等的片,稱為頁面,並加以編號。相應地,把記憶體空間分成與頁面大小相等的若干個儲存塊,也同樣為他們加以編號。在為程序分配記憶體時,以塊為單位將程序中的若干個頁分別裝入到多個可以不鄰接的物理塊中。
2,頁表
分頁儲存管理方式,允許將程序的各個頁離散的儲存到記憶體的不同物理塊中,但系統應保證程序執行時,能在記憶體中找到每個頁面所對應的物理塊。為此,系統為每個程序建立了乙個頁表,其中記錄了相應頁在記憶體中對應的物理塊號。
五,分段儲存管理方式
1,分段
在分段儲存管理方式中,程序的邏輯位址空間被分成若干個段,每個段都是從0開始編號,並採用一段連續的記憶體空間,段的長度由相應的邏輯資訊的長度決定,因而各段長度不等。
2,段表
在分段儲存管理系統中,為每乙個分段分配乙個連續的記憶體空間,而程序的各個段可以離散地移入到記憶體中不同的分割槽中。為了找到每個邏輯段對應的物理位置,系統為每個程序建立乙個段表。每個段在表中占用乙個表項,其中記錄了該段在記憶體中的起始位置和段的長度。段表主要用於從邏輯段到物理段的對映。
六,分段與分頁的主要區別
(1),頁是資訊的物理單位,分頁是為了實現離散分配方式,為了減少記憶體碎片,提高記憶體的利用率。分頁是系統管理記憶體的需要而不是使用者的需要。段是資訊的邏輯單位(例如:某個函式),分段的目的是為了更好的滿足使用者程式設計的需要。
(2),頁的大小固定且由系統決定,段的長度不固定取決於使用者所編寫的程式。
七,虛擬儲存器
1,為什麼要引入虛擬儲存器?
前面介紹的幾種儲存管理方式有乙個共同的特點,即他們都要求將乙個作業全部裝入記憶體之後才能執行,但是會經常出現下面這兩種情況
(1),有的作業很大,其要求的記憶體超出了記憶體的容量,作業不能全部裝入記憶體。
(2),有大量的作業需要執行,但記憶體容量不足以支援同時執行這麼多的作業,只能將少數的作業放到記憶體中執行,把大量的作業放到外存上等待。
出現上面兩種情況的根本原因是記憶體的容量不足,但是又不能無限制的擴大記憶體的容量。我們可以從邏輯上擴大記憶體的容量,這正是虛擬儲存技術要解決的主要問題。
2,區域性性原理
程式在執行時呈現出區域性性的規律,即在一短的時間內,程式的執行具有時間區域性性與空間區域性性
時間區域性性:如果程式的某條指令被執行,則不久以後該指令可能被再次執行。
空間區域性性:如果程式訪問了某個記憶體單元,則不久後其附近的記憶體單元也將被訪問。
3,虛擬儲存器
基於區域性性原理,程式在執行之前,沒有必要全部裝入記憶體,僅需要將當前那些需要執行的頁面裝入記憶體即可,其餘的部分先放到外存上。在程式執行時,如果所需要的頁沒有在記憶體中,此時程式使用os提供的請求調頁功能,將它們調入記憶體,以便程式能繼續執行下去。如果此時記憶體已滿,無法再裝入新的頁,則要使用os提供的置換功能,將記憶體中暫時用不到的頁放到外存上,騰出足夠的記憶體空間,再將要訪問的頁調入記憶體中,讓程式繼續執行下去。從使用者的角度來看,該系統所擁有的記憶體容量比實際的記憶體容量大的多,但是使用者看到的大容量只是一種感覺,是虛的,因此把這樣的儲存器稱為虛擬儲存器。所謂虛擬儲存器,是指具有請求調入功能和置換功能,能從邏輯上對記憶體進行擴充的一種儲存器系統。
八,頁面置換演算法
記憶體中的程序在執行的過程中,如果其所需要的頁面不在記憶體中,需要將其所需頁面調入記憶體,但是此時記憶體已滿,為了保證程序能繼續執行,系統必須把記憶體中暫時不用的也調到外存上。但應將哪個頁面調出,要根據一定的演算法來確定,這個演算法就叫做頁面置換演算法。置換演算法的好壞將直接影響系統的效能。下面是一些常見的頁面置換演算法
1,最佳置換演算法
其選擇的要被淘汰的頁面是以後永遠不會用到,或許是在很長的一段時間內都不會用到的頁面。
優點:可以保證最低的缺頁率。
缺點:人們無法預知程序的哪乙個頁面是未來最長時間內不會被訪問的。
2,先進先出(fifo)頁面置換演算法
這是最早出現的頁面置換演算法,該演算法總是淘汰最先進入記憶體的頁面。
優點:實現簡單。
缺點:該演算法與程序實際執行的規律不相適應,頁面調入的先後順序不能代表頁面的使用情況。例如:程序中的某些頁面需要被經常訪問,包含全域性變數、常用函式的頁面,fifo演算法並不能保證這些頁面不被淘汰。
3,最近最久未使用(lru)置換演算法
fifo演算法的效能之所以差,是因為它所依據的條件是各個頁面調入記憶體的時間,而頁面調入的先後順序並不能反映頁面的使用情況。lru演算法是根據頁面調入記憶體後的使用情況來進行決策的。由於無法預知頁面的將來使用情況,只能利用"最近的過去"作為"最近的將來"的近似。
儲存器管理
通用計算機有三層儲存器 cpu暫存器,主存,輔存。為了緩和各儲存器之間處理速度的差異,在暫存器和主存之間加入了快取記憶體,而在主存和輔存之間加入了磁碟快取。模組裝入方式 1 絕對裝入方式 將目標模組裝入到記憶體事先指定的位置。記憶體的分配方式 一 連續分配方式。1 單一連續分配 只能用於單使用者單任...
儲存器管理
一 單一連續分配 分為系統區和使用者區,系統區僅提供給os使用,通常放在低位址,使用者區出系統區以外的全部記憶體空間,供使用者使用。二 固定分割槽分配 把記憶體劃分為大小不一的分割槽,有幾個分割槽便只允許幾道作業併發。會造成內碎片 內碎片 乙個分區內的剩餘空間 三 動態分割槽分配 根據程式大小需要多...
儲存器管理
1 編譯compiler 編譯程式 將使用者源 編譯成若干個目標模組。1 邏輯位址 相對位址,虛位址 使用者的程式經過彙編或編譯後形成目標 目標 中的指令位址是相對位址。一般首位址為0,其餘指令中的位址都相對於首位址來編址。不能用邏輯位址在記憶體中讀取資訊 2 實體地址 絕對位址,實位址 記憶體中儲...