如何將虛擬位址轉化成pfn,即頁幀號

2021-05-23 22:05:14 字數 540 閱讀 5005

如何將虛擬位址轉化成pfn,即頁幀號(就是mem_map陣列下標,就是所有的物理頁描述結構的陣列,通過這個陣列就可以找到struct page)

核心中虛擬位址,只是在實體地址上加了個page_offset,這個東西在x86上是3g,只要拿核心中的虛擬位址直接減3g就行

使用者程式中的虛擬位址,靜態的是編譯時就定好的,動態的(如malloc),是通過核心的頁式記憶體管理在vma中定的,需要找到程序的task_struct中的頁表然後一級級的翻譯得到實體地址。

實際編譯時定的位址叫做邏輯位址,這個邏輯位址是需要段式管理來翻譯的,即段基址加段內偏移,由於linux中的這個段基址就是0,所以邏輯位址就直接對應了虛擬位址了。

這樣得到實體地址以後,首先將十六進製制的低三位與成0,這樣做是得到頁的實體地址,這裡指4k頁的情況,然後通過頁的實體地址減去mem_map的第乙個元素的位址就得到了此頁在mem_map陣列中的下標(此處注意指標相減不是指標表示的位址相減,而是兩者之間指標所表示元素型別的個數),此下標即為pfn,知道了在陣列中的下標就可以得到struct page結構體了,就可以知道page的所有情況了。

C 中如何將string型別轉化成char型別

一 string轉char 主要有三種方法可以將str轉換為char 型別,分別是 data c str copy 1.data 方法,如 string str hello const char p str.data 加const 或者用char p char str.data 的形式 同時有一點需...

如何將乙個url 位址 轉化成json格式的物件

不廢話,直奔主題 有乙個url file android asset hrfile html review reveiw cc.html?id 1111 sessionid ssssssssssssssss domain 需要將後面帶引數的東西獲取到,可以採用以下的辦法 獲取 引數 param va...

功能區域分析 如何將業務架構轉化成為IT應用

功能區域分析可以從元件業務模型開始,並可將確定的 cbm 能力作為起點。業務建模的工作由正在研究的業務領域確定範圍,所以功能區域分析可從這組初始業務領域中進行選擇,然後進一步將它們分解為子領域,並最終分解成功能區域 來自初始模型的 cbm 元件應在此處提供良好的指導資訊。功能區域分析以建立摘要描述開...