目錄
1.什么是操作系統:
2.操作系統有哪些功能?
3.常見的操作系統有哪些
4.用戶態和內核態
5.內核態權限這么高,為什么不還要用戶態?
6.用戶態和內核態是如何切換的?
7.系統調用
8,系統調用的過程
???????1.什么是操作系統:
(1)操作系統(OS)是管理計算機軟硬件資源的程序,運行在你計算機上的所有軟件都通過操作系統調用內存和磁盤等硬件
(2)操作系統是硬件管理員,屏蔽了硬件的復雜性
(3)操作系統的核心是內核(Kernel),負責內存,硬件,文件系統,以及應用程序管理.
區分內核和CPU:
1.內核屬于操作系統層面,CPU屬于硬件
2.CPU提供運算和處理指令的能力,內核負責系統管理
2.操作系統有哪些功能?
(1)進程和線程的管理:進程的創建,撤銷,阻塞,喚醒,進程間的通信等
在Window系統直觀的表現是任務資源管理器,可以看到同一個軟件,卻分出了多個不同的線程
Java的JUC包和操作系統線程之間的關系:
JUC構建在Java線程模型之上,而Java線程最終依賴操作系統
(2).存儲管理:內存的分配和管理,外存(磁盤)的分配和管理
(3).文件管理:文件的創建,讀寫,及刪除等
最直接的體現是Window資源管理器,新建,打開,編輯,刪除文件
(4)設備管理
完成設備(輸入輸出設備和外部存儲設備等)的請求或釋放,以及設備啟動等功能
這里的輸入輸出設備有鍵盤,顯示器等,外部存儲設備有U哦按,磁帶等
設備啟動過程:(以U盤為例)
設備檢測,設備驅動加載,設備初始化和設備就緒
(5)網絡管理
操作系統提供計算機網絡的使用
(6)安全管理
用戶的身份認證,訪問控制,文件加密等
3.常見的操作系統有哪些
window(打游戲好用),linux(編程),macos(編程體驗和linux相當,還有自己的蘋果生態)
4.用戶態和內核態
進程在系統上的運行分為兩個級別
(1).用戶態:讀取用戶程序的數據,較低權限
(2).內核態:幾乎可以訪問計算機的任何資源.當操作系統接收到系統調用請求時,就會從用戶態切換到內核態,執行相應的系統調用并將結果返回給進程后,切換回用戶態
開銷大,需要進行一系列上下文切換和權限檢查,不利于系統的性能和穩定性,因此盡量少的使用內核態
5.內核態權限這么高,為什么不還要用戶態?
(1).一些指令比較危險,比如內存分配,設置時鐘,IO處理等,這些指令需要被限制在內核中運行,也叫特權指令
(2).只有內核態,所有的程序必須共享系統資源,資源的競爭和沖突會影響系統性能和效率
6.用戶態和內核態是如何切換的?
1.系統調用,為了實現功能主動切換到內核態
2.中斷:當外圍設備完成用戶請求的操作后,會向CPU發送相應的中斷信號,這時CPU會暫停執行下一條即將執行的指令轉而去執行與中斷程序相對應的處理程序
3異常:CPU在執行用戶態下的程序時,發生了某些不可預知的異常,會切換到處理次異常的內核相關程序中去
7.系統調用
我們運行的程序基本都是用戶態,當需要訪問系統資源時需要通過系統調用向操作系統提出服務請求并讓其代為完成,包括內存管理,存儲管理,進程管理,文件管理,網絡管理等
8,系統調用的過程
1用戶態因為權限不足發起系統調用
2,發生中斷后,CPU停止執行當前程序跳轉到中斷處理程序開始執行內核程勛
3.系統調用完成后操作系統使用特權指令切換回用戶態,回復用戶態的上下文,繼續執行用戶程序包