內存保護單元MPU

一、介紹

內存保護單元 是一種硬件模塊,通常集成在處理器內核中,用于管理和管理對內存的訪問,以提高系統的可靠性和安全性。

它的核心任務是保護。想象一下,一個操作系統中有多個任務在運行:

* 任務A的代碼 bug 可能會錯誤地寫入任務B的數據內存區域,導致任務B崩潰。

* 一個惡意的應用程序可能會嘗試訪問操作系統的內核代碼區域,獲取系統控制權。

MPU就是為了防止這類問題而存在的“內存警察”。

?

二、MPU 的工作原理

1. 定義區域:軟件(通常是操作系統內核)為MPU配置一系列保護區域。每個區域由以下屬性定義:

? ?* 起始地址:該區域在內存中的開始位置。

? ?* 大小:該區域的范圍。

? ?* 訪問權限:規定什么模式可以訪問該區域(如:只讀、讀/寫、禁止訪問)。

? ? ? * 特權訪問:僅允許在特權模式下運行的代碼(如操作系統內核)訪問。

? ? ? * 用戶訪問:允許在用戶模式下運行的代碼(如應用程序)訪問。

? ?* 內存屬性:例如該區域是否可緩存、是否可共享等。

2. 實時監控:

在程序運行期間,MPU硬件會實時檢查處理器發出的每一次內存訪問(取指令、加載數據、存儲數據)。

3. 執行規則:

? ?* 如果訪問符合為該內存區域定義的規則,則訪問正常進行。

? ?* 如果訪問違反了規則(例如,一個用戶程序試圖寫入一個只讀區域,或訪問一個未分配給它的區域),MPU會立即觸發一個異常(通常是 MemManage Fault)。

4. 異常處理:

CPU會暫停當前違規的任務,并跳轉到操作系統預設的異常處理程序。操作系統可以據此終止這個“行為不端”的任務,并可能記錄錯誤日志,從而防止它破壞其他任務或系統本身,保證了系統的整體穩定。

三、MPU與MMU的區別

MPU 內存保護單元與 MMU 內存管理單元的區別,應用場景 實時操作系統,對確定性要求高的場景,成本敏感的微控制器。硬件成本簡單,成本低,面積小

MPU對虛擬內存不支持,MPU工作在物理地址上。?

MMU的核心功能是虛擬地址到物理地址的轉換(通過頁表)。?應用場景是大型操作系統,需要復雜內存管理的場景。硬件復雜,成本高,面積大(需要TLB等緩存)

簡單比喻:

* MMU 像是一個帶高級GPS和區域權限管理的出租車系統。它不僅可以帶你到任何地方(虛擬地址 -> 物理地址),還能確保你不會進入禁區(內存保護)。

* MPU 則像一個固定的路障和檢查站系統。它沒有GPS功能,但它在各個關鍵路口設卡,檢查你的車輛是否有權限進入前方的區域(內存保護)。

?

四、MPU 的應用場景

MPU廣泛應用于運行實時操作系統 的微控制器中,例如:

* FreeRTOS with MPU support

* Azure RTOS ThreadX

* Zephyr RTOS

在這些系統中,MPU用于:

* 保護內核代碼和數據不被應用程序破壞。

* 隔離不同任務(進程)的堆棧和數據空間,實現任務間的內存保護。

* 將某些關鍵內存區域設置為只讀(例如,存儲常數或代碼的Flash區域),防止意外寫入。

* 標記某些內存區域為“不可執行”,防止代碼注入攻擊,提升安全性。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95506.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Kubernetes知識點】監控升級,備份及Kustomize管理

目錄 1.舉例說明K8s中都有哪些常規的維護管理操作。 2.如何升級K8s到新的版本?在升級過程中應該注意哪些事項? 3.解釋ETCD及其備份和恢復的過程。 4.Kustomization在Kubernetes中的作用 1.舉例說明K8s中都有哪些常規的維護管理操作。 集群狀態監控…

《Effective Java》第4條:通過私有構造器強化不可實例化的能力

說明: 關于本博客使用的書籍,源代碼Gitee倉庫 和 其他的相關問題,請查看本專欄置頂文章:《Effective Java》第0條:寫在前面,用一年時間來深度解讀《Effective Java》這本書 正文: 原文P15&am…

20.Linux進程信號(一)

