------非連續儲存分配-------
概念:將程序儲存在非連續的記憶體空間-->進而需要將程序劃分成小的部分
根據劃分粒度的大小可以分為:段式/頁式記憶體分配方式
1.頁式儲存管理--前提(程序並不要求邏輯位址必須連續)
注意:其實程序被分為許多片段,零散的分布在記憶體中不存在確定的順序
* 頁式儲存管理具體操作
# 將物理空間等分為固定長度的資料塊--稱為頁幀(frames)-f
# 將邏輯空間等分為長度固定的資料塊--稱為頁面(pages)--p
注意:頁面和頁幀的大小保持一致;通常頁面大小是2的冪
大小在512b--8192b之間
# 頁表:是乙個陣列:下標是:頁號;元素是:頁幀。
# 將邏輯位址翻譯成實體地址的過程
1.將邏輯位址空間2^m 頁面長度2^n,總頁面個數2^(m-n);後n位對應的
2^ n為該頁面偏移量d
2.頁號:邏輯位址的前(m-n)位,通過頁號查詢頁表,找到該頁面
對應的頁幀f。
3.實體地址= 頁幀值*頁面大小+頁面偏移量 realadd = f*2^(2^n) + d;
2.頁式記憶體管理中os所起的作用、負責的是什麼
* os負責監控所有的空閒頁幀
若程序需要n個邏輯頁面,os分配n個空閒頁幀給程序,使得程序
可以將資料和**裝進記憶體
* os分配頁表所需要的物理空間,布置好頁表定義對映函式;
注意:頁式分配存在內部碎片
3.如何實現頁表?
* 頁表必須常駐記憶體(暫存器大小有限)陣列實現
* 頁表的基位址暫存器--必須指向頁表的首位址
* 頁表的長度暫存器表示頁面佔的記憶體空間大小
4.如何提高頁式儲存分配的速度?
* 按照頁表在記憶體中,位址轉化需要訪問兩次記憶體;解決兩次記憶體訪問
tlbs:translation look-aside buffers
借助tlbs快表實現對頁表部分內容的快取;減少一次訪問記憶體(空間區域性)
tlb本質是乙個硬體裝置---是關聯儲存器(該結構支援並行搜尋-速度超快)
tlb支援對位址(p,d)翻譯
命中:p在tlb裡面,直接獲取頁幀
不命中:p不再tlb裡面,在記憶體中的頁表找到頁幀號,並將該頁楨copy進tlb
5.頁式分配--記憶體保護
在頁面的每個頁表項中,為每個頁設定乙個包含位代表--有效、保護
有效:表示該頁面在程序的邏輯位址範圍,因此是合法頁面可以訪問
無效:表示該頁面在程序的邏輯位址範圍外,不可以進行訪問
保護位:操作的型別限制;唯讀等。
6.共享頁面
共享**:唯讀的**(可重入)只需要儲存乙份,供若干個程序共享
對於所有程序來說共享的**必須位於邏輯位址相同的位置
程序自有**資料:程序各自擁有乙份,為自有的**資料分配的頁面
可以分布在邏輯位址空間的任意位置
7.對於頁表過大的處理
# 採用多級頁表
# 採用反向頁表
作業系統 儲存管理(2)
為了解決上述的問題,主要是解決記憶體不夠的問題,現代作業系統採用了虛擬記憶體的方式。基於區域性性原理,在程式裝入階段,可以將程式的一部分裝入記憶體,其餘部分留在外存,就可以讓程式啟動起來了。在程式執行過程中,當訪問的資訊不在記憶體時,由作業系統將所需要的部分調入記憶體,然後繼續執行程式。另一方面,作...
作業系統 儲存器管理(2)
1.程序的換入與換出 由於核心執行某些操作而發現記憶體不足時,便呼叫 或喚醒 對換程序,主要任務便是實現程序的換入換出。1 程序的換出指 對換程序在實現程序換出時,將記憶體中的某些程序調出至對換區以便騰出記憶體空間。步驟 選擇被換出的程序。選擇優先順序最低的處於阻塞或睡眠狀態的程序,考慮程序在記憶體...
作業系統筆記 儲存管理(2)
位址重定位 快表兩級頁表 分段儲存管理 位址變換 資訊共享 分段與分頁比較 段頁式儲存管理 目的 減少分割槽式分配的內外零頭浪費的問題。思想 將目標程式分為若干的頁 頁面 這裡的頁是對於邏輯位址而言的線性位址。記憶體也要劃分為若干的頁框,頁框是對具體的實體地址進行的劃分,頁 頁面 與頁框的大小相同,...