程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> 頁式內存管理系統缺頁處理的3個策略

頁式內存管理系統缺頁處理的3個策略

編輯:MYSQL入門知識
 

FreeBSD采用頁式內存管理方式,缺頁處理主要有3個機制:
1.取頁策略

2.放置策略

3.置換策略

虛擬頁面地址與物理地址轉換功能由硬件的MMU負責,MMU還要負責頁面授權,1個進程不能訪問另外1個進程的頁面地址。

缺頁處理需要確定以下三種策略:

fetch policy,讀取策略,FreeBSD為了減少I/O操作次數,希望一次讀入盡量多的頁面,采用prepaging策略,一般是需要頁面前後各8個頁面內可以一次讀入的部分。

placement policy,放置策略,FreeBSD為了充分利用Cache功能,采用Color算法來確定讀入頁面放置的物理位置。

replacement policy,替換策略,FreeBSD維持多個鏈表管理和釋放物理空間,以便重用。

進程對內存的操作具有局部集中性(locality of reference)。當進程在某個子流程或者循環中時,很可能固定的引用一段內存空間,稱作working set,工作集。進程可能周期性的改變工作集。

swap在內存短缺時執行整個進程的換入換出。不過現在與分頁相結合,直到大的短缺時,才swap.

硬件支持:
要避免一個進程修改別的進程,就要禁止進程修改它自己的內存地址映射。

當進程換出時硬件要支持指令執行狀態信息的保存。

髒頁標志
FreeBSD系統的內存管理基於部分面向對象思想:將文件,匿名內存段等所有數據源歸結為object,定義對這些數據源的標准操作接口(pager, pagerops),並根據不同的數據源采用不同的操作實現(如swappagerops,vnodepagerops)。物理內存只是用來作為這些對象最近所使用的頁面的緩存。

虛擬內存到物理內存部分的實際映射交給pmap模塊完成

FreeBSD內存管理相關數據結構:

vmspace     表示內核或一個進程的地址空間,包含硬件獨立的內容,也包含硬件相關的內容。

Vm_map  包含硬件無關的虛擬地址空間的描述。

Vm_map_entry    使用相同存儲介質,並且保護和繼承方式也相同的虛擬連續的地址段

Vm_page     代表虛擬內存系統中內存頁管理的數據結構。

vmspace 用於描述一個進程的地址空間,包括機器相關的與機器無關的結構

vm_map 用於描述機器無關的虛擬地址空間的高級抽象數據

pmap 機器相關虛擬地址與物理地址映射結構

vm_map_entry 用於描述一個虛擬的連續地址空間,它們擁有共同的保護屬性與繼承屬性,並且使用相同的備份存儲對象

vm_object 表示一個地址范圍的數據源

shadow_object 表示已經修改過的數據,是一種object的特殊形態

vm_page 這是最底層的數據結構,表示虛擬內存所使用的物理內存

這些數據結構中的重要字段

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved