操作系統學習記錄

系統篇

內核

應用和底層硬件(CPU、內存、硬盤等)的連接橋梁。

用戶態和內核態

CPU和進程可以在兩種態下運行。
內核態可以直接訪問所有硬件資源,用戶態需要通過“系統調用”陷入到內核態才能否則只能訪問用戶空間地址的內存(虛擬內存)。

什么時候能從用戶態陷入到內核態

就兩字——中斷!
中斷可能是由于系統調用(用戶態主動陷入)、異常(缺頁、除0)、外設中斷(硬盤讀寫完成等)三種情況產生。

什么是系統調用

程序需要訪問硬件資源時候,例如內存、硬盤、網卡,就會“系統調用”陷入內核。
一次系統調用會發生兩次CPU上下文切換(CPU上下文指的是CPU寄存器和程序計數器
第一次是從用戶態切換到內核態,寄存器原來是用戶態的指令位置需要先保存起來,然后更新成內核態指令的位置,最后跳轉去內核態執行任務。
第二次是內核態切換回用戶態,寄存器恢復為用戶態的指令位置,回到用戶態運行進程。

用戶態和內核態是如何切換的

每個進程都有兩個棧,用戶棧和內核棧。運行在哪個態就會使用哪個棧。
態的切換最重要的就是棧的切換!
實際上就是把用戶態的一些寄存器值壓入到內核態棧,從內核態返回時彈棧。

什么是中斷?為什么要有中斷(外設中斷)

這是系統用來相應硬件設備請求的一種機制,會打斷正在執行的進程,然后調用內核中的中斷處理程序來響應請求。這是一種異步的處理事件的機制,可以提高系統的并發能力。
那為什么要有這個中斷,舉個例子,點了個外賣,沒有中斷(外賣員給你打電話)的話,你就得一直盯著(同步)或者隔三岔五(CPU輪詢)看一眼外賣進度,這太耽誤事了。有中斷(外賣員到了打電話),你就可以心安理得干別的事情,等外賣來了你再停下去處理外賣。

什么是硬件中斷和軟件中斷

Intel的CPU提供了三種中斷程序執行的機制,分別是:

  • 中斷(interrupt):點了下鼠標、敲了下鍵盤,這屬于異步事件
  • 異常(exception):CPU執行指令時發現了錯誤,比如除0、缺頁,這屬于同步事件
  • INT指令:INT指令后面跟了一個數字,相當于直接告訴CPU中斷號。Linux用的是INT 0x80

前兩者屬于硬件中斷,因為是硬件(外設或者CPU)自動觸發的
INT指令屬于軟件中斷,是程序觸發的

什么是硬中斷和軟中斷

由CPU硬件實現的中斷機制是硬中斷,中斷、異常、INT指令都是CPU實現的中斷機制
由軟件實現的中斷機制是軟中斷,比如Linux實現的軟中斷守護進程
二者效果相同都是中斷當前程序而去執行中斷處理程序,處理完返回執行原程序

為什么要有軟中斷

主要就是讓硬中斷盡可能簡單,提高系統響應速度。
比如網卡接受處理數據包這種會比較慢,而硬中斷資源很寶貴,占著不放會影響別的硬中斷相應(比如鼠標卡了)。而且中斷處理程序相應中斷時候,可能會臨時關閉中斷,意味著一個中斷沒處理完,別的中斷都不能被處理。這不行!!!
所以Linux將中斷分為上下兩部分

  • 上半部分用來快速處理和硬件緊密相關或者時間敏感的時期
  • 下半部分用來延遲處理上半部分未完成的工作,一般由內核守護進程完成。就是解耦了,異步處理。這一部分是通過對軟中斷標記數組的某一個位置做一個標記,然后內核守護進程會輪詢看數組哪個位置被標記為1了。按照標記位去找對應的處理程序。

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

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

相關文章

P8630 [藍橋杯 2015 國 B] 密文搜索

P8630 [藍橋杯 2015 國 B] 密文搜索 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)https://www.luogu.com.cn/problem/P8630 題目分析 基本上是hash的板子,但實際上對于密碼串,只要判斷主串中任意連續的八個位置是否存在密碼串即可;那么我們…