信號: 產生->保存->處理一、預備知識信號vs信號量->沒有任何關系什么叫做信號?中斷我們正在做的事情,是一種事件的異步通知機制。同步和異步理解:同步指事件發生具有一定的順序性(如命名管道中服務端讀方式打開會阻塞&am…

【C++】Vector核心實現:類設計到迭代器陷阱

vector 模擬實現代碼的核心下面從類設計、核心接口、內存安全、常見陷阱、測試場景5 個維度,提煉需重點掌握的知識點,覆蓋面試高頻考點與實踐易錯點:一、類結構與成員變量(基礎框架)vector 的核心是通過三個迭代器&…

并發編程指南 內存模型

文章目錄5.1 內存模型5.1.1 對象和內存位置5.1.2 對象、內存位置和并發5.1.3 修改順序5.1 內存模型 內存模型:一方面是內存布局,另一方面是并發。并發的基本結構很重要,特別是低層原子操作。因為C所有的對象都和內存位置有關,所以…

血緣元數據采集開放標準:OpenLineage Integrations Compatibility Tests Structure

OpenLineage 是一個用于元數據和血緣采集的開放標準,專為在作業運行時動態采集數據而設計。它通過統一的命名策略定義了由作業(Job)、運行實例(Run)和數據集(Dataset) 組成的通用模型&#xff0…

執行一條select語句期間發生了什么?

首先是連接器的工作,嗯,與客戶端進行TCP三次握手建立連接,校驗客戶端的用戶名和密碼,如果用戶名和密碼都對了,那么就會檢查該用戶的權限,之后執行的所有SQL語句都是基于該權限接著客戶端就可以向數據庫發送…

element el-select 默認選中數組的第一個對象

背景&#xff1a;在使用element組件的時候&#xff0c;我們期望默認選中第一個數值。這里我們默認下拉列表綁定的lable是中文文字&#xff0c;value綁定的是數值。效果展示&#xff1a;核心代碼&#xff1a;<template><el-select v-model"selectValue" plac…

【論文閱讀】LightThinker: Thinking Step-by-Step Compression (EMNLP 2025)

論文題目&#xff1a;LightThinker: Thinking Step-by-Step Compression 論文來源&#xff1a;EMNLP 2025&#xff0c;CCF B 論文作者&#xff1a; 論文鏈接&#xff1a;https://arxiv.org/abs/2502.15589 論文源碼&#xff1a;https://github.com/zjunlp/LightThinker 一、…

ABAQUS多尺度纖維增強混凝土二維建模

本案例是通過ABAQUS對論文Study on the tensile and compressive mechanical properties of multi-scale fiber-reinforced concrete: Laboratory test and mesoscopic numerical simulation&#xff08;https://doi.org/10.1016/j.jobe.2024.108852&#xff09;中纖維增強混凝…

C++ ---- 模板的半特化與函數模板的偏特化

在 C 中&#xff0c;模板提供了一種強大的泛型編程方式&#xff0c;使得我們能夠編寫類型無關的代碼。然而&#xff0c;在實際使用中&#xff0c;有時我們需要根據具體的類型或類型組合對模板進行定制&#xff0c;這時就需要用到模板的特化。本文將介紹半模板特化和函數模板的偏…

為何 React JSX 循環需要使用 key

key 是 React 用于識別列表中哪些子元素被改變、添加或刪除的唯一標識符 它幫助 React 更高效、更準確地更新和重新渲染列表 1、核心原因&#xff1a;Diff算法與性能優化 React 的核心思想之一是通過虛擬 DOM (Virtual DOM) 來減少對真實 DOM 的直接操作&#xff0c;從而提升性…

Jetson AGX Orin平臺R36.3.0版本1080P25fps MIPI相機圖像采集行缺失調試記錄

1.前言 主板:AGX Orin 官方開發套件 開發版本: R36.3.0版本 相機參數如下: 相機硬件接口: 2. 梳理大致開發流程 核對線序/定制相機轉接板 編寫camera driver驅動 編寫camera dts配置文件 調camera參數/測試出圖 前期基本流程就不多介紹了直接講正題 3. 問題描述 …

力扣hot100:螺旋矩陣(邊界壓縮,方向模擬)(54)

在解決螺旋矩陣問題時&#xff0c;我們需要按照順時針螺旋順序遍歷矩陣&#xff0c;并返回所有元素。本文將分享兩種高效的解決方案&#xff1a;邊界收縮法和方向模擬法。題目描述邊界收縮法邊界收縮法通過定義四個邊界&#xff08;上、下、左、右&#xff09;來模擬螺旋遍歷的…

[嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_用Qt編譯linux-Opencv庫 測試

[嵌入式embed][Qt]Qt5.12Opencv4.xCmake4.x_用Qt編譯linux-Opencv庫 & 測試前文:準備環境安裝qt-opencv必備庫git-clone opencv庫編譯opencv庫特殊:opencv編譯的include,編譯出來后多嵌套了一層文件夾,手工處理下改為include/opencv2測試demo新建項目QOpencv3.promain.cpp百…

百度智能云「智能集錦」自動生成短劇解說,三步實現專業級素材生產

備受剪輯壓力困擾的各位自媒體老板、MCN 同學們、投放平臺大佬們&#xff0c;解放雙手和大腦的好機會它來了&#xff01; 在這個數字化飛速發展的時代&#xff0c;智能技術正以前所未有的速度改變著我們的生活與工作方式。百度智能云&#xff0c;作為智能科技的引領者&#xf…

FPGA筆試面試常考問題及答案匯總

經歷了無數的筆試面試之后&#xff0c;不知道大家有沒有發現FPGA的筆試面試還是有很多共通之處和規律可循的。所以一定要掌握筆試面試常考的問題。FPGA設計方向&#xff08;部分題目&#xff09;1. 什么是同步邏輯和異步邏輯&#xff1f;同步邏輯 是指在同一個時鐘信號的控制下…

從0開始的github學生認證并使用copilot教程(超詳細!)

目錄 一.注冊github賬號 1.1、僅僅是注冊 1.2、完善你的profile 二、Github 學生認證 郵箱 學校名稱 How do you plan to use Github? Upload Proof 學校具體信息 一.注冊github賬號 1.1、僅僅是注冊 1.用如QQ郵箱的第三方郵箱注冊github 再添加.edu結尾的教育郵箱&…

自動駕駛叉車與 WMS 集成技術方案:數據交互、協議適配與系統對接實現

自動駕駛叉車與倉庫管理系統&#xff08;WMS&#xff09;是現代物流自動化的核心。當這兩項技術協同工作時&#xff0c;倉庫將實現前所未有的效率、準確性和可擴展性。以下是利用其集成實現最佳效果的方法。 為何集成至關重要 倉庫管理在當今運營中扮演著至關重要的角色&…

“企業版維基百科”Confluence

“企業版維基百科”Confluence Confluence 是一款由澳大利亞公司 Atlassian 開發的企業級團隊協作與知識管理軟件。您可以把它理解為一個功能非常強大的 “企業版維基百科” 或 “團隊知識庫”。 它的核心目標是幫助團隊在一個統一的平臺上創建、共享、組織和討論項目文檔、會議…