2、操作系統之軟件基礎

一、硬件支持系統 ,系統管理硬件

  • 操作系統核心功能可以分為:
    • 守護者:對硬件和軟件資源的管理
    • 協調者:通過機制,將各種各樣的硬件資源適配給軟件使用。
  • 所以為了更好的管理硬件,操作系統引進了軟件。其中3大核心部分是:
    • 文件【我們需要知道怎么用文件來訪問磁盤和I/O設備】
    • 虛擬內存【虛擬內存是虛擬的,為應用程序提供遠大于物理內存限制的虛擬地址空間。】
    • 進程【真正用來訪問資源的部分】
      在這里插入圖片描述

二、進程(process)

1、理解

進程就是一個正在執行的程序實例

進程的結構

  • 每個進程里都有一個獨立的地址空間
    • 這個空間一開始是0 ,不斷的運行,就成了連續的存儲空間。在這個空間,不僅程序能運行起來,還能調用各種數據,等等。
  • 每個進程都有相關的資源
    • 這些資源有PS , PC寄存器等等。

簡而言之:進程就是一個被封裝的容器,它有運行資源的一切信息。

  • 如果 我開了QQ,又開了微信。那我的進程就有2個,它要如何合理地獲得CPU資源

    • 操作系統通過時間片輪轉等調度策略周期性地掛起一個進程并啟動另一個,確保所有進程都能公平地獲得CPU資源。
    • 當進程被暫時掛起,就必須保存狀態了。以便未來某個時候可以繼續使用。狀態下的信息【比如寄存器,地址空間,上下文等等】都會被存儲在進程表中。
      • 進程表用于跟蹤系統中所有進程的狀態信息
  • shell和進程

    • 用戶可以使用shell來控制進程。讓一個進程產生更多進程(這些由進程產生的進程就是子進程)【可能有些抽象,可以這樣理解,如下:】。
      • 在這里插入圖片描述
      • 我在shell使用ls 命令,這個命令展現了當前路徑有的文件件。我本來是在運行shell的linux環境虛擬機【當前一個主進程】,我想看文件夾,我為了看文件夾,使用了ls命令,在執行這個ls命令的過程就是子進程
    • 所以進程就有樹的樣子了-----進程樹
    • 在這里插入圖片描述
  • 進程該如何通信

    • 當進程間協同工作完后,使用機制來交換信息,也就是進程間通信(IPC) 機制。
    • 除了進程間通信(IPC)外,操作系統還使用一系列的系統調用來管理進程資源。
  • 進程接收信息,如果信息經常不能準時到達

    • 為了確保可靠傳輸,進程會采用定時器。【這種行為也就是異步】
      • 比如:進程在外部信息發送出去的第4秒還沒有接收到。就發一個通知提醒,就可能重新發送了。

異步行為【分為軟件異步、硬件異步】:
異步行為是指任務可以并發執行,不需要等待前一個任務完成。異步操作不會阻塞當前線程,任務完成后通過回調、Promise 或事件通知。

在這里插入圖片描述

  • 那么事件1發生什么事情?
    • 事件1作用:保護現場
    • 保護的內容有
      • PC值----由CPU保護
      • PSW寄存器—操作系統軟件保護
      • 基礎寄存器—操作系統軟件保護
      • 不過在現代有可以都用CPU保護的了。CortexM芯片等等。
  • 事件2發生什么事情?
    • 事件2作用:確定中斷入口在哪里
    • 硬件CPU來準備—操作系統OS和CPU都能來提供中斷向量表【中斷處理函數的數組空間】
  • 事件3發生什么事情?
    • 事件3作用:中斷處理函數
    • 操作系統來準備。
  • 事件4發生什么事情?
    • 事件4作用:中斷返回【普通函數返回】
    • 軟件實現,編譯器來實現。
    • 特定的匯編寫,不能c語言。
      • 普通函數
        • PC值—>硬件保護
        • PSW寄存器—>不需要保護。
        • 基礎寄存器—>編譯器保護

同步行為
同步行為是指任務按順序執行,前一個任務完成后,才能開始下一個任務。同步操作會阻塞當前線程,直到任務完成。

三、虛擬內存

在這里插入圖片描述
從下往上看,分為進程代碼和數據區、堆數據區、共享庫區、堆棧區、內核內存區。

這部分的基礎先了解這個圖片就行了。

常駐內存是指一直都在,不能刪掉。

四、并發和并行

  • 并發是指多個任務在同一時間段內交替執行但在任意時刻可能只有一個任務在運行。并發通過任務切換(上下文切換)實現,給人一種多個任務同時運行的錯覺。
  • 如圖:同一時間段內
時間軸: |----任務A----|----任務B----|----任務A----|----任務B----|
  • 并行是指多個任務在同一時刻同時執行。并行需要多核 CPU 或多個處理器,每個任務運行在不同的核心上。
  • 如圖:同一時刻內
