ARM64 linux系統的一般執行過程

1、正在運行的用戶進程X

2、發生異常(包括系統調用等),CPU完成的工作:把當前程序指針寄存器PC放入ELR_EL1寄存器,把PSTATE放入SPSR_EL1寄存器,把異常產生的原因放在ESR_EL1寄存器,將異常向量表的起始地址VBAR_EL1寄存器的值與該異常類型在異常向量表里的偏移量,得出異常向量表空間的入口地址,然后加載該異常向量空間的入口地址到程序指針寄存器PC

ELR_EL1:Exception Link Register (EL1)

SPSR_EL1:Saved Program Status Register (EL1)

ESR_EL1:Exception Syndrome Register (EL1)

VBAR_EL1:Vector Base Address Register (EL1)

3、保存現場,每個異常向量空間僅有128字節最多可以存儲32條指令(每條指令4字節),而且異常向量空間最后一條指令是b指令跳轉到異常處理程序保存現場,此時完成了用戶靜態進程上下文切換到中斷上下文,即從進程X的用戶態切換到進程X的內核態。

? ? ? ? .align 7就是2的7次方,128個字節

? ? ? ? 異常向量表和處理函數在arch/arm64/kernel/entry.S這個文件

? ? ? ? 異常處理函數的頭文件定義:

4.?異常處理過程中,異常返回前有機會調用schedule函數,其中switch_mm切換進程空間,switch_to切換進程cpu的上下文,將當前進程的X的內核堆棧切換到進程調度算法選出來的next進程(本例定位進程Y)的內核堆棧,并完成了進程CPU上下文寄存器的狀態切換

5.進程Y開始執行,cpu_switch_to函數調用實際上執行一段進程CPU上下文寄存器切換的匯編語言代碼,最后有一個函數調用返回指令ret,之后開始執行進程Y,注意,這里進程Y曾經通過以上步驟被切換出去,因此可以從cpu_swtitch_to函數調用返回處繼續執行進程Y.

6.恢復現場,與3中保存現場相對應。注意,這里是在進程Y的異常過程中,而3中保存現場是在進程X的異常處理過程中,因為內核堆棧從進程X的內核堆棧切換到進程Y的內核堆棧了

7.異常返回指令eret,與2中CPU完成的工作相反,此時完成了從中斷上下文切換到用戶進程上下文,即從進程Y的內核態返回進程Y的用戶態

8.繼續執行用戶態進程Y

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

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

相關文章

Vue3+ element 實現導入導出

一、導入功能相關代碼分析 相關變量定義 importVisible:這是一個ref類型的響應式變量,用于控制導入對話框的顯示與隱藏,初始值為false。當用戶點擊 “導入” 按鈕時,會嘗試將其值設為true來顯示導入對話框,若出現異常則…

Git安裝(純小白版)

一、Git安裝 1. 簡介 Git是一款免費開源的分布式版本控制系統,常用于軟件開發。它能記錄文件在不同時間的改動,讓用戶在需要時查看、恢復舊版本。支持多人協作開發,多人可同時修改項目文件,Git會處理好沖突。開發者能在本地創建…

cocos2 本地根據文本內容生成二維碼

cocos2 本地根據文本內容生成二維碼 之前做了一個功能,就是cocos2小游戲,結算頁面需要有一個二維碼,二維碼內容是一個網址,這個網址需要根據用戶游玩分數確定訪問哪個網址,但是這個小游戲是單機小游戲,不連…

87.xilinx FPGA讀取器件id方法

dout數據高位先出msb module chip_id_reader(input clk,input reset,output [56:0] dna_value,output dna_valid );reg [6:0] bit_count;reg [56:0] dna_shift_reg;reg dna_read;reg dna_shift;wire dna_out;// 實例化DNA_PORT原語DNA_PORT #(.SIM_DNA_VALUE(57h123456789ABCD…

AcWing--數據結構(二)

Trie 樹 用來高效的快速存儲和查找字符串集合的數據結構 如存儲:abcdef,abdef,aced,... 從根節點開始存儲,從前往后存儲,看是否有a,沒有就創建,依次存儲。 一般在最后一個字符打個標記,意思就是當前字符…

論基于架構的軟件設計方法(ABSD)及應用

2025年3月22日作 題目 基于架構的軟件設計(Architecture-Based Software Design, ABSD)方法以構成軟件架構的商業、質量和功能需求等要素來驅動整個軟件開發過程。ABSD是一個自頂向下,遞歸細化的軟件開發方法,它以軟件系統功能的…

【Docker基礎】Docker容器管理:docker exec詳解

目錄 1 docker exec命令概述 1.1 命令定位與作用 1.2 與相似命令對比 2 基本語法與參數解析 2.1 完整命令語法 2.2 核心參數詳解 2.2.1 -i, --interactive 2.2.2 -t, --tty 2.2.3 -d, --detach 2.2.4 -e, --env 2.2.5 -u, --user 2.2.6 -w, --workdir 3 典型使用場…

CSS3實現同心圓效果

效果圖&#xff1a; 文本左側顯示一個 外圓&#xff08;30px&#xff0c;半透明&#xff09; 和 內圓&#xff08;12px&#xff0c;實色&#xff09; 的同心圓&#xff1a; <!DOCTYPE html> <html> <head><style>.text-with-circles {position: rela…

