Linux 記憶體與I O訪問

2021-08-10 14:03:28 字數 879 閱讀 4724

linux 記憶體分類:

由於複雜的記憶體管理功能,記憶體的概念也相對複雜,有常規記憶體,高階記憶體,虛擬位址,邏輯位址,匯流排位址,實體地址,i/o記憶體,裝置記憶體,預留記憶體等。

高階處理器一般會提供mmu(記憶體管理單元),mmu具有虛擬位址和實體地址轉換,記憶體訪問許可權保護等功能,為了理解mmu操作原理,需要明白以下幾點概念:

tlb:轉換旁路快取,mmu的核心部件,快取少量虛擬位址和實體地址的對映,是轉換表的cache。

ttw:轉換表漫遊,當tlb沒有快取相應位址對映時,需要通過對記憶體轉換表的訪問獲取對映關係,然後存入tlb中。

arm訪問記憶體過程:

當arm處理器訪問儲存器時,mmu首先查詢tlb的虛擬位址表(如果arm支援分來的資料tlb(dtlb)和指令tlb(itlb),則除了取指令使用itlb外,其他都使用dtlb),若tlb沒有虛擬位址入口,則轉換表遍歷硬體並從存放在儲存器的轉換表中獲取位址訪問資訊和訪問許可權(ttw),同時將資訊放入tlb(沒有使用的入口或者替換乙個存在的入口),之後,在tlb條目的控制資訊的控制下,當訪問許可權允許時,對真實實體地址的訪問將在cache和記憶體中發生。

linux軟體層的分析:

在2.6.11前,linux核心硬體無關層提供了**頁表pgd、pmd和pme,從2.6.11開始,為配合64系統,使用四級頁表,即pgd,pud,pmd,pme(注意這僅僅是軟體的一種抽象,實際硬體的頁表數可能少於4)。

linux記憶體管理:

對於包含mmu的處理器,linux提供了複雜的記憶體管理系統,使得程序所能訪問的空間達到4gb。

在linux系統中,0~3g通常為使用者空間,3~4g為核心空間。

1g核心位址空間被劃分為物理記憶體對映區,虛擬記憶體分配區,高階頁面對映區,專用頁面對映區和系統保留對映區這幾個區域。

Linux驅動技術 二 訪問I O記憶體

arm是對記憶體空間和io空間統一編址的,所以,通過讀寫sfr來控制硬體也就變成了通過讀寫相應的sfr位址來控制硬體。這部分位址也被稱為i o記憶體。x86中對i o位址和記憶體位址是分開編址的,這樣的io位址被稱為i o埠。本文只討論io記憶體的訪問。io記憶體訪問流程 我們知道,為了管理最重要的...

I O埠與I O記憶體

埠的概念 裝置通過系統匯流排上的介面與cpu相連,介面電路中含有多種暫存器,cpu向裝置讀寫資料實際上是向介面上的暫存器讀寫資料,這些暫存器稱為i o埠。乙個介面通常包含控制埠,資料埠,狀態埠。對於x86平台,實體地址就是匯流排位址。linux中,程序中的4gb虛擬記憶體分為使用者空間和核心空間,使...

裝置I O 埠和I O 記憶體的訪問

幾乎每一種外設都是通過讀寫裝置上的暫存器來進行的,通常包括控制暫存器 狀態暫存器和資料暫存器三大類,外設的暫存器通常被連續地編址。根據cpu體系結構的不同,cpu對io埠的編址方式有兩種 典型地,如x86處理器為外設專門實現了乙個單獨的位址空間,稱為 i o位址空間 或者 i o埠空間 cpu通過專...