時間軸: |----任務A----||----任務B----||----任務C----|

五、系統調用【超重點】

在這里插入圖片描述

通過上圖能明白,硬件不能直接讓用戶使用它。
所以提出了系統調用

  • 系統調用

    • 定義:系統調用是操作系統內核(Kernel)為應用程序提供的一組接口,允許用戶程序(運行在用戶態)請求內核(運行在內核態)代為執行特權操作(如文件讀寫、進程創建等)。
    • 系統調用依賴硬件和OS(操作系統)
  • 系統調用的工作原理

  • (1) 調用流程

    • 用戶程序觸發調用
      • 通過特定函數(如C標準庫中的 printf() → 底層調用 write())或直接代碼觸發
    • 用戶態 → 內核態切換
      • 通過軟中斷(如 int 0x80)或專用指令(如 syscall)進入內核態
    • 執行內核服務
      • 內核根據系統調用號(如 Linux 的 read 對應 0 號)調用對應的內核函數。
    • 返回結果
      • 內核將結果傳遞給用戶程序,回到用戶態繼續執行。
  • (2) 系統調用號(syscall number)

    • 每個系統調用對應唯一編號,通過寄存器傳遞(如 x86-64 Linux 中,rax 存放系統調用號)。
    • 示例:Linux 的 sys_write 在 x86-64 中的調用號是 1,可通過命令 grep __NR_write /usr/include/asm/unistd_64.h 查看。
  • (3) 參數傳遞

    • 寄存器傳遞參數:參數按順序放入 rdi, rsi, rdx, r10, r8, r9(x86-64 架構)。
      在這里插入圖片描述

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

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

相關文章

17 | 實現簡潔架構的 Biz 層

提示: 所有體系課見專欄:Go 項目開發極速入門實戰課;歡迎加入 云原生 AI 實戰 星球,12 高質量體系課、20 高質量實戰項目助你在 AI 時代建立技術競爭力(聚焦于 Go、云原生、AI Infra);本節課最終…

idea更新git代碼報錯No Git Roots

idea更新git代碼報錯: No Git Roots None of configured Git roots are under Git. The configured directory must have ".git directory in it.但是本地項目里是存在.git文件的,就是突然間不能更新代碼了 然后嘗試重新拉新項目代碼提示: Git i…

Webpack 知識點整理

? 1. 對 webpack 的理解?解決了什么問題? Webpack 是前端工程化領域的核心工具,其核心定位是模塊打包器(Module Bundler),通過將各類資源(JS、CSS、圖片等)視為模塊并進行智能整合…

[Hello-CTF]RCE-Labs超詳細WP-Level13Level14(PHP下的0/1構造RCE命令簡單的字數限制RCE)

Level 13 源碼分析 這題又回到了 PHP重點關注preg_match("/[A-Za-z0-9\"%*,-.\/:;>?[\]^|]/", $cmd)禁用了所有數字, 并且回到了 PHP, 沒辦法用上一關的方法進行繞過但是比起上一關, 給我們少繞過了 &, ~, _似乎有其他方法 解題分析 利用 $(()) 和 …

Qt 控件概述 QWdiget 1.1

目錄 qrc機制 qrc使用 1.在項目中創建一個 qrc 文件 2.將圖片導入到qrc文件中 windowOpacity: cursor 光標 cursor類型 自定義Cursor font tooltip focusPolicy styleSheet qrc機制 之前提到使用相對路徑的方法來存放資源,還有一種更好的方式…

【eNSP實戰】將路由器配置為DHCP服務器

拓圖 要求: 為 office100 和 office200 分別配置地址池 AR1接口配置 interface GigabitEthernet0/0/0ip address 192.168.100.1 255.255.255.0 # interface GigabitEthernet0/0/1ip address 192.168.200.1 255.255.255.0 AR1路由器上創建office100地址池 [AR1…

數據結構——順序表seqlist

前言:大家好😍,本文主要介紹了數據結構——順序表部分的內容 目錄 一、線性表的定義 二、線性表的基本操作 三.順序表 1.定義 2. 存儲結構 3. 特點 四 順序表操作 4.1初始化 4.2 插入 4.2.1頭插 4.2.2 尾插 4.2.3 按位置插 4.3 …

OSPF | LSDB 鏈路狀態數據庫 / SPF 算法 / 實驗

注:本文為 “OSPF | LSDB / SPF ” 相關文章合輯。 LSDB 和 SPF 算法 瀟湘浪子的蹋馬骨湯 發布 2019-02-15 23:58:46 1. 鏈路狀態數據庫 (LSDB) 鏈路狀態協議除了執行洪泛擴散鏈路狀態通告(LSA)以及發現鄰居等任務外,其第三個任…

前端---CSS(前端三劍客)