PHP學習筆記1——html標簽以及頭部元素頁面布局

html是一種超文本標識符號&#xff0c;用來在網頁中指定顯示頁面格式顯示 基本格式 <!doctype html> <html><head><title></title> </head><body> </body></html> 包含聲明&#xff0c;框架html&#xff0c;頭部head&a…

怎么把公眾號文章鏈接做成二維碼?掃碼查看公眾號推文的方法

公眾號是現在給用戶分享內容的一種方式&#xff0c;通過輸出優質的公眾號文章內容來為關注者提供信息和內容。當我們發布公眾號文章后&#xff0c;有些情況下會需要將公眾號內容生成二維碼之后&#xff0c;印刷到傳單、展板上來顯示&#xff0c;那么如何將公眾號的文章鏈接轉二…

Commonjs 和 Es Module詳解

一 前言 今天我們來深度分析一下 Commonjs 和 Es Module&#xff0c;希望通過本文的學習&#xff0c;能夠讓大家徹底明白 Commonjs 和 Es Module 原理&#xff0c;能夠一次性搞定面試中遇到的大部分有關 Commonjs 和 Es Module 的問題。 帶上疑問開始今天的分析&#xff1a; …

數字化轉型導師堅鵬:城市數字化轉型頂層規劃方法

城市數字化轉型頂層規劃方法 課程背景&#xff1a; 很多城市存在以下問題&#xff1a; 不知道如何系統地開展數字化轉型工作&#xff1f; 不清楚如何科學地制定數字化轉型戰略&#xff1f; 不知道如何高效地實施數字化轉型戰略&#xff1f; 課程特色&#xff1a; 有…

基于SpringBoot的在線拍賣系統設計與實現(源碼+調試+LW+PPT)

項目描述 臨近學期結束&#xff0c;還是畢業設計&#xff0c;你還在做java程序網絡編程&#xff0c;期末作業&#xff0c;老師的作業要求覺得大了嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于SpringBoot的在線拍…

C++編程知識

&#xff08;1&#xff09;把數組中的所有元素賦值為一個值 memset(arr,0x3f,sizeof(arr))//最大值 memset(arr,0,sizeof(distance));//賦值為0&#xff08;2&#xff09;找最大最小值的下標 int zuixiao-1//設置dist-1只是因為方便選取第一個數作為比較對象而已 for(i0;i<…

VSCode將某個字符替換為換行符并換行顯示

不想每次去查了&#xff0c;我自己寫博客記錄一下~~~ 我的需求是一個一行的數據&#xff0c;用逗號分開&#xff0c;我希望豎著看有規律點&#xff0c;類似這樣 快捷鍵其實想 optioncommandf &#xff0c;但是我每次都記不住&#xff0c;大家可以直接在編輯欄找到replace的地方…

vite 快速搭建 Vue3.0項目

一、初始化項目 npm create vite-app <project name>二、進入項目目錄 cd ……三、安裝依賴 npm install四、啟動項目 npm run dev五、配置項目 安裝 typescript npm add typescript -D初始化 tsconfig.json //執行命令 初始化 tsconfig.json npx tsc --init …

Unity Meta XR SDK 快捷配置開發工具【Building Block/Quick Action/OVRCameraRigInteraction】

文章目錄 &#x1f4d5;教程說明&#x1f4d5;Building Block&#x1f4d5;Quick Action&#x1f4d5;OVRCameraRigInteraction 此教程相關的詳細教案&#xff0c;文檔&#xff0c;思維導圖和工程文件會放入 Spatial XR 社區。這是一個高質量 XR 社區&#xff0c;博主目前在內…

【Swift】NSPopUpButton用法和示例