Spring Boot項目開發實戰銷售管理系統——系統設計!

Spring Boot項目開發實戰——銷售管理系統 在前面的章節中我們詳細介紹了Spring Boot各個功能的使用&#xff0c;本章將新建一個銷售管理系統項目&#xff0c;演示項目從需求分析到功能分解&#xff0c;再到各個功能的實現過程&#xff0c;最后再使用Docker部署上線的完整過程…

RK3588開發筆記-Hailo AI模塊調試

目錄 前言 一、RK3588 與 Hailo AI 模塊簡介 RK3588 Hailo AI 模塊 二、原理圖連接 三、內核配置 四、Hailo驅動編譯 五、Hailo模塊驗證 總結 前言 在邊緣計算和人工智能應用不斷發展的今天,將高性能的 AI 模塊與功能強大的開發板相結合,能為各種創新應用提供堅實的基…

【Pytorch】語言模型上的動態量化

目錄 ■導言 ①定義模型 ②加載文本數據 ③加載預訓練模型 ④測試動態量化 ■結論 ■導言 量化涉及將模型的權重和激活從float轉換為int&#xff0c;這可以導致更小的模型大小和更快的推理&#xff0c;并且只對準確性造成很小的影響。 本文將把最簡單的量化形式-動態量…

【有啥問啥】大模型效率部署之Prefill-Decode分離

大模型效率部署之Prefill-Decode分離 Prefill 與 Decode 階段定義與流程 LLM 推理分為兩個階段&#xff1a;預填充&#xff08;Prefill&#xff09;和解碼&#xff08;Decode&#xff09;。在 Prefill 階段&#xff0c;模型將完整地處理用戶輸入的所有提示詞&#xff08;prom…

QT Creator構建失敗:-1: error: Unknown module(s) in QT: serialport

Qt Creator和Qt SDK版本&#xff1a; Product: Qt Creator 17.0.0 Based on: Qt 6.9.1 (MSVC 2022, x86_64) Built on: Jun 17 2025 16:32:24 From revision: 4983f08c47 問題&#xff1a; 在使用串口的時候&#xff0c;在pro 文件中添加了 QT serialport&#xff…

基于PostgreSQL的百度或高德等POI多層級分類的數據庫設計

目錄 前言 一、百度 VS 高德 POI分類 1、高德POI分類 2、百度POI分類 3、分類對比與區別 二、POI分類表設計 1、物理表結構 2、數據存儲 3、數據查詢 三、總結 前言 在當今數字化快速發展的時代&#xff0c;地理信息數據的重要性日益凸顯&#xff0c;而POI&#xff08…

AutoVLA:端到端自動駕駛中具有自適應推理和強化微調功能的視覺-語言-動作模型

26年6月來自UCLA的論文“AutoVLA: A Vision-Language-Action Model for End-to-End Autonomous Driving with Adaptive Reasoning and Reinforcement Fine-Tuning”。 視覺-語言-動作 (VLA) 模型的最新進展通過利用世界知識和推理能力為端到端自動駕駛帶來了希望。然而&#x…

知攻善防靶機 Windows 近源OS

知攻善防靶機 [hvv訓練]應急響應靶機訓練-近源滲透OS-1 前景需要&#xff1a;小王從某安全大廠被優化掉后&#xff0c;來到了某私立小學當起了計算機老師。某一天上課的時候&#xff0c;發現鼠標在自己動彈&#xff0c;又發現除了某臺電腦&#xff0c;其他電腦連不上網絡。感覺…

「Java基本語法」求三位整數的各位數字之和

引言 現在來玩一個數字拆解游戲。想象一下手里拿著一個三位數的積木,現在需要把它拆成個位、十位和百位三塊,然后把它們加起來。這個操作在實際編程中很常見,例如做密碼校驗、游戲分數計算等都可能會用到。 案例:求三位數各位之和 編寫程序,從鍵盤輸入一個三位的正整數…

SciChart 助力蛋白質結構研究:實時可視化推動生物科學新突破

SciChart是高性能數據可視化領域的優秀圖表產品&#xff0c;深受數據密度和精度至關重要行業的信賴&#xff0c;包括航空航天、石油和天然氣、科學研究和賽車運動等。作為F1中使用的解決方案&#xff0c;SciChart被NASA所依賴&#xff0c;并受到90%的頂級醫療技術公司青睞&…

基于Docker與cpolar的Leantime部署方案實現低成本跨地域團隊協作

文章目錄 前言1.關于Leantime2.本地部署Leantime3.Leantime簡單實用4.安裝內網穿透5.配置Leantime公網地址6. 配置固定公網地址 前言 各位小伙伴們&#xff0c;讓我們暫時把目光從云端的分布式系統轉向本地環境。在您的Linux主機上&#xff0c;我們將搭建一個高性價比的協作平…

阿里云Redhat系Linux修改ssh默認端口

阿里云Redhat系Linux修改ssh默認端口 在阿里云買了個服務器&#xff0c;想著ssh的默認端口是22&#xff0c;這不安全。 我就將修改ssh默認端口的過程記錄下來了&#xff0c;方便日后回看。 本命令適用于 Redhat系Linux&#xff0c;例如 Redhat、Centos、Alibaba Cloud Linux、…