ARM處理器 的linux分頁機制

2021-06-21 23:00:32 字數 945 閱讀 2367

arm mmu只支援兩級頁表位址轉換,也就是採用**分頁對映,能夠滿足32bitcpu的儲存管理需求

arm支援的頁大小有幾種 - 1m, 64k, 4k, 1k。在linux kernel中,arm採用了4k大小的頁,4k大小的頁決定了虛擬位址的低12bit留作偏移位址。從上圖可以看出,頁全域性目錄索引有效位數是12bit,二級索引有效位數是8bit,頁內偏移量為12bit。

根據arm的硬體分頁機制,我們得出第一級全域性頁目錄有4096項,第二級為256項,這樣第二級可以有很多位可以被硬體使用。

在arm linux實現上,針對arm的硬體分頁機制做了些微小的調整。第一級目錄保留了2048項,每項占用8 bytes(換句話說,是兩個硬體指標指向二級頁表);第二級則把兩個硬體pte表連續放在一起,在這兩個pte表後面則儲存相應的linux狀態資訊,因此二級表項實際上有512項(每個表256項,兩個則為512項)。這樣每個邏輯pte表剛好占用乙個page。

arm linux頁表layout如下:

在arch/arm/include/asm/pgtable.h中,可以看到ptrs_per_pte和ptrs_per_pte的定義

[cpp]view plain

copy

#define ptrs_per_pte        512

#define ptrs_per_pmd        1

#define ptrs_per_pgd        2048

由於pgd有2048項,每項占用8個位元組,總計需要4*4k,也就是說arm linux的pgd實際上占用了四個連續物理頁框。

arm處理器模式和arm處理器狀態的區別

arm處理器狀態 arm微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換 第一種為arm狀態,此時處理器執行32位的字對齊的arm指令 第二種為thumb狀態,此時處理器執行16位的 半字對齊的thumb指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器工作狀態的轉變...

ARM處理器模式

cpsr暫存器 arm v4的cpsr暫存器 和儲存它的spsr暫存器 中的位分配如下圖所示。處理器模式決定了哪些暫存器是活動的以及對cpsr訪問權。處理器模式要麼是特權模式,要麼是非特權模式。特權模式允許對cpsr的完全讀 寫訪問 與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條...

ARM處理器型號

arm公司擁有眾多cpu指令集,cpu架構,cpu系列.本文旨在介紹arm公司的cpu產品線.下圖展示了arm公司cpu的產品線 首先有必要了解一下arm公司的命名規則 arm的命名規則,大致分成三類 1.基於arm architecture版本的 指令集架構 命名規則 2.基於arm archit...