linux系統執行過程中的5種特殊情況

? ? ? ? 正在執行的用戶態X切換用戶態進程Y的過程為系統中常用的情況,但并非不能完全準確地反應系統的全部執行場景,還有一些場景比較特殊,主要包括以下5種情況

? ? ? ? 一.內核線程之間通過中斷處理過程中的調度時機發生進程切換,與一般的情況非常類似,只是內核線程在運行過程中發生中斷,沒有進程用戶態和內核態的切換

? ? ? ? 二.用戶進程向內核線程的切換。比一般的情況更簡單,內核線程不需要從內核態返回用戶態,如果該內核是直接調用schedule函數主動讓出cpu的,那么它被重新調度執行時就沒有中斷上下文恢復現場的問題

? ? ? ? 三.內核線程向用戶線程的切換。如果內核線程主動調用schedule函數,只用進程上下文的切換,沒有發生中斷上下文切換,它比一般的情況也更簡單,但用戶進程從內核態返回用戶態依然需要中斷上下文恢復現場返回用戶態

? ? ? ? 四.創建的子進程第一次執行時的執行起點較為特殊,需要人為地創建一個進程上下文環境作為起始點。比如fork一個進程時,子進程不是從schedule函數中完成進程cpu關鍵上下文切換之后開始執行的,而是從ret_from_fork開始執行的:

????????1. ?子進程執行的上下文構造
  • ?內核棧初始化?:fork創建子進程時,通過copy_thread函數復制父進程的內核棧,并?手動設置子進程的指令指針(eip/rip)為ret_from_fork?,而非父進程被中斷時的地址。

  • ?寄存器狀態偽造?:子進程的寄存器上下文(如eax)被設置為0(表示子進程的fork返回值),其他寄存器從父進程復制,形成“偽中斷返回”環境。
????????2. ?ret_from_fork的作用?

