在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

ARMv7-A處理器模式與特權(quán)等級

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-10-21 16:19 ? 次閱讀

對于現(xiàn)代操作系統(tǒng),通常情況下用戶的應(yīng)用程序運(yùn)行在用戶態(tài),操作系統(tǒng)內(nèi)核運(yùn)行在內(nèi)核態(tài)。用戶態(tài)的應(yīng)用對于系統(tǒng)硬件資源的訪問是受限的,內(nèi)核態(tài)則能夠訪問所有的系統(tǒng)硬件資源。操作系統(tǒng)的用戶態(tài)和內(nèi)核態(tài)是根據(jù)處理器的特權(quán)等級和運(yùn)行模式進(jìn)行硬件隔離的,這也極大的提高了操作系統(tǒng)的安全性。

安全擴(kuò)展和虛擬化擴(kuò)展

ARMv7-A體系結(jié)構(gòu)支持安全擴(kuò)展和虛擬化擴(kuò)展。當(dāng)處理器實現(xiàn)了安全擴(kuò)展之后,處理器就存在普通世界(Normal world)和安全世界(Secure world)這兩個世界,這在硬件層面上就可以將敏感數(shù)據(jù)和要求在安全環(huán)境運(yùn)行的應(yīng)用和普通應(yīng)用完全隔離,如下圖所示:

圖片

Snipaste_2023-08-31_19-16-22

當(dāng)處理器實現(xiàn)了虛擬化擴(kuò)展之后,處理器就新增了一個hypervisor mode (Hyp),并且也新增了一個特權(quán)級模式PL2。支持虛擬化擴(kuò)展的處理器示意圖如下所示:

圖片

Snipaste_2023-08-31_19-28-22

虛擬化擴(kuò)展允許在Normal world運(yùn)行多個操作系統(tǒng),Hypervisor只能運(yùn)行在Normal world。Secure world可以運(yùn)行Trusted OS和Trusted services。

特權(quán)等級

處理器的模式,特權(quán)等級和安全狀態(tài)的關(guān)系如下圖所示:

圖片

Snipaste_2023-08-31_19-48-19

本文僅討論非安全狀態(tài)。在非安全狀態(tài)下,存在3種特權(quán)等級(Privilege level):PL0、PL1和PL2,描述如下:

PL0:用戶模式(User mode)運(yùn)行的應(yīng)用程序處于PL0特權(quán)等級。運(yùn)行在用戶模式的程序被稱為非特權(quán)程序。非特權(quán)程序?qū)τ谙到y(tǒng)資源的訪問是受限的,對應(yīng)Linux的用戶態(tài)。

PL1:除了用戶模式和Hyp模式外,其他模式下的程序執(zhí)行都處于PL1特權(quán)等級。PL1模式是指除了用戶模式和Hyp模式之外的其他模式。操作系統(tǒng)運(yùn)行在PL1特權(quán)級。

PL2:如果實現(xiàn)了虛擬化擴(kuò)展,Hyp模式運(yùn)行的系統(tǒng)管理程序處于PL2特權(quán)等級。系統(tǒng)管理程序?qū)⒖刂撇⒂枚鄠€操作系統(tǒng)在同一個處理器系統(tǒng)上共存和執(zhí)行。

處理器模式

ARMv7-A體系結(jié)構(gòu)提供了9種處理器模式,如下圖所示:

圖片

Snipaste_2023-09-01_20-59-03

從上圖可以知道ARMv7-A提供的處理器模式有User、FIQ、IRQ、Supervisor(SVC)、Monitor(MON)、Abort(ABT)、Hyp、Undefined(UND)、System(SYS)模式,各個處理器模式的描述如下:

User:用戶模式,用戶程序運(yùn)行在User模式下,擁有受限的系統(tǒng)資源訪問權(quán)限。

FIQ:快中斷異常處理模式,發(fā)生FIQ中斷時的處理器模式,相對于中斷而言,快中斷擁有更高的響應(yīng)等級和更低的延遲。

IRQ:中斷異常處理模式,發(fā)生IRQ中斷時的處理器模式。

Supervisor(SVC):管理員模式,操作系統(tǒng)內(nèi)核通常運(yùn)行在該模式下,在處理器復(fù)位或者應(yīng)用程序調(diào)用svc指令的時候?qū)M(jìn)入到該模式,系統(tǒng)調(diào)用就是通過svc指令完成的。

Abort(ABT):異常終止模式,當(dāng)發(fā)生Data Abort exception或者Prefetch Abort exception異常的時候進(jìn)入這個模式。

