一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MMU虛擬地址空間布局

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-11-26 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當然虛擬地址空間劃分不只是如此。因為目前應用程序沒有那么大的內(nèi)存需求,所以ARM64處理器不支持完全的64位虛擬地址,實際支持情況如下。

(1)-虛擬地址位寬

虛擬地址的最大寬度是48位 內(nèi)核虛擬地址在64位地址空間的頂部,高16位是全1,范圍是[0xFFFF 0000 0000 0000,0xFFFF FFFF FFFF FFFF];

用戶虛擬地址在64位地址空間的底部,高16位是全0,范圍是[0x00000000 0000 0000,0x0000 FFFF FFFF FFFF];

高16位是全1或全0的地址稱為規(guī)范的地址,兩者之間是不規(guī)范的地址,不允許使用。

如果處理器實現(xiàn)了ARMv8.2標準的大虛擬地址(Large Virtual Address,LVA)支持,并且頁長度是64KB,那么虛擬地址的最大寬度是52位。這個也就是大頁表,可以提升內(nèi)存與訪問速度。

可以為虛擬地址配置比最大寬度小的寬度,并且可以為內(nèi)核虛擬地址和用戶虛擬地址配置不同的寬度。

轉(zhuǎn)換控制寄存器(Translation Control Register)TCR_EL1的字段T0SZ定義了必須是全0的最高位的數(shù)量,字段T1SZ定義了必須是全1的最高位的數(shù)量,用戶虛擬地址的寬度是(64-TCR_EL1.T0SZ),內(nèi)核虛擬地址的寬度是(64-TCR_EL1.T1SZ)。(全是0是代表的用戶,全是1代表的是內(nèi)核。)

(2)編譯ARM64架構(gòu)的Linux內(nèi)核時,可以選擇虛擬地址寬度

? (1)如果選擇頁長度4KB,默認的虛擬地址寬度是39位。

? (2)如果選擇頁長度16KB,默認的虛擬地址寬度是47位。

? (3)如果選擇頁長度64KB,默認的虛擬地址寬度是42位。

? (4)可以選擇48位虛擬地址。

在ARM64架構(gòu)的Linux內(nèi)核中,內(nèi)核虛擬地址和用戶虛擬地址的寬度相同。

? 所有進程共享內(nèi)核虛擬地址空間,

? 每個進程有獨立的用戶虛擬地址空間,

