請求分頁系統中頁面分配策略與頁面置換策略的關係
回顧幾種分配策略:
- 固定分區分配
- 動態分區分配
- 夥伴系統
- 可重定位分區分配
頁面置換策略:
- 全局置換
- 局部置換
其中,關於分區分配策略已經很熟悉了,需要特別說明的是頁面置換策略。這是我們在課本上不太強調的。
局部置換隻置換本進程內的物理頁面。一個進程佔用的物理頁面總數是限定的,當需要置換時,即總數已經用完,新進來一個頁面,本進程就需要出去一個老的頁面。所謂,朋友圈就那麼大,有人進來自然需要有人出去。但是需要注意的是,如果分配給你的總數還沒用完,自然是不用置換的,那是最初的紅利時期,競爭還不激烈,先到先得。
全局置換指的是進程缺頁時,可能置換的是內存中所有可換出的物理頁面。即要換進的是A進程的頁面,出去的可以是B進程的頁面,因此分配給進程的頁面總數是動態變化的。
這兩種總的置換策略下有各自的方法:
局部置換:
- 最優演算法
- 先進先出演算法(有Belady異常)
- Least Recently Used(最近最久未使用演算法)
- 時鐘演算法
- 最不常用演算法(Least Frequently Used)演算法
全局置換:
- 工作集演算法
- 缺頁率演算法
(2015.30) 請求分頁系統中,頁面分配策略和頁面置換策略不能組合使用的是:C
–
–
C_
A. 可變分配,全局置換
B. 可變分配,局部置換
C. 固定分配,全局置換
D. 固定分配,局部置換
固定分配:將內存用戶空間劃分為多個固定大小的區域,在每個分區中只裝入一個作業。
劃分分區的方法有兩種:
- 分區大小相等
- 分區大小不等
內存分配方法:按照分區大小建立分區使用表。記錄每個分區的起始地址,大小和狀態。
因此,固定分配不可能實現跨越進程的頁面分配,個人自掃門前雪類型。
動態分區分配:根據進程的實際需要,動態地為之分配內存空間。
這句話不可以簡單跳過,根據的是進程的需要,進程是動態的,是一次靜態程序的執行過程。
為了實現這個,需要建立空閑分區表和空閑分區鏈。空閑分區表自然也是記錄分區區號,分區起始地址和大小等。分區可以是離散的,因此需要鏈表來維護分區之間的關係。
分配內存:根據某種分配演算法(首次適應,循環首次適應,最佳適應,最壞適應,快速適應等),從空閑分區鏈中找到需要的分區,根據一個算式:
m.size?u.size≤size
m.size?u.size≤size,其中m.size是每個空閑分區的大小,u.size是請求的分區大小,size是規定的不可再切割的剩餘分區的大小。即,如果分配完以後,剩餘部分小於size這條線了,那麼就把整個分區給你,否則,你只能拿到你所需要的。也即是超過一定量的交易額是大客戶,待遇要好於小客戶。
從這個過程中我們可以看到,空閑分區沒有屬於哪個進程的概念,即大家是吃大鍋飯的。則在實現分頁系統時,可以實現全局分配。局部分配是基礎配置,自然不必多說。
因此,C項是無法組合在一起使用的。
※dubbo同名方法的問題及思考
※程序員,為何總是那麼的低調
TAG:程序員小新人學習 |