?中斷模擬入口?:該標簽是內核中斷返回的通用路徑,子進程通過此處?模擬從中斷返回用戶態?的過程,完成以下操作:

  • 恢復用戶態寄存器(通過restore_all
  • 執行開中斷操作(因進程切換時中斷默認關閉)
  • 跳轉到用戶態指定地址(通常為fork后的下一條指令)。

schedule的差異?:schedule負責進程切換時的資源調度,而ret_from_fork是子進程?首次獲得CPU時的執行起點?,無需經歷完整的調度器上下文切換 ?

? ? ? ? 五、加載一個新的可執行程序execve系統調用返回用戶態的情況也較為特殊,需要人為地創建一個中斷上下文的現場。比如execvex系統調用加載新的可執行程序,在execve系統調用處理過程修改了觸發該系統調用保存的中斷上下文現場,使得返回用戶態的位置修改為新程序的elf_entry或者ld動態鏈接器的起點地址

?1. 用戶態程序主動調用?

  • ?Shell執行命令?
    當用戶在終端輸入命令(如ls./a.out)時,Shell(如bash)會通過fork()創建子進程,并在子進程中調用execve加載目標程序。

Shell → fork() → 子進程 → execve("/bin/ls", ...) → 替換為ls進程

? ? ? ? 通過分析總結,大致可以想象出Linux操作系統的一般執行過程過程,其中的關鍵點如下:

? ? ? ? 1.?中斷和中斷返回有中斷上下文的切換,也就是保存現場和恢復現場,cpu和內核代碼中斷處理程序入口的匯編語言代碼結合起來完成中斷上下文的切換

? ? ? ? 2.進程調度過程中有進程上下文的切換,而此切換完全由內核完成,具體包括:從一個進程的地址空間切換到另一個進程的地址空間;從一個進程的內核堆棧切換到另一個進程的內核堆棧;還有進程的cpu上下文關鍵上下文切換

????????linux內核通過中斷上下文切換和進程上下文這兩種基本的運行機制來保障為用戶提供最基本和最重要的服務,這些服務如下:

? ? ? ? 1、通過系統調用的形式為進程提供各種服務

? ? ? ? 2、通過中斷服務程序為I/O、內存管理等硬件的正常工作提供各種服務

? ? ? ? 3、通過內核線程為系統提供動態的維護服務,以及完成中斷服務中可延時處理的任務

????????

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

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

相關文章

9. 元素拖拽

元素拖拽 API 介紹 1. 拖放過程 整個拖放過程中,存在兩個關鍵元素:拖拽元素、放置元素 拖拽元素:被拖拽的元素 drag:元素被拖拽時觸發,從開始拖拽到拖拽結束前整個過程會一直持續的觸發dragstart:元素被…

用來提升同花順軟件進程優先級的C#程序

為了提高炒股軟件同花順的運行速度,消除卡頓,編寫一個C#程序,來設置同花順進程的優先級。 using System; using System.Diagnostics; using System.Security.Principal;namespace ProcessPrioritySetter {class Program{static void Main(st…

linux初階---一些指令

一.快速認識6-8個簡單指令 1.pwd pwd指令是用來查看用戶當前所處在的目錄(目錄的概念在理解上可以等效為文件夾)。 (1)在windows系統中我們通過文件路徑表示唯一的文件,在linux中也是一樣的,所以pwd是一個很…

全國產傳感器外殼的綜合分析:材料選擇、考量因素與尺寸精度影響

全國產傳感器作為現代工業、科研、生活等領域的 “感知觸角”,其外殼的性能與質量直接關乎設備的穩定性、可靠性與使用壽命。從材料選型、關鍵考量因素到尺寸精度的影響,每個環節都需精細把控。 一、全國產傳感器外殼材料的多元選擇 全國產傳感器外殼材…

本地緩存Caffeine詳解(含與Spring Cache集成)

目錄 一、介紹 二、Caffeine核心原理與架構設計 2.1 存儲引擎與數據結構 2.2 緩存淘汰策略 2.3 并發控制機制 三、入門案例 3.1 引入依賴 3.2 測試接口 3.3 小結 四、Caffeine常用方法詳解 4.1 getIfPresent 4.2 get 4.3 put 4.4 putAll 4.5 invalidate 4.6 inv…

論特定領域軟件架構

20250413-作 題目 特定領域軟件架構DSSA(Domain Specific Software Architecture)就是在一個特定應用領域中為一組應用提供組織結構參考的標準軟件體系結構。對DSSA 研究的角度、關心的問題不同導致了對DSSA 的不同定義。DSSA 的必備特征如下。 一…

iOS 遠程調試與離線排查實戰:構建非現場問題復現機制

iOS開發者都知道,調試最怕兩個字:“偶發”。用戶說App閃退了,你點了十遍也沒問題;測試說功能卡頓了,你抓日志時它又順滑如新。最麻煩的是,這種“現場問題”往往在你連接不到用戶設備時發生。 面對這種情況…

SpringBoot -- 整合 Swagger3

8.SpringBoot3 整合 Swagger3 由于目前主流的開發模式是前后端分離開發。所以前后端的交互需要通過一個 API&#xff08;開發接口&#xff09; 來規范。而這個接口的開發是由后端程序員編寫的。“網站式 API 文檔” 1.導入依賴 <!-- 引入swagger3(springdoc)的依賴--> …

A Machine Learning Approach for Non-blind Image Deconvolution論文閱讀

A Machine Learning Approach for Non-blind Image Deconvolution 1. 研究目標與實際意義2. 創新方法與模型設計2.1 核心思路2.2 正則化反演:理論與公式2.2.1 退化模型2.2.2 正則化目標函數2.2.3 傅里葉域閉式解2.3 MLP去偽影:架構與訓練2.3.1 MLP架構設計2.3.2 訓練流程2.3.…

微信小程序<rich-text>支持里面圖片點擊放大

使用<rich-text>渲染類似下面的html代碼&#xff1a; <div stylecolor: red>寵物友好<br/>xxx提供寵物友好服務&#xff0c;具體請見下圖<br/></div> <img srchttps://xxx.com/xxx1.png width100%/> <img srchttps://xxx.com/xxx2.png…

BVH 文件是一種用于記錄 3D 動畫數據的文件格式,常用于 3D 建模和動畫制作。以下是對這個 BVH 文件的逐行解讀

BVH 文件是一種用于記錄 3D 動畫數據的文件格式&#xff0c;常用于 3D 建模和動畫制作。以下是對這個 BVH 文件的逐行解讀&#xff1a; HIERARCHY ROOT Hips { OFFSET 0 0 0 CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation JOINT LeftUpLeg { OFFSE…

C語言開發:Onvif(一)

根據ONVIF官網 的介紹&#xff1a; ONVIF是一個開放的安防行業組織&#xff0c;致力于為安防行業提供和促進標準化開放接口&#xff0c;以實現IP網絡安防產品和服務的有效互操作性。 在具體實現上&#xff0c;ONVIF使用了Web Service的方式&#xff0c;設備通過WSDL定義的接口…

中科米堆三維掃描儀耳機3D掃描尺寸測量數字化建模

當下&#xff0c;耳機已從單純的音頻輸出設備進化為集娛樂、健康、辦公于一體的智能穿戴終端。相關數據顯示&#xff0c;2025年全球智能個人音頻設備出貨量突破4.55億臺&#xff0c;中國以22%的增速領跑全球&#xff0c;其中開放式耳機&#xff08;OWS&#xff09;出貨量占比達…

學習接口自動化框架pytest有哪些好處?

學習 pytest 作為接口自動化測試框架&#xff0c;具有以下顯著優勢&#xff0c;能大幅提升測試效率和質量&#xff1a; Pytest自動化測試教程&#xff0c;自動化必備之Pytest測試框架訓練營&#xff0c;只需一小時速成&#xff0c;學會直接上手實操&#xff01; 1. 代碼簡潔&…

LinuxBridge的作用與發展歷程:從基礎橋接到云原生網絡基石

LinuxBridge作為Linux網絡虛擬化的核心組件&#xff0c;已悄然支撐互聯網基礎設施20余年。它不僅是虛擬機網絡連接的橋梁&#xff0c;更是容器網絡、云原生架構的隱形支柱。 一、LinuxBridge的核心作用剖析 1. 二層網絡虛擬化的實現者 本質功能&#xff1a;模擬物理交換機行為…

探討 SYSCFG 時鐘對 ADC 采樣的影響

探討 SYSCFG 時鐘對 ADC 采樣的影響 在嵌入式系統開發中&#xff0c;對于 GD32F4 系列微控制器&#xff0c;理解 SYSCFG 時鐘與 ADC 采樣之間的關系至關重要。 以下是詳細分析&#xff1a; 一、SYSCFG 時鐘對 ADC 采樣過程的基礎性作用 1. 提供采樣時鐘信號 ADC 采樣需要時鐘…

Spring Boot 項目實訓 - 圖書信息網站

文章目錄 1. 實訓目的2. 系統設計3. 運行演示4. 實現步驟4.1 創建數據庫與表4.2 創建Spring Boot項目4.3 創建實體類4.4 創建映射器接口4.5 編寫應用配置文件4.6 測試映射器接口4.7 創建服務類4.8 創建控制器4.9 準備靜態資源4.10 創建模板頁面4.11 測試整個項目 5. 實訓總結 1…

GPU 性能可變性分析框架

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 抽象。 分析來自 GPU 分析器的大規模性能日志通常需要數 TB 的內存和數小時的運行時間&#xff0c;即使是基本摘要也是如此。這些限制會阻止及時洞察&#xff0c;并阻礙將性能分析集成到自動化工作流程中…

Redis主從復制原理

一、Redis主從復制概述 Redis主從復制&#xff08;Master-Slave Replication&#xff09;是Redis實現高可用性和讀寫分離的基礎架構。通過主從復制&#xff0c;數據可以從一個Redis服務器&#xff08;主節點&#xff09;復制到一個或多個Redis服務器&#xff08;從節點&#x…

將ONNX模型轉換為(OPENMV可用的格式)TensorFlow Lite格式

將ONNX模型轉換為TensorFlow Lite格式 在深度學習模型部署過程中&#xff0c;我們常常需要將模型從一種格式轉換為另一種格式&#xff0c;以適應不同的硬件平臺和應用場景。本文將詳細介紹如何將ONNX格式的模型轉換為TensorFlow Lite格式&#xff0c;以便在移動設備或嵌入式設…