999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Windows中物理內存的管理

2014-12-31 00:00:00楊陽
消費電子·下半月 2014年8期

摘 要:Windows內核中的物理頁面管理是內存管理的一個很重要的部分,本文首先介紹了PTE和工作集與物理頁面管理相關的部分,然后詳細介紹了物理頁面的各種狀態及轉移,并在此基礎上說明了Windows內核是如何使用PFN對物理頁面進行管理的。

關鍵詞:工作集;PTE;物理內存管理

中圖分類號:TP311.52 文獻標識碼:A 文章編號:1674-7712 (2014) 16-0000-01

我們知道,對于內存的訪問,早晚要涉及到對物理內存的操作。如果撇開虛擬內存,MMU等復雜的保護模式管理機制,一個內存,擺在你的面前,如何對其進行管理呢?首先需要明確一點的是,這里所指的物理頁面都是在物理內存中的,因為物理頁面管理部分就是要管理物理頁面的。

一、PTE和工作集

說起工作集,要從操作系統的換頁機制說起,所謂的換頁,指的是在操作系統的內存管理中,當物理內存緊張時,將某些不常使用的物理頁面轉存到硬盤的頁面文件中,從而釋放這些物理內存,當需要時,比如該頁面中的內容被引用時,再將該頁面的內容重新導入物理內存,并更改PTE中的內容,映射該頁面。因此,一個進程地址空間使用的地址,其背后對應的物理內存可以分為兩種:在物理內存中的和不在物理內存中的。我們將在物理內存中的這部分屬于某個進程的頁面稱為進程工作集,工作集分為系統工作集,會話工作集和進程工作集,系統工作集指的是系統(System)進程地址空間里使用的物理頁面,其包括系統緩存、可換頁的操作系統代碼、以及可換頁的驅動程序代碼,會話工作集指的是一個會話所包含的代碼和數據區,而進程工作集則專指某個進程的工作集。工作集的任務就是管理需要換入換出的頁面,記錄它們的情況,而那些從進入內存那刻開始就沒有挪動地方的物理頁面,是不需要浪費很多資源去管理的。因此我們可以這樣認為,由于換頁機制的存在,頁面的換入換出成為了常態(對于可換頁內存池),那么如何管理這些在內存池中不斷變化的頁面,正是工作集的任務所在。

對于進程工作集管理器,其任務在于管理一個進程空間中在內存中的物理頁面,具體功能可以分為兩個方面。(1)當物理內存緊張時,將一些不常用的內存倒到頁面文件中;(2)當頁面錯誤,系統將頁面文件中對應的內容導入內存后,工作集管理器負責將這些頁面加入到自己的鏈表中,管理這些頁面。

二、物理頁面的狀態和轉移

每個頁面的狀態可以分為:活動狀態、備用狀態、轉移狀態、已修改狀態、已修改但不寫出狀態、空閑狀態、零化狀態、壞狀態。PFN數據庫中的項與物理頁面一一對應。

活動狀態指的是該頁面在某一個工作集中,或者不在一個工作集中(如在非換頁內存池中)但是有一個有效的PTE指向該頁面。當一個頁面退出活動狀態時,會進入備用狀態、已修改狀態或者已修改但不寫出狀態,區別在于這個頁面有沒有被修改過以及修改后是否寫出到外部磁盤中,如果這個頁面沒有被修改過,那么將這個頁面置為備用狀態,此時指向該頁面的PTE被置為無效,如果該頁面修改過并且需要寫入外部磁盤,那么將該頁面置為已修改狀態,當然寫入的時機并不是馬上寫入,而是需要接受修改頁面寫出器或者映射頁面寫出器調度的。還有一種情況是該頁面被修改過,但是需不需要寫入以及何時寫入外部磁盤需要進一步明確,那么將該頁面置為已修改但不寫出狀態,這種情況一個典型的例子如在文件系統中,當使用緩沖方式修改元文件時,需要先完成日志的記錄,再將修改的內容寫入磁盤,換句話說,在完成日志記錄前,需要這個已修改但不寫出狀態。當然已修改狀態、已修改但不寫出狀態頁面對應的PTE也是無效狀態。

物理內存幀PFN:PFN(Page Frame Number)頁幀編號,每一項是24個字節,依據頁面狀態的不同而不同。一個頁面(4K)只需要完成其記錄數據的任務即可,最關鍵的結構在于對這些頁面的管理,這里每個PFN項就對應著一個頁面。PFN數據庫中的內容與物理頁面狀態一一對應。

