操作系統——概述

      網友投稿 616 2025-03-31

      文章目錄

      什么是操作系統

      操作系統結構

      Linux 內核 vs Windows 內核

      內核

      操作系統——概述

      什么是內核呢?

      內核有哪些能力呢?

      內核是怎么工作的?

      計算機啟動過程

      系統調用

      UNIX 系統調用

      Windows系統調用

      什么是操作系統

      不知道你有沒有產生過這些疑問:

      桌面上的圖標到底是啥?憑啥我在鼠標上一雙擊,就會出來一個美麗的畫面?這都是從哪里跑出來的?

      憑什么我在鍵盤上噼里啪啦地敲,某個位置就會顯示我想要的那些字符?

      電腦怎么知道我鼠標點擊的是這個地方,又是怎么知道我要輸入的是這個地方?

      我在鍵盤上點“a”,是誰在顯示器上畫出“a”這個圖像呢?

      為什么我一回車,這些字符就發到遙遠的另外一臺機器上去了?

      現代計算機系統由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網絡接口以及各種輸入/輸出設備構成。

      然而,程序員不會直接和這些硬件打交道,而且每位程序員不可能會掌握所有計算機系統的細節,這樣我們就不用再編寫代碼了,所以在硬件的基礎之上,計算機安裝了一層軟件,這層軟件能夠通過響應用戶輸入的指令達到控制硬件的效果,從而滿足用戶需求,這種軟件稱之為 操作系統,它的任務就是為用戶程序提供一個更好、更簡單、更清晰的計算機模型。

      我們一般常見的操作系統主要有Windows、Linux、FreeBSD 或 OS X,這種帶有圖形界面的操作系統被稱為 圖形用戶界面(Graphical User Interface, GUI),而基于文本、命令行的通常稱為 Shell。

      這是一個操作系統的簡化圖,最下面的是硬件,硬件包括芯片、電路板、磁盤、鍵盤、顯示器等我們上面提到的設備,在硬件之上是軟件。大部分計算機有兩種運行模式:內核態和 用戶態,軟件中最基礎的部分是操作系統,它運行在 內核態中,內核態也稱為 管態和 核心態,它們都是操作系統的運行狀態,只不過是不同的叫法而已。操作系統具有硬件的訪問權,可以執行機器能夠運行的任何指令。軟件的其余部分運行在 用戶態下。

      操作系統結構

      Linux 內核 vs Windows 內核

      Windows 和 Linux 可以說是我們比較常見的兩款操作系統的。

      Windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它并不開源,所以要想接觸源碼得加入 Windows 的開發團隊中。

      對于服務器使用的操作系統基本上都是 Linux,而且內核源碼也是開源的,任何人都可以下載,并增加自己的改動或功能,Linux 最大的魅力在于,全世界有非常多的技術大佬為它貢獻代碼。

      這兩個操作系統各有千秋,不分伯仲。

      操作系統核心的東西就是內核,這次我們就來看看,Linux 內核和 Windows 內核有什么區別?

      內核

      什么是內核呢?

      計算機是由各種外部硬件設備組成的,比如內存、cpu、硬盤等,如果每個應用都要和這些硬件設備對接通信協議,那這樣太累了。

      所以,這個中間人就由內核來負責,讓內核作為應用連接硬件設備的橋梁,應用程序只需關心與內核交互,不用關心硬件的細節。

      內核有哪些能力呢?

      現代操作系統,內核一般會提供 4 個基本能力:

      管理進程、線程,決定哪個進程、線程使用 CPU,也就是進程調度的能力;

      管理內存,決定內存的分配和回收,也就是內存管理的能力;

      管理硬件設備,為進程與硬件設備之間提供通信能力,也就是硬件通信能力;

      提供系統調用,如果應用程序要運行更高權限運行的服務,那么就需要有系統調用,它是用戶程序與操作系統之間的接口。

      內核是怎么工作的?

      內核具有很高的權限,可以控制 cpu、內存、硬盤等硬件,而應用程序具有的權限很小,因此大多數操作系統,把內存分成了兩個區域:

      內核空間,這個內存空間只有內核程序可以訪問;

      用戶空間,這個內存空間專門給應用程序使用;

      用戶空間的代碼只能訪問一個局部的內存空間,而內核空間的代碼可以訪問所有內存空間。

      因此,當程序使用用戶空間時,我們常說該程序在用戶態執行,而當程序使內核空間時,程序則在內核態執行。

      應用程序如果需要進入內核空間,就需要通過「系統調用」,下面來看看系統調用的過程:

      內核程序執行在內核態,用戶程序執行在用戶態。當應用程序使用系統調用時,會產生一個中斷。發生中斷后, CPU 會中斷當前在執行的用戶程序,轉而跳轉到中斷處理程序,也就是開始執行內核程序。內核處理完后,主動觸發中斷,把 CPU 執行權限交回給用戶程序,回到用戶態繼續工作。

      Linux 內核由如下幾部分組成:內存管理、進程管理、設備驅動程序、文件系統和網絡管理等.如圖:

      當今 Windows 7、Windows 10 使?的內核叫 Windows NT,NT 全稱叫 New Technology。

      下圖是 Windows NT 的結構圖?:

      計算機啟動過程

      當你輕輕按下計算機的啟動按鈕時,你的主板就加上電了。

      主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統,一般有 BIOS 芯片、I/O 控制芯片、鍵盤和面板控制開關接口、指示燈插接件、擴充插槽、主板及插卡的直流電源供電接插件等元件。

      在主板上,有一個東西叫ROM(Read Only Memory,只讀存儲器)。這和咱們平常說的內存RAM(Random Access Memory,隨機存取存儲器)不同。

      咱們平時買的內存條是可讀可寫的,這樣才能保存計算結果。而 ROM 是只讀的,上面早就固化了一些初始化的程序,也就是BIOS(Basic Input and Output System,基本輸入輸出系統)。

      如果你自己安裝過操作系統,剛啟動的時候,按某個組合鍵,顯示器會彈出一個藍色的界面。能夠調整啟動順序的系統,就是我說的 BIOS,然后我們就可以先執行它。

      然后操作系統會詢問 BIOS 獲取配置信息。對于每個設備來說,會檢查是否有設備驅動程序。如果沒有,則會向用戶詢問是否需要插入 CD-ROM驅動(由設備制造商提供)或者從 Internet 上下載。一旦有了設備驅動程序,操作系統會把它們加載到內核中,然后初始化表,創建所需的后臺進程,并啟動登錄程序或GUI。

      系統調用

      你會發現,一個項目要想順暢進行,需要用到公司的各種資源,比如說蓋個公章、開個證明、申請個會議室、打印個材料等等。這里有個兩難的權衡,一方面,資源畢竟是有限的,甚至是涉及機密的,不能由項目組濫取濫用;另一方面,就是效率,咱是一個私營企業,保證項目申請資源的時候只跑一次,這樣才能比較高效。

      為了平衡這一點,一方面涉及核心權限的資源,還是應該被公司嚴格把控,審批了才能用;另外一方面,為了提高效率,最好有個統一的辦事大廳,明文列出提供哪些服務,誰需要可以來申請,然后就會有回應。

      在操作系統中,也有同樣的問題,例如多個進程都要往打印機上打印文件,如果隨便亂打印進程,就會出現同樣一張紙,第一行是 A 進程輸出的文字,第二行是 B 進程輸出的文字,全亂套了。所以,打印機的直接操作是放在操作系統內核里面的,進程不能隨便操作。但是操作系統也提供一個辦事大廳,也就是系統調用(System Call)。

      系統調用也能列出來提供哪些接口可以調用,進程有需要的時候就可以去調用。這其中,立項是辦事大廳提供的關鍵服務之一。同樣,任何一個程序要想運行起來,就需要調用系統調用,創建進程。

      如果一個進程在用戶態下運行用戶程序,例如從文件中讀取數據。那么如果想要把控制權交給操作系統控制,那么必須執行一個異常指令或者系統調用指令。操作系統緊接著需要參數檢查找出所需要的調用進程。

      然后執行系統調用,把控制權移交給系統調用下面的指令。大致來說,系統調用就像是執行了一個特殊的過程調用,但是只有系統調用能夠進入內核態而過程調用則不能進入內核態。

      UNIX 系統調用

      為了能夠了解具體的調用過程,下面我們以 read 方法為例來看一下調用過程。

      下面,我們會列出一些常用的 POSIX 系統調用,POSIX 系統調用大概有 100 多個,它們之中最重要的一些調用見下表

      進程管理

      文件管理

      目錄和文件系統管理

      其他

      上面的系統調用參數中有一些公共部分,例如 pid 系統進程 id,fd 是文件描述符,n 是字節數,position 是在文件中的偏移量、seconds 是流逝時間。

      Windows系統調用

      UNIX 程序由執行某些操作或執行其他操作的代碼組成,進行系統調用以執行某些服務。Windows 系統則不同,Windows 應用程序通常是由事件驅動的。主程序會等待一些事件發生,然后調用程序去處理。最簡單的事件處理是鍵盤敲擊和鼠標滑過,或者是鼠標點擊,或者是插入 USB 驅動,然后操作系統調用處理器去處理事件,更新屏幕和更新程序內部狀態。這是與 UNIX 不同的設計風格。

      當然,Windows 也有系統調用。在 UNIX 中,系統調用(比如 read)和系統調用所使用的調用庫(例如 read)幾乎是一對一的關系。而在 Windows 中,情況則大不相同。首先,函數庫的調用和實際的系統調用幾乎是不對應的。微軟定義了一系列過程,稱為Win32應用編程接口(Application Programming Interface),程序員通過這套標準的接口來實現系統調用。這個接口支持從 Windows 95 版本以來所有的 Windows 版本。

      Win32 API 有大量的調用,用來管理視窗、幾何圖形、文本、字體、滾動條、對話框、菜單以及 GUI 的其他功能。為了使圖形子系統在內核態下運行,需要系統調用,否則就只有函數庫調用。

      我們把關注點放在和 Win32 系統調用中來,我們可以簡單看一下 Win32 API 中的系統調用和 UNIX 中有什么不同(并不是所有的系統調用)

      Linux Windows 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel單元格中如何添加項目符號
      下一篇:文檔excel - 簡化你的辦公室工作
      相關文章
      亚洲国产精品网站久久| 亚洲无线一二三四区手机| 亚洲中文字幕AV每天更新| 亚洲欧洲日韩国产综合在线二区| 亚洲无码精品浪潮| 亚洲国产精品无码久久九九| 国产成人高清亚洲一区久久| 亚洲AV无码片一区二区三区| 亚洲色大成网站www尤物| 亚洲中文字幕久久精品蜜桃| 亚洲综合色丁香婷婷六月图片| 亚洲国产片在线观看| 久久精品国产亚洲AV麻豆网站| 亚洲成A人片在线观看WWW| 久久被窝电影亚洲爽爽爽| 国产V亚洲V天堂无码久久久| 亚洲成色WWW久久网站| 国产亚洲欧洲Aⅴ综合一区| 亚洲av无码一区二区三区乱子伦 | 久久亚洲色WWW成人欧美| 亚洲丶国产丶欧美一区二区三区| 亚洲a∨无码精品色午夜| 亚洲 自拍 另类小说综合图区| 亚洲成人一区二区| 国产亚洲精品资在线| 亚洲精品国精品久久99热一| 久久亚洲精品中文字幕无码| 久久国产亚洲电影天堂| 亚洲精品成人久久| 丁香婷婷亚洲六月综合色| 亚洲精品无码mⅴ在线观看| 亚洲JIZZJIZZ中国少妇中文| 精品国产亚洲男女在线线电影 | 亚洲人成电影网站| 亚洲精品无码不卡在线播放| 亚洲AV无码专区日韩| 亚洲精品成人网站在线观看| 亚洲人成依人成综合网| 亚洲伊人久久大香线蕉啊| 亚洲爆乳AAA无码专区| 亚洲精品国产日韩无码AV永久免费网 |