Undefined(UND):未定義指令模式,當(dāng)執(zhí)行未定義指令時進(jìn)入這個模式。

System(SYS):系統(tǒng)模式,系統(tǒng)模式和用戶模式共享寄存器視圖,并且目前大多數(shù)系統(tǒng)未使用該模式,利用這個特性我們可以在處理器啟動時通過設(shè)置系統(tǒng)模式的SP寄存器來達(dá)到設(shè)置用戶模式堆棧的目的,要設(shè)置用戶模式的其他寄存器也可以這樣操作。

Monitor(MON):監(jiān)視模式,實現(xiàn)了安全擴(kuò)展的處理器才有該模式,在該模式下執(zhí)行Secure和Non-secure處理器狀態(tài)的切換。

Hyp:實現(xiàn)了虛擬化擴(kuò)展的處理器才有該模式。

User模式處于PL0特權(quán)等級。

FIQ、IRQ、Supervisor(SVC)、Monitor(MON)、Abort(ABT)、Undefined(UND)、System(SYS)這些模式處于PL1特權(quán)等級。

Hyp模式處于PL2特權(quán)等級。

本文不討論支持安全擴(kuò)展和虛擬化擴(kuò)展的場景,因此對于Monitor模式和Hyp模式也不做深入探討。

通常情況下,應(yīng)用程序運(yùn)行在User模式(PL0),運(yùn)行在User模式下的應(yīng)用程序?qū)τ布]有直接訪問權(quán),所有的硬件操作都需要通過系統(tǒng)調(diào)用向內(nèi)核進(jìn)行申請。操作系統(tǒng)內(nèi)核運(yùn)行在管理員模式(PL1),對系統(tǒng)調(diào)用、中斷、異常等系統(tǒng)事件進(jìn)行響應(yīng)、處理并返回,以這種硬件隔離的方式保證了操作系統(tǒng)內(nèi)核的安全。

以Linux操作系統(tǒng)為例,雖然ARMv7-A體系結(jié)構(gòu)的處理器有9種模式,但是操作系統(tǒng)只工作在SVC和USR模式,SVC處于內(nèi)核態(tài),USR處于用戶態(tài)。至于其他的異常模式,Linux只是簡單的略過。比如中斷模式irq,Linux只有很短的匯編代碼在irq模式運(yùn)行,主要是保存上下文,然后就立馬切換到了SVC模式,由內(nèi)核進(jìn)行統(tǒng)一處理。

寄存器集

ARMv7-A體系結(jié)構(gòu)的處理器在不同處理器模式下,對于通用寄存器的使用情況也有所不同,如下圖所示:

圖片

Snipaste_2023-09-01_21-20-36

上圖中藍(lán)色背景的寄存器屬于bank寄存器,也就是相同的寄存器名對應(yīng)不同的寄存器實體。從上圖可以看出:

R0~R7,PC在所有模式下是共享的。

系統(tǒng)模式和用戶模式共享寄存器視圖,系統(tǒng)模式?jīng)]有bank寄存器。

FIQ 模式下,R8~R12、SP、LR 都是該模式專門的寄存器,F(xiàn)IQ比IRQ響應(yīng)和處理速度更快,也得益于FIQ模式具有比IRQ模式更多的bank寄存器。

FIQ、IRQ、ABT、SVC和UND模式,都有他們自己模式下專用的SP和LR,也就是說,在模式切換的時候,不需要針對這兩個寄存器進(jìn)行現(xiàn)場保護(hù)和恢復(fù);

FIQ、IRQ、ABT、SVC和UND模式,都有他們自己模式下專用的SPSR。在處理器發(fā)生中斷或者異常時,處理器會自動的從一個模式A進(jìn)入到另一個模式B,模式A的CPSR/APSR將會自動保存到模式B的SPSR中,這樣模式B中的處理程序能夠通過訪問SPSR寄存器得到模式A下CPSR寄存器的信息。

處理器模式切換

ARMv7-A體系結(jié)構(gòu)的處理器,處理器模式是由狀態(tài)寄存器CPSR的M域(BIT[4:0])來控制的。對于用戶模式而言,是沒有權(quán)限操作CPSR寄存器的M域的,只能通過svc指令進(jìn)入到SVC模式。對于SYS、FIQ、IRQ、ABT、SVC和UND模式而言,可以通過給CPSR寄存器的M域賦值來達(dá)到切換處理器模式的目的。各個模式的編碼如下圖所示:

圖片

Snipaste_2023-09-01_20-59-03

下述代碼簡單的演示了處理器模式切換:

Reset_Handler:
cpsid i

// ...
// 切換到IRQ模式,并設(shè)置IRQ模式的堆棧
cps #0x12
ldr sp, =0x9FF00000

// 切換到SYS模式,并設(shè)置SYS模式的堆棧
// 由于SYS模式和USR模式共享寄存器視圖,SYS模式一般情況下沒有被使用,
// 因此這里相當(dāng)于在設(shè)置USR模式的堆棧
cps #0x1f
ldr sp, =0x9FE00000

// 切換到SVC模式,并設(shè)置SVC模式的堆棧
cps #0x13
ldr sp, =0x9FD00000
// ...

cpsie i

// ...

在上述代碼中,使用了cps #mode指令來完成處理器模式的切換,在切換到相應(yīng)模式之后,設(shè)置了對應(yīng)模式的堆棧。

在上述代碼中,為什么不直接切換到USR模式,再設(shè)置USR模式的堆棧,而要借助SYS模式來設(shè)置USR模式的堆棧呢?這個問題相信大家在學(xué)習(xí)了本節(jié)內(nèi)容之后,應(yīng)該還是比較簡單的。

審核編輯:湯梓紅

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

    關(guān)注

    68

    文章

    19811

    瀏覽量

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

    關(guān)注

    134

    文章

    9310

    瀏覽量

    375120
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1410

    瀏覽量

    41117
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7095

    瀏覽量

    124968

