進程控制的學習

進程控制(Process Control)是指操作系統對進程的創建、執行、暫停、恢復、終止等一系列狀態變化進行管理和協調的過程
簡單說,就是系統讓各個程序能有序地運行,合理地使用CPU和資源,而不會互相沖突或者出錯。

主要包括這些內容:

  • 創建進程:比如你打開一個軟件,系統就會創建一個新的進程。

  • 調度進程:決定哪個進程先用CPU、用多久(比如短時間內切換很多次,給人感覺“同時在運行”)。

  • 阻塞與喚醒進程:比如一個進程在等待數據(讀文件),系統就可以讓它暫時停下來,等數據到了再繼續。

  • 終止進程:比如你關閉一個軟件,系統就把對應的進程徹底結束,釋放資源。

核心目的就是:保證多任務運行時,各進程高效、安全、公平地共享系統資源

?

你可以把 ??原語?? 想象成一種“??不可分割的操作??”,就像你生活中的某些必須“一步到位”的事情一樣。用三個關鍵詞理解:


1?? ??舉個栗子🌰:??

假設你要往存錢罐存錢:

  • ? ??正確操作(原語):?? 整個動作(打開蓋子 → 放錢 → 蓋上蓋子)??必須一次性完成??,中間不能被打斷。
  • ? ??錯誤操作(非原語):?? 如果你剛打開蓋子,還沒放錢就被媽媽叫走,存錢罐可能被弟弟搶走亂塞東西,導致結果混亂。

??原語的核心就是:要么不做,要么做完,沒有中間狀態!?

?

我們可以用 ??“打游戲存檔”?? 來類比理解 ??“保護進程運行現場”?? 的含義:


??1?? 什么是進程的運行現場???

想象你在玩一個游戲(相當于一個進程),游戲進行到一半時,突然需要接電話(相當于操作系統要切換進程)。此時你必須記錄以下信息才能之后繼續游戲:

  • ??游戲進度??(程序執行到哪一行代碼)
  • ??背包里的道具??(CPU寄存器的值)
  • ??角色位置和血量??(內存數據、堆棧狀態)
  • ??當前的游戲設置??(進程打開的文件、權限等)

這些信息的總和就是 ??“進程運行現場”??,相當于游戲的 ??“存檔”??。


??2?? 為什么要保護運行現場???

如果接電話前不存檔:

  • ??回來繼續游戲時??:忘記角色位置、道具丟失,游戲無法繼續(進程崩潰)。
  • ??同時玩多個游戲??:切換游戲時進度混亂(多任務系統無法正常運行)。

??保護運行現場的核心目的??:
讓操作系統能隨時暫停一個進程,去運行其他進程,之后再 ??無縫恢復原進程的執行??,就像什么都沒發生過一樣。


??3?? 操作系統如何保護運行現場???

??關鍵動作:上下文切換(Context Switching)??

1?? ??保存現場??:
暫停當前進程時,操作系統會將其 ??程序計數器(PC)、寄存器值、堆棧指針?? 等關鍵數據保存到 ??PCB(進程控制塊)?? 中。
(相當于把游戲存檔到硬盤)

2?? ??加載新現場??:
從另一個進程的PCB中讀取其上次保存的狀態,恢復寄存器、程序計數器等。
(相當于讀取另一個游戲的存檔)

3?? ??繼續執行??:
CPU根據恢復的現場數據,從上次中斷的位置繼續運行進程。
(接著上次的存檔繼續玩游戲)


??🌰 舉個栗子??

  • ??場景??:你正在用瀏覽器下載文件(進程A),此時需要切換到微信聊天(進程B)。
  • ??保護現場??:
    1. 操作系統保存瀏覽器當前的下載進度、網絡連接狀態、內存數據到PCB。
    2. 從微信的PCB中恢復上次的聊天窗口、輸入光標位置等。
  • ??結果??:
    切換回瀏覽器時,下載會從上次中斷的位置繼續,用戶完全感知不到切換過程。

??4?? 不保護運行現場會怎樣???

  • ??數據丟失??:進程恢復時找不到之前的執行位置,導致崩潰(比如銀行轉賬中途被中斷,錢扣了但沒到賬)。
  • ??多任務失效??:系統只能運行一個進程,無法實現“邊聽歌邊寫文檔”。