每種狀態的頁面其對應的PFN中的內容也并不完全相同,當物理頁面處于活動狀態、備用狀態/已修改狀態、空閑狀態/零化狀態、轉移狀態幾種典型狀態下PFN中的內容。其中反顯部分為共有部分,包括PTE地址,標志,類型,引用計數,原始PTE內容,PTE的PFN。其中“PTE地址”字段指明的是指向該物理頁面的PTE的虛擬地址,這樣當我們得到一個物理頁面時,通過“PTE地址”字段可以快速的定位指向該物理頁面的PTE,并且由此PTE可以計算得到該物理頁面映射在進程地址空間中的虛擬地址。“標志”字段用于記錄該物理頁面的一些標識信息,如是否處于讀寫操作中,指向這個頁面的是否是一個原型PTE,以及標識非換頁內存池開始和結束的標識位。“類型”字段說明的是該頁面屬于前一節提到的哪種狀態中。“原始PTE內容”字段記錄了指向該物理頁面的PTE中的原始內容,就是當該物理頁面被分配到對應PTE指向前,該PTE中的內容。這樣做的目的在于當該頁面不在物理內存中時,利用這個字段可以直接填充指向它的PTE,恢復原來的PTE.“PTE的PFN”字段記錄了指向該頁面的PTE所在的頁表頁面的PFN,其意義在于可以快速定位在虛擬地址上與該頁面相鄰的頁面,因為其PTE都在一個頁表頁面中。

備用狀態或已修改狀態頁面特殊的字段是“前向鏈接”和“后向鏈接”兩個指針,因為備用狀態和已修改狀態的頁面分別構成雙向鏈表進行管理,這兩個字段分別用于前向指針和后向指針。

空閑狀態或零化狀態頁面特殊的字段是“前向鏈接”和“顏色鏈PFN號”,第一個字段是因為這兩種狀態的頁面分別構成單向鏈表,該字段用于鏈表鏈接,“顏色鏈PFN號”字段用于物理頁面在CPU高速緩存中的管理。

三、結束語

本文首先對工作集的概念進行了說明,然后介紹了物理頁面的各種狀態及轉移,最后論述了windows是如何利用PFN對物理內存頁面的管理的,其難點在于物理頁面各種狀態的理解,以及PFN結構的設計。

參考文獻:

[1]潘愛明.Windows內核原理與實現[M].北京:電子工業出版社,2013.

[2]譚文,邵堅磊.天書夜讀:從匯編語言到window內核編程[M].北京:電子工業出版社,2008.

作者簡介:楊陽(1976.02-),男,2012年畢業于中國石油大學(北京)計算機科學與技術專業,本科,現就職于中航工業黎明數據中心信息系統管理處,助理工程師,主要從事服務器、數據庫運行于維護,研究方向:Windows內核、FLASH腳本開發。

主站蜘蛛池模板: 亚洲人视频在线观看| 久一在线视频| 精品亚洲欧美中文字幕在线看| 一级毛片免费不卡在线 | 国产精品三级av及在线观看| 国产精品一区二区无码免费看片| 啪啪啪亚洲无码| 白丝美女办公室高潮喷水视频| 国产一级毛片网站| 伊人激情综合网| 怡春院欧美一区二区三区免费| 国产一级裸网站| 国产成年女人特黄特色大片免费| 青青网在线国产| 欧美α片免费观看| 波多野结衣一二三| 波多野结衣第一页| 国产人成乱码视频免费观看| 国产精品页| 18黑白丝水手服自慰喷水网站| 欧美激情视频一区| 天天色综网| 成人午夜福利视频| 无码aⅴ精品一区二区三区| 亚洲色图综合在线| vvvv98国产成人综合青青| 欧美日韩在线亚洲国产人| 中文字幕亚洲乱码熟女1区2区| 一本大道香蕉久中文在线播放| 91娇喘视频| 久久99蜜桃精品久久久久小说| 亚洲黄色网站视频| 精品久久人人爽人人玩人人妻| 91亚洲视频下载| 日本欧美一二三区色视频| 日本成人不卡视频| 97久久精品人人做人人爽| 国产欧美日韩免费| 久久综合结合久久狠狠狠97色| yjizz国产在线视频网| 亚洲h视频在线| 日韩无码视频网站| 狠狠操夜夜爽| 亚洲欧美日韩中文字幕在线| 亚洲码在线中文在线观看| 久久久久免费精品国产| 国产人成午夜免费看| 中文字幕精品一区二区三区视频| 99久久精品免费看国产免费软件| 成人免费视频一区| 熟妇丰满人妻av无码区| 亚洲精品第一页不卡| 最新精品久久精品| 欧美影院久久| 亚洲一区无码在线| 99热这里只有免费国产精品| 91视频国产高清| 日本黄网在线观看| 青青久久91| 精品视频一区二区三区在线播| 天天综合亚洲| 久久久久久午夜精品| 国产欧美日韩18| 国产AV无码专区亚洲A∨毛片| 国产精品任我爽爆在线播放6080 | 亚洲欧美一区二区三区图片| 黄色网在线免费观看| 幺女国产一级毛片| 国产福利免费在线观看| 精品剧情v国产在线观看| 国产香蕉在线| 亚洲欧美国产高清va在线播放| 91蜜芽尤物福利在线观看| 国产美女无遮挡免费视频| 色爽网免费视频| 久久久精品无码一区二区三区| 女同久久精品国产99国| 人禽伦免费交视频网页播放| 欧美成人精品一区二区| 香蕉99国内自产自拍视频| 国产精品亚洲一区二区三区z| 五月天久久综合|