1.簡介 NSPopUpButton 是 macOS 開發中常用的控件之一&#xff0c;它提供了一個彈出菜單&#xff0c;用戶可以從中選擇一個選項。NSPopUpButton 可以包含多個 NSMenuItem 對象&#xff0c;每個 NSMenuItem 表示一個選項。 2.常用方法 下面是一些 NSPopUpButton 的常用功能和…

進程線程的通信-day5

1、將互斥機制的代碼實現重新敲一遍。 #include<myhead.h>//臨界資源 int num520;//1、創建一個互斥鎖變量 pthread_mutex_t mutex;void *task1(void *arg); void *task2(void *arg); int main(int argc, const char *argv[]) {//2、初始化互斥鎖pthread_mutex_init(&am…

Shiro-14-subject 主體

理解Apache Shiro中的主題 毫無疑問&#xff0c;Apache Shiro中最重要的概念是主題。 “主題”只是一個安全術語&#xff0c;它指的是應用程序用戶特定于安全的“視圖”。Shiro主題實例代表了單個應用程序用戶的安全狀態和操作。 這些操作包括: 身份驗證(登錄) 授權(訪問控…

了解JSON的作用及其方法

什么是json JSON&#xff08;JavaScript Object Notation&#xff09;是一種輕量級的數據交換格式采用完全獨立編程語言的文本格式存儲和表示數據&#xff08;就是字符串&#xff09;。它基于JavaScript語法&#xff0c;但可以被多種編程語言使用和解析。JSON以鍵值對的形式存…

高光譜圖像降噪方法(2D Wavelet, 3D Wavelet, FORPDN, HyRes等方法)

近年來&#xff0c;隨著遙感應用的不斷深入&#xff0c;高光譜圖像研究已經成為遙感領域發展最迅速的技術之一。與其他傳統成像技術相比&#xff0c;高光譜圖像具有更多優勢&#xff1a;更豐富的信息量、納米級的光譜分辨率以及范圍更廣且連續的光譜。因此&#xff0c;在農業、…

C#用反射實現兩個類的對象之間相同屬性的值的復制

目錄 1.適用于創建實體的時候從一個實體作為數據源賦值 2.適用于沒有創建實體&#xff0c;兩個實體之間數據的轉換 1.適用于創建實體的時候從一個實體作為數據源賦值 /// <summary> /// 反射實現兩個類的對象之間相同屬性的值的復制 /// 適用于初始化新實體 /// </…

選擇VR全景行業,需要了解哪些內容?

近年來&#xff0c;隨著虛擬現實、增強現實等技術的持續發展&#xff0c;VR全景消費市場得以穩步擴張。其次&#xff0c;元宇宙行業的高速發展&#xff0c;也在進一步拉動VR全景技術的持續進步&#xff0c;帶動VR產業的高質量發展。作為一種戰略性的新興產業&#xff0c;國家和…

OJ_學生信息系統

題干 輸入樣例&#xff1a; 5 zhaoyi 70 80 90 240 qianer 65 32 77 174 sunsan 100 55 68 223 lisi 86 77 90 253 wangwu 100 59 66 225 輸出樣例&#xff1a; *[qianer] 65 32 77 *[sunsan] 100 55 68 *[wangwu] 100 59 66 lisi 86 77 90 zhaoyi 70 80 90 wangwu 100 59 6…

k8s-權限管理

1. 身份認證 我們在目前的k8s集群環境里面&#xff0c;只能在master節點上執行kubectl的一些命令&#xff0c;在其他節點上執行就會報錯 # 看一下是不是 [rootnode1 ~]# kubectl get nodes E0220 12:50:15.695133 6091 memcache.go:238] couldnt get current server API gro…

云打印api搭建,云打印api怎么對接?

相信近來一段時間云打印概念的火熱讓很多企業和App都有開展打印業務的想法&#xff0c;但是云打印技術的開發又需要有打印設備的支持&#xff0c;這個時候我們可以找到專業的云打印服務平臺進行api對接。那么云打印api搭建&#xff0c;云打印api怎么對接&#xff1f;今天來一起…