??📌 總結??

??保護進程運行現場 = 給進程打“即時存檔”??

  • ??目的??:實現多任務切換時“絲滑無感”。
  • ??核心操作??:保存寄存器、程序計數器等關鍵狀態到PCB。
  • ??結果??:操作系統像魔術師一樣,讓多個進程“同時運行”(實際是快速切換)。

就像你同時追三部劇,每次切換時都能精準續播,全靠“進度保存”這個魔法! 🎮→📞→🎮

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

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

相關文章

818協議知識筆記

一、概念 Fibre CHannel-Audio Vedio standard;FC-AV FC-FS:Fibre channel framing and signaling interface; FC-PI:fibre channel physical interfaces 二、術語 VGA,SVGA,XGA,WXGA,SXGA,SXGA,WSXGA,UXGA,1440P; ICD:interface control document接口控制文檔 CRC對幀頭和數據…

AI大模型學習十二:?嘗鮮ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio對象存儲測試和漫長修改之路

一、說明 前面已經安裝完成,這里我們測試對象存儲 AI大模型學習十一:?嘗鮮ubuntu 25.04 桌面版私有化sealos cloud devboxminio,實戰運行成功-CSDN博客https://blog.csdn.net/jiangkp/article/details/147424823?spm1011.2415.3001.5331 二…

SpringBoot的自動掃描特性-筆記