1.基本語法規范 選擇器 {?條/N條聲明} ? 選擇器決定針對誰修改 (找誰) ? 聲明決定修改啥. (?啥) ? 聲明的屬性是鍵值對. 使? ; 區分鍵值對, 使? : 區分鍵和值 比如&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta…

【C++】 —— 筆試刷題day_6

刷題day_6&#xff0c;繼續加油哇&#xff01; 今天這三道題全是高精度算法 一、大數加法 題目鏈接&#xff1a;大數加法 題目解析與解題思路 OK&#xff0c;這道題題目描述很簡單&#xff0c;就是給我們兩個字符串形式的數字&#xff0c;讓我們計算這兩個數字的和 看題目我…

todolist docker 小工具

參考鏈接 前排提示 沒有中文&#xff0c;可使用瀏覽器 翻譯 前提 安裝docker安裝docker-compose 下載倉庫 git clone https://github.com/JordanKnott/taskcafe進行安裝 cd taskcafe docker-compose -p taskcafe up -d服務啟動后會監聽在 3333 端口上&#xff0c;通過瀏覽器…

Unity--GPT-SoVITS接入、處理GPTAPI的SSE響應流

GPT-SoVITS GPT-SoVITS- v2&#xff08;v3也可以&#xff0c;兩者對模型文件具有兼容&#xff09; 點擊后 會進入新的游覽器網頁 ----- 看了一圈&#xff0c;發現主要問題集中在模型的訓練很需要CPU&#xff0c;也就是模型的制作上&#xff0c;問題很多&#xff0c;如果有現有…

《TypeScript 快速上手:類型、編譯與嚴格模式的簡明教程》

一、TypeScript介紹 在引入編程社區 20 多年后&#xff0c;JavaScript 現在已成為有史以來應用最廣泛的跨平臺語言之一。JavaScript 最初是一種用于向網頁添加微不足道的交互性的小型腳本語言&#xff0c;現已發展成為各種規模的前端和后端應 用程序的首選語言。雖然用 JavaSc…

ROS2 系統架構

1.操作系統層 ros2是基于Linux、Windows、macOS系統建立的&#xff0c;這一層為ros2提供了各種基礎的硬件驅動&#xff0c;比如網卡驅動&#xff0c;常用USB驅動和常用攝像頭驅動等。 2.DDS實現層 ros2的核心通信是采用第三方的通信組件來實現的&#xff0c;這個第三方就是數…

【HTML】二、列表、表格

文章目錄 1、列表1.1 無序列表1.2 有序列表1.3 定義列表 2、表格2.1 定義2.2 表格結構標簽2.3 合并單元格 1、列表 列表分為&#xff1a; 無序列表有序列表定義列表&#xff1a;一個標題下有多個小分類 1.1 無序列表 ul嵌套li&#xff0c;ul是無序列表&#xff0c;li是列表…

redis zset基本介紹以及底層實現

ZSet&#xff08;Sorted Set&#xff09;有序集合 介紹 Redis 中的有序集合(Sorted Set)是在集合(Set)的基礎上,為每個成員關聯了一個分數(score)。這個分數可以用來對集合中的成員進行排序。 有序集合保留了集合不能有重復成員的特性&#xff08;成員不能重復&#xff0c;分值…

政策助力,3C 數碼行業數字化起航

政策引領&#xff0c;數字經濟浪潮來襲 在當今時代&#xff0c;數字經濟已成為全球經濟發展的核心驅動力&#xff0c;引領著新一輪科技革命和產業變革的潮流。我國深刻洞察這一發展趨勢&#xff0c;大力推進數字化經濟發展戰略&#xff0c;為經濟的高質量發展注入了強大動力。 …

IntelliJ IDEA 快捷鍵系列:重命名快捷鍵詳解

目錄 引言一、默認重命名快捷鍵1. Windows 系統?2. Mac 系統? 二、操作步驟與技巧1. 精準選擇重命名范圍?2. 智能過濾無關內容? 三、總結 引言 在代碼重構中&#xff0c;?重命名變量、類、方法? 是最常用的操作之一。正確使用快捷鍵可以極大提升開發效率。本文針對 ?Ma…

文檔搜索引擎

首先獲取很多網頁(爬蟲->一個http客戶端,發送http請求獲取http響應結果(就是網站))(批量化的獲取很多的頁面) 再根據用戶輸入的查詢詞,在網頁中進行查找 用戶輸入查詢詞之后,如何讓查詢詞和當前這些網頁進行匹配 ->使用倒排索引 倒排索引 1.文檔: 每個待搜索的網頁(被爬…

開源工具利器:Mermaid助力知識圖譜可視化與分享

在現代 web 開發中&#xff0c;可視化工具對于展示流程、結構和數據關系至關重要。Mermaid 是一款強大的 JavaScript 工具&#xff0c;它使用基于 Markdown 的語法來呈現可定制的圖表、圖表和可視化。對于展示流程、結構和數據關系至關重要。通過簡單的文本描述&#xff0c;你可…