? 同一個線程組的用戶線程共享用戶虛擬地址空間,內(nèi)核線程沒有用戶虛擬地址空間。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19893

    瀏覽量

    235181
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9352

    瀏覽量

    377524
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3124

    瀏覽量

    75268
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18750
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    請問ARM的虛擬地址映射有“擴大”內(nèi)存范圍的作用嗎

    我最開始看關(guān)于MMU的知識的時候,是在http://blog.chinaunix.net/uid-20698426-id-136197.html里面說了因為物理內(nèi)存不夠,裝不下程序??梢杂?b class='flag-5'>虛擬地址
    發(fā)表于 01-19 23:02

    請問ARM虛擬地址 物理地址 加載地址 運行地址的聯(lián)系是什么?

    簡單的理解:ARM的加載地址即程序在Flash的存儲位置。運行地址即內(nèi)存中運行時的位置。虛擬地址和物理地址MMU中映射,那么這四者之間的聯(lián)
    發(fā)表于 04-25 03:16

    【HarmonyOS】虛擬地址<->物理地址是如何映射的

    MMU的本質(zhì)虛擬地址(VA): 就是線性地址, 鴻蒙內(nèi)存部分全是VA的身影, 是由編譯器和鏈接器在定位程序時分配的,每個應用程序都使用相同的虛擬內(nèi)存地址
    發(fā)表于 11-03 16:20

    鴻蒙內(nèi)核源碼分析(內(nèi)存映射篇):虛擬地址與物理地址之間是如何映射的

    MMU的本質(zhì)虛擬地址(VA): 就是線性地址, 鴻蒙內(nèi)存部分全是VA的身影, 是由編譯器和鏈接器在定位程序時分配的,每個應用程序都使用相同的虛擬內(nèi)存地址
    發(fā)表于 11-19 10:52

    物理地址虛擬地址的轉(zhuǎn)換步驟

    上是不行的,在Linux上,如果想要操作硬件,需要先把物理地址轉(zhuǎn)換成虛擬地址,因為Linux使能了MMU,所以我們在Linux上不能直接操作物理地址。
    發(fā)表于 12-24 07:42

    探討一下ARM中的MMU虛擬地址

    提到MMU就要提到一個概念,虛擬地址(Virtual Address)。前面的文章中反復提到過虛擬地址的概念。使用虛擬地址的好處是它允許管理軟件,例如操作系統(tǒng)(OS)來控制呈現(xiàn)給軟件的
    發(fā)表于 04-08 17:17

    linux kernel實現(xiàn)物理地址虛擬地址空間的切換方法

    1、arm linux 臨時頁表的建立linux kernel的主要特點之一就是運行在虛擬地址空間上,但是怎么才能實現(xiàn)物理地址虛擬地址空間
    發(fā)表于 05-13 10:21

    鴻蒙內(nèi)核中虛擬地址與物理地址之間是如何映射的

    內(nèi)存空間上。CPU只知道虛擬地址,向虛擬地址要數(shù)據(jù),但在其保護模式下很悲催地址信號在路上被MMU攔截了,
    發(fā)表于 11-19 14:45 ?9次下載
    鴻蒙內(nèi)核中<b class='flag-5'>虛擬地址</b>與物理<b class='flag-5'>地址</b>之間是如何映射的

    內(nèi)核邏輯地址和內(nèi)核虛擬地址到底有什么區(qū)別

    了( 這跟用戶態(tài)的0-3G的用戶虛擬地址相對應) ,在3G-4G這段范圍內(nèi),有段子集3G -3G+main_memory_size,這段主存大小的虛擬地址空間,由于在MMU頁表映射時是
    發(fā)表于 03-11 10:10 ?6次下載

    虛擬地址和邏輯地址的區(qū)別是什么?

    先解釋下一個困擾了我很久的問題:虛擬地址(vitural address)和邏輯地址(logical address)的區(qū)別。 大部分操作系統(tǒng)的書籍要么寫的是虛擬地址,要么寫的是邏輯地址
    的頭像 發(fā)表于 06-17 14:08 ?2.5w次閱讀
    <b class='flag-5'>虛擬地址</b>和邏輯<b class='flag-5'>地址</b>的區(qū)別是什么?

    虛擬地址物理地址等眾多地址MMU相關(guān)知識

    虛擬地址物理地址等眾多地址MMU相關(guān)知識先聊聊存儲器STM32單片機存儲器關(guān)于編譯器生成的文件數(shù)據(jù)在存儲器上的存儲結(jié)構(gòu)物理地址、
    發(fā)表于 12-08 12:36 ?12次下載
    <b class='flag-5'>虛擬地址</b>物理<b class='flag-5'>地址</b>等眾多<b class='flag-5'>地址</b>及<b class='flag-5'>MMU</b>相關(guān)知識

    為什么要用MMU?為什么要用虛擬地址

    既然MMU開啟后,硬件會自動的將虛擬地址轉(zhuǎn)換成物理地址,那么還需要我們軟件做什么事情呢?即創(chuàng)建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?
    的頭像 發(fā)表于 04-26 14:37 ?5454次閱讀

    Linux系統(tǒng)為什么需要引入虛擬地址

    ,這 4GB 的內(nèi)存空間按照 3:1 的比例進行分配,其中用戶進程享有 3G 的空間,而內(nèi)核獨自享有剩下的1G 空間,如下所示: 虛擬地址會通過硬件
    的頭像 發(fā)表于 10-07 17:28 ?1287次閱讀
    Linux系統(tǒng)為什么需要引入<b class='flag-5'>虛擬地址</b>

    Linux虛擬地址空間和物理地址空間的關(guān)系

    過程,這其實也是MMU的工作原理。 我們知道,在Linux中,每個進程都有自己獨立的地址空間,且互不干擾。每個進程的地址空間又分為用戶
    的頭像 發(fā)表于 10-08 11:40 ?1708次閱讀
    Linux<b class='flag-5'>虛擬地址</b><b class='flag-5'>空間</b>和物理<b class='flag-5'>地址</b><b class='flag-5'>空間</b>的關(guān)系

    Linux虛擬地址到物理地址轉(zhuǎn)換過程

    虛擬地址到物理地址轉(zhuǎn)換過程 虛擬地址和物理地址都被劃分了兩部分: 虛擬地址虛擬頁面號VPN和
    的頭像 發(fā)表于 10-08 11:45 ?2572次閱讀
    Linux<b class='flag-5'>虛擬地址</b>到物理<b class='flag-5'>地址</b>轉(zhuǎn)換過程