原文標(biāo)題:ARMv7-A 那些事 - 4.處理器模式與特權(quán)等級

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

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

    armv7 generic timer使用筆記

    armv7-A架構(gòu)中每個CPU核心都包含自己的私有定時,所有cpu的定時共享一個System counter, System counter負(fù)責(zé)產(chǎn)生計數(shù),傳遞到每個核心的私有定時
    的頭像 發(fā)表于 09-27 15:10 ?3344次閱讀
    <b class='flag-5'>armv7</b> generic timer使用筆記

    ARM處理器7種工作模式介紹

    ` ARM微處理器支持7種運(yùn)行模式,分別如下: 用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。快速中斷
    發(fā)表于 03-20 11:15

    從Cortex-M到Cortex-A認(rèn)識ARM處理器

    圖:2Cortex-A先進(jìn)的處理器1.Cortex-A5可定制的處理器,可在低功耗配置中實現(xiàn)高性能可擴(kuò)展的多功能性,適用于對成本敏感的低功耗應(yīng)用可配置選項為最小的設(shè)備提供豐富的OS支持
    發(fā)表于 08-23 10:04

    ARM中的異常和特權(quán)是怎樣去定義的

    異常(exception)和特權(quán)(privilege)是在ARMv8-A中定義的兩個概念。現(xiàn)代軟件期望被分成不同的模塊,每個模塊對系統(tǒng)和處理器資源具有不同的訪問級別。這方面的一個例子是操作系統(tǒng)內(nèi)核
    發(fā)表于 04-11 16:06

    淺析ARMv7-A體系架構(gòu)下的MMU的基本原理

    ARMv7-A 架構(gòu)的虛擬內(nèi)存系統(tǒng)架構(gòu),與 VMSA 對應(yīng)的還有 PMSA,這個是 ARMv7-R 系列的處理器支持的內(nèi)存保護(hù)系統(tǒng)架構(gòu),這里不做研究,僅僅初探 ARMv7-A 系列相
    發(fā)表于 05-24 16:54

    Cortex-A9處理器技術(shù)參考手冊

    Cortex-A9處理器是一款高性能、低功耗的ARM宏單元,具有L1緩存子系統(tǒng),可提供完整的虛擬內(nèi)存功能。Cortex-A9處理器實現(xiàn)ARMv7-A
    發(fā)表于 08-02 16:29

    ARM體系結(jié)構(gòu)參考手冊ARMv7-AARMv7-R版本

    提前(AOT)編譯的特定支持。 ·決定處理器如何運(yùn)行的模式和狀態(tài),包括當(dāng)前的執(zhí)行特權(quán)和安全性。 ·例外模式。 ·內(nèi)存模型,定義內(nèi)存排序和內(nèi)存管理: -
    發(fā)表于 08-12 07:46

    基于ARMv8-M處理器的安全堆疊密封

    本建議概括介紹了軟件對識別為CVE-2020-16273的漏洞的影響和緩解措施。 本咨詢中討論的方案涉及基于ARMv8-M的處理器,包括Cortex-M23、Cortex M33
    發(fā)表于 08-17 06:31

    ARM Cortex-A15 MPCore處理器參考手冊

    Cortex-A15 MPCore處理器是一款高性能、低功耗的多處理器,采用ARMv7-A架構(gòu)。 Cortex-A15 MPCore
    發(fā)表于 08-17 07:37

    ARMv8-A處理器的裸機(jī)引導(dǎo)代碼

    熟悉ARM軟件開發(fā)。 它旨在幫助您編寫ARMv8-A處理器的引導(dǎo)代碼。 您可以參考本應(yīng)用筆記中的引導(dǎo)代碼示例,并為基于ARMv8-A處理器的裸機(jī)系統(tǒng)編寫自己的引導(dǎo)代碼。
    發(fā)表于 08-23 06:20

    如何將軟件應(yīng)用程序從ARMv5遷移到ARMv7-A/R

    5。 本應(yīng)用筆記還假設(shè)您具有ARMv5的軟件開發(fā)經(jīng)驗。 假設(shè)主目標(biāo)平臺是圍繞ARMv7-A處理器構(gòu)建的。 由于ARMv7-AARMv7-R
    發(fā)表于 08-29 06:51

    Cortex-A15高性能工業(yè)控制處理器的技術(shù)參考手冊

    Cortex-A15 MPCore處理器是一種實現(xiàn)ARMv7-a架構(gòu)的高性能、低功耗處理器。Cortex-A 15 MPCore
    發(fā)表于 07-28 08:00 ?2次下載
    Cortex-<b class='flag-5'>A</b>15高性能工業(yè)控制<b class='flag-5'>處理器</b>的技術(shù)參考手冊

    ARMv7ARMv7的體系結(jié)構(gòu)參考手冊免費(fèi)下載

    ARM? Architecture Reference Manual ARMv7-A and ARMv7-R edition
    發(fā)表于 09-28 08:00 ?28次下載
    <b class='flag-5'>ARMv7</b>和<b class='flag-5'>ARMv7</b>的體系結(jié)構(gòu)參考手冊免費(fèi)下載

    Cortex A7 MPCore的技術(shù)參考手冊

    Cortex-A7 MPCore處理器是實現(xiàn)ARMv7-a架構(gòu)的高性能、低功耗處理器。Cortex-A7 MPCore
    發(fā)表于 12-09 08:00 ?9次下載
    Cortex <b class='flag-5'>A7</b> MPCore的技術(shù)參考手冊

    ARMv7-A工作模式介紹

    意思就是 64 位和 32 位,其中 AArch32 和 ARMv7基本一樣(會多一些其他操作指令)。 安全不能僅僅依靠軟件來實現(xiàn),也是需要硬件支持的,比如 ARM處理器就有不同的運(yùn)行等級,運(yùn)行在低
    的頭像 發(fā)表于 09-11 16:31 ?1236次閱讀
    <b class='flag-5'>ARMv7-A</b>工作<b class='flag-5'>模式</b>介紹
    主站蜘蛛池模板: 97色在线播放 | 亚洲精品一卡2卡3卡三卡四卡 | 她也啪97在线视频 | a色在线| 亚洲成av人片在线观看无码 | 1024你懂的国产精品 | 18毛片 | 毛片网站免费 | 国产伦精品一区二区三区网站 | 国产日韩欧美综合色视频在线 | 精品视频一二三区 | 特一级黄色毛片 | 国产色系视频在线观看免费 | 天天做天天玩天天爽天天 | 亚洲a在线播放 | 九九re | 四虎影院精品 | 欧美在线激情 | 午夜看片影院在线观看 | 手机看片免费永久在线观看 | 久久久久久噜噜噜久久久精品 | 久青草国产手机视频免费观看 | 性性性性bbbbxxxx | 激情六月婷婷开心丁香开心 | 久久久久久全国免费观看 | 免费在线观看a视频 | 天天摸天天碰色综合网 | 手机看片自拍自拍自拍 | 天堂网最新版中文 | 天天添天天射 | 日韩免费毛片视频 | 亚洲性夜 | 激情五月婷婷久久 | 夜夜操com| 超级淫小黄文大全很污的那种 | 国产午夜爽爽窝窝在线观看 | 天天操天天添 | 欧美色图亚洲自拍 | 禁h粗大太大好爽好涨受不了了 | 调教双性学霸美人 | 一区二区三区四区在线 |