亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中pfn是什么意思

發布時間:2022-03-24 12:15:52 來源:億速云 閱讀:793 作者:小新 欄目:建站服務器

這篇文章將為大家詳細講解有關linux中pfn是什么意思,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

在linux中,pfn全稱“page frame number”,是物理內存區域編號。“page frame”是針對物理內存而言的,把物理內存分成一個個的page size的區域,并且給每一個page編號,而這個編號就是PFN。

本教程操作環境:linux5.9.8系統、Dell G3電腦。

1、什么是page frame?

操作系統最重要的作用之一就是管理計算機系統中的各種資源,做為最重要的資源:內存,我們必須管理起來。在linux操作系統中,物理內存是按照page size來管理的,具體page size是多少是和硬件以及linux系統配置相關的,4k是最經典的設定。因此,對于物理內存,我們將其分成一個個按page size排列的page,每一個物理內存中的page size的內存區域我們稱之page frame。我們針對每一個物理的page frame建立一個struct page的數據結構來跟蹤每一個物理頁面的使用情況:是用于內核的正文段?還是用于進程的頁表?是用于各種file cache還是處于free狀態……

每一個page frame有一個一一對應的page數據結構,系統中定義了page_to_pfn和pfn_to_page的宏用來在page frame number和page數據結構之間進行轉換,具體如何轉換是和memory modle相關,我們會在第三章詳細描述linux kernel中的3種內存模型。

2、什么是PFN?

對于一個計算機系統,其整個物理地址空間應該是從0開始,到實際系統能支持的最大物理空間為止的一段地址空間。在ARM系統中,假設物理地址是32個bit,那么其物理地址空間就是4G,在ARM64系統中,如果支持的物理地址bit數目是48個,那么其物理地址空間就是256T。當然,實際上這么大的物理地址空間并不是都用于內存,有些也屬于I/O空間(當然,有些cpu arch有自己獨立的io address space)。因此,內存所占據的物理地址空間應該是一個有限的區間,不可能覆蓋整個物理地址空間。不過,現在由于內存越來越大,對于32位系統,4G的物理地址空間已經無法滿足內存的需求,因此會有high memory這個概念,后續會詳細描述。

PFN是page frame number的縮寫,所謂page frame,就是針對物理內存而言的,把物理內存分成一個個的page size的區域,并且給每一個page 編號,這個編號就是PFN。假設物理內存從0地址開始,那么PFN等于0的那個頁幀就是0地址(物理地址)開始的那個page。假設物理內存從x地址開始,那么第一個頁幀號碼就是(x>>PAGE_SHIFT)。

PFN的取值范圍是 0----(memory size >> 12)。

但是由于物理內存映射的關系,物理內存的0地址對應到到系統上并不是物理地址的0。 例如:s3c2440上,內存的地址是從0x30000000開始的。當連接ram后,ram的0地址在s3c2440看來,就是0x30000000.  所以在系統中 pfn的值 應該等于 (physical address - memory base address) >> 12 。

但是linux中,用的又都是虛擬地址,所以要先將 virtual address轉換成 physical address 才行。 所以在linux中有個宏定義 將內核線性空間的虛擬地址和pfn轉換:

#define virt_to_pfn(kaddr)	(__pa(kaddr) >> PAGE_SHIFT)   //__pa() 將虛擬地址轉化成物理地址  
#define pfn_to_virt(pfn)	__va((pfn) << PAGE_SHIFT)

所以pfn在linux內核中應該對應的是頁幀號。可以通過簡單的轉換找到對應的物理地址。

每個物理上的頁,內核給與之分配了一個描述符來描述: page。 pfn可以和page進行轉換:

#define page_to_pfn __page_to_pfn
#define pfn_to_page __pfn_to_page

所有的page結構存放在mem_map中,方便進行管理。

由于linux是將物理內存分成4K大小的頁來進行管理的。所以在軟件上也會設置MMU進行匹配對應。后面敘述。

linux將4G的虛擬空間分成了用戶空間和內核空間。用戶空間是0---3G,內核空間是3G---4G。 從內核空間可以訪問到用戶空間,但是從用戶空間必須通過系統調用來能訪問內核空間。

關于“linux中pfn是什么意思”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秦皇岛市| 晋江市| 瑞安市| 鹿邑县| 松原市| 桑植县| 思南县| 始兴县| 万盛区| 珠海市| 宝清县| 英吉沙县| 庆城县| 普宁市| 霍邱县| 高雄县| 永德县| 朝阳市| 通道| 额尔古纳市| 义马市| 中超| 密山市| 昆明市| 和田市| 洪洞县| 通化县| 宜丰县| 柳州市| 临湘市| 喜德县| 五指山市| 哈密市| 大关县| 罗甸县| 广元市| 增城市| 招远市| 乌拉特中旗| 凤阳县| 棋牌|