1.Spring Boot 的自動掃描特性介紹 Spring Boot 的自動掃描(Component Scanning)是其核心特性之一。通過注解SpringBootApplication 簡化了 Bean 的管理,允許框架自動發現并注冊帶有特定注解的類為 Spring 容器中的 Bean(特定注解…

基于nodeJS代碼的通過爬蟲方式實現tiktok發布視頻(2025年4月)

1、將真實的tiktokstudio平臺的cookie填到代碼里的cookie變量里,修改python代碼里的ticket,ts, privateKey,以及videoPath,timing等變量的值,最后運行python腳本即可; 2、運行之前根據import提示安裝一些常見依賴,比如node-fetch等; 3、運行時候可能系統需要科學上網…

數據一致性問題剖析與實踐(四)——競態條件競爭導致的一致性問題

一、前言 之前我們討論了幾種場景的一致性問題 冗余數據存儲中的一致性問題分布式共識中的一致性問題單機事務中的一致性問題分布式事務中的一致性問題 本文將圍繞競態條件競爭中的一致性問題展開討論分析。 二、 問題定義 競態條件(Race Condition&#xff09…

PCL點云處理之基于FPFH特征的SAC-IA全局配準算法 (二百四十六)

提示: 有相關點云需求的可以私信 PCL 點云處理之基于 FPFH 特征的 SAC - IA 全局配準算法 一、前言二、相關概念介紹2.1 點云2.2 FPFH 特征2.3 SAC - IA 算法三、SAC - IA 全局配準算法原理3.1 FPFH 特征提取3.2 SAC - IA 配準過程四、代碼實現與分析4.1 完整代碼4.2 代碼分析…

JavaScript性能優化實戰:從瓶頸定位到極致提速

JavaScript作為現代Web應用的核心,其性能直接影響用戶體驗。本文將從性能瓶頸定位、高頻優化場景、現代API利用三個維度,結合代碼示例和Chrome DevTools實戰,為你構建完整的性能優化體系。 一、性能分析:精準定位瓶頸 1.1 Chrome…

JavaScript 頁面刷新:從傳統到現代的全面解析

在 Web 開發中,"刷新"是一個基礎但極其重要的功能。本文將全面探討頁面刷新的實現方式,從傳統方法到現代最佳實踐,深入解析每一種方案的原理和適用場景,并給出實用代碼示例。 一、理解頁面刷新的本質 在 Web 開發中&am…

NLP高頻面試題(五十五)——DeepSeek系列概覽與發展背景

大型模型浪潮背景 近年來,大型語言模型(Large Language Model, LLM)領域發展迅猛,從GPT-3等超大規模模型的崛起到ChatGPT的橫空出世,再到GPT-4的問世,模型參數規模和訓練數據量呈指數級增長。以GPT-3為例,參數高達1750億,在570GB文本數據上訓練,顯示出模型規模、數據…

鴻蒙系統應用開發全棧指南

一、開發環境搭建與工具鏈配置 1. DevEco Studio深度解析 作為鴻蒙生態的官方IDE,DevEco Studio 4.2版本已集成ArkTS 3.0編譯器與AI代碼助手功能。安裝過程需注意: 系統要求:Windows 10 21H2或macOS Monterey以上環境依賴:Node…

iOS18 MSSBrowse閃退

iOS18 MSSBrowse閃退 問題方案結果 問題 最近升級了電腦系統(15.4.1),并且也升級了xcode(16.3)開發工具。之后打包公司很早之前開發的項目。 上線之后發現在蘋果手機系統18以上,出現了閃退問題。 涉及到的是第三方MSSBrowse,在選擇圖片放大的…

鴻蒙-使用Charles抓包

目錄 前言鴻蒙應用中的網絡請求rcp 抓包http 抓包 以下是排查過程,沒啥參考價值發送文件http 抓包報錯 前言 抓包,對于各位開發者應該不陌生,各種抓包工具應該的都聽說過,像 charles、fiddler、Wireshark?等。在 Android 和 iOS…

回顧|Apache Cloudberry? (Incubating) Meetup·2025 杭州站

2025 年 4 月 19 日,由酷克數據與中啟乘數聯合舉辦的 Apache Cloudberry? (Incubating) Meetup 杭州站在浙江省杭州市濱江區濱江會展中心成功舉辦。本次活動邀請了 Cloudberry PPMC 團隊成員、活躍內核貢獻者以及中興 EBASE-A、阿里云 ADB-PG、網易、中啟乘數等多…

Linux網絡編程 深入Linux網絡棧:原始套接字鏈路層實戰解析

之前我們編程都是在應用層,只需在地址結構體中傳 地址與端口號。然后協議棧在傳輸層,與網絡層幫我們進行數據的封裝。但這里我們要學的是在鏈路層進行編程 這里我想說一下,當數據到達鏈路層,有三個分支:ARP&#xff0c…

用python寫一個相機選型的簡易程序

最近有點忙,上來寫的時間不多。 今天就把之前寫的一個選型的簡易程序,供大家參考。 代碼: import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QGro…

【實戰篇】數字化打印——打印格式設計器的功能說明

前言 myBuilder內置了覆蓋豐富場景的打印格式設計器,效果統一,功能完善。 設計器一:小票 用于設計小票、水單等滾筒紙張的場景,例如:超市購物小票 主要功能 打印格式的保存、下載、上傳設計時功能:撤銷…

Qt 中 QSQLITE 和 QODBC 數據庫連接的區別

Qt 中 QSQLITE 和 QODBC 數據庫連接的區別 這兩行代碼都是創建 Qt 數據庫連接,但使用了不同的數據庫驅動和連接方式: 1. QSqlDatabase::addDatabase("QSQLITE") 特點: 使用 SQLite 數據庫的 原生驅動直接與 SQLite 數據庫文件(…

Eigen核心矩陣/向量類 (Matrix, Vector, Array)

1. Matrix 類&#xff08;稠密矩陣&#xff09; 模板參數 cpp Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols> Scalar: 元素類型&#xff08;如 float, double, int&#xff09;。 Rows/Cols: 行數和列數&#xff08;Dynamic 表示動態大小&#xff09;。 O…

汽車免拆診斷案例 | 2016款奔馳C200L車組合儀表上多個故障燈偶爾點亮

故障現象 一輛2016款奔馳C200L車&#xff0c;搭載274 920發動機&#xff0c;累計行駛里程約為13萬km。該車組合儀表上的防側滑故障燈、轉向助力故障燈、安全氣囊故障燈等偶爾異常點亮&#xff0c;且此時將擋位置于R擋&#xff0c;中控顯示屏提示“后視攝像頭不可用”&#xff…

實現 Babylon.js 鼠標輸入管理單例 (MouseController) 的最佳實踐

在現代 Web3D 開發中&#xff0c;高效的輸入管理是創建流暢交互體驗的關鍵。本文將詳細介紹如何在 Babylon.js 中實現一個強大的鼠標輸入管理單例&#xff0c;幫助你優雅地處理所有指針事件。 為什么需要鼠標輸入管理單例&#xff1f; 在復雜的 3D 場景中&#xff0c;鼠標/指…