作業系統第一章

罪鬱發表於2020-12-05

作業系統第一章

作業系統的概念、功能和定義

熟悉的作業系統

Windows(很熟悉吧,嘿嘿)
在這裡插入圖片描述
Android(安卓,熟悉的手機系統)
在這裡插入圖片描述
IOS(蘋果手機的作業系統)
在這裡插入圖片描述
MAC OS(蘋果PC的作業系統)
在這裡插入圖片描述
linux(超好用的檔案管理,就是不太會用)
在這裡插入圖片描述

知識點總覽

在這裡插入圖片描述

作業系統的概念(定義)

首先講一講計算機系統的層次結構
在這裡插入圖片描述
硬體:如CPU、記憶體、硬碟等
應用程式:如QQ、Chrome、LOL、吃雞等
為啥使用者還能沾到點作業系統呢,畢竟你也是要操作到一點點系統的東西(控制皮膚啥的)

而作業系統在這中間,需要為他們提供幫助

  1. 負責管理協調硬體、軟體等計算機資源的工作
  2. 為上層的應用程式、使用者提供簡單易用的服務
  3. 作業系統是系統軟體,而不是硬體

作業系統( Operating System,OS) 是指控制和管理整個計算機系統的硬體和軟體資源,併合理地組織排程計算機的工作和資源的分配,以提供給使用者和其他軟體方便的介面和環境,它是計算機系統中最基本的系統軟體。(這是書上的定義)

直觀的例子
開啟Windows的工作管理員
在這裡插入圖片描述

作業系統的功能和目標

功能分析:

我們可以針對他需要做的任務進行分析作業系統作為系統資源的管理者(這些資源包括軟體、硬體、檔案等),需要提供什麼功能?

在這裡插入圖片描述
舉例:
用qq和好友視訊聊天:
Step1:在各個資料夾中找到QQ安裝的位置(如D:/Tencent/QQ/Bin)(這一步就是檔案管理,對資料夾進行操作)
Step 2:雙擊開啟QQ.exe(這一步就是儲存器管理,要把QQ的程式放入主存)
Step3: QQ程式正常執行(這一步就是處理機管理,要用CPU執行QQ)
Step 4: 開始和朋友視訊聊天(這一步就是裝置管理,給予QQ使用攝像頭的許可權)

作業系統作為使用者與計算機硬體之間的介面,要為其上層的使用者、應用程式提供簡單易用的服務,需要實現什麼功能?

在這裡插入圖片描述
這邊提供的不管是命令介面還是程式介面,都被稱為使用者介面

命令介面:
聯機命令介面:使用者說一句,系統做一句

舉例:
聯機命令介面=互動式命令介面
類似於DOS框裡面的指令執行

離線命令介面:使用者說一堆,系統做一堆

舉例:
離線命令介面=批處理命令介面
類似於.bat檔案的執行,直接進行批處理(多命令一起執行)

程式介面(允許使用者通過程式間接使用):由一組系統呼叫組成(程式介面=系統呼叫)

舉例:
類似於.dll檔案,擴充套件檔案,只能由程式呼叫,使用者想要直接使用是不可以的

注:系統呼叫=系統呼叫命令=廣義指令

圖形使用者介面(GUI):使用者可以使用形象的圖形介面進行操作,而不再需要記憶複雜的命令、引數

舉例:
如果不是圖形介面需要輸入命令列才能開啟檔案,但是有了圖形介面只需要雙擊就可以開啟檔案

作業系統作為最接近硬體的層次,需要在純硬體的基礎上實現什麼功能?

功能:對硬體機器的擴充

沒有任何軟體支援的計算機成為裸機。在裸機上安裝的作業系統,可以提供資源管理功能和方便使用者的服務功能,將裸機改造成功能更強、使用更方便的機器

通常把覆蓋了軟體的機器成為擴充機器,又稱之為虛擬機器

舉例:
硬體是材料和工具
作業系統是工人
可以變成房子、帆船、匹諾曹

使用者就是使用工人利用材料和工具做出來的東西(直接使用房子啊啥的)

知識點你回顧

在這裡插入圖片描述

作業系統的四個特徵

在這裡插入圖片描述
作業系統有併發、共享、虛擬和非同步四個特徵(其中共享和併發是兩個最基本的特徵,二者互為存在條件)

併發

指兩個或多個事件在同一時間間隔內發生。這些事件巨集觀上是同時發生的,但微觀上是交替發生的。

容易和並行(指兩個或多個時間在同一時刻同時發生)這個概念混淆,舉個例子

在這裡插入圖片描述
作業系統的併發性指計算機系統中同時存在著多個執行著的程式。

一個單核處理機(CPU) 同一時刻只能執行一個程式,因此作業系統會負責協調多個程式交替執行(這些程式微觀上是交替執行的,但巨集觀上看起來就像在同時執行)

事實上,作業系統就是伴隨著“多道程式技術”而出現的。因此,作業系統和程式併發是一起誕生的。

當今的計算機,一般都是多核CPU,比如Intel的第八代i3處理器就是4核CPU
這意味著同一時刻可以有4個程式並行執行,但是作業系統的併發性依然必不可少
當代人使用計算機絕對有4個以上的程式需要同時工作(併發仍然重要)

共享

共享即資源共享,是指系統中的資源可供記憶體中多個併發執行的程式共同使用。

資源共享有兩種形式:

互斥共享方式:系統中的某些資源,雖然可以提供給多個程式使用,但一個時間段內只允許一個程式訪問該資源

同時共享方式:系統中的某些資源,允許一個時間段內由多個程式“同時”對它們進行訪問

所謂的“同時”往往是巨集觀上的,而在微觀上,這些程式可能是交替地對該資源進行訪問的(即分時共享)

生活例項:
互斥共享方式:使用QQ和微信視訊。同一時間段內攝像頭只能分配給其中一個程式。

同時共享方式:使用QQ傳送檔案A,同時使用微信傳送檔案B。巨集觀生看,兩邊都在同時讀取併傳送檔案,說明兩個程式都在訪問硬碟資源,從中讀取資料。微觀上看,兩個程式是交替著訪問硬碟的。

併發性指計算機系統中同時存在著多個執行著的程式。
共享性是指系統中的資源可供記憶體中多個併發執行的程式共同使用。

共享和併發互為存在條件的原因

如果失去併發性,則系統中只有一個程式正在執行,則共享性失去存在的意義

如果失去共享性,則QQ和微信不能同時訪問硬碟資源,就無法實現同時傳送檔案,也就無法併發

虛擬

虛擬是指把一個物理上的實體變為若干個邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上對應物(後者)是使用者感受到的。

舉例:
GTA5需要4GB的執行記憶體,QQ需要256MB的記憶體,迅雷需要256MB的記憶體,網易雲音樂需要256MB的記憶體…

我的電腦: 4GB記憶體

問題:這些程式同時執行需要的記憶體遠大於4GB,那麼為什麼它們還可以在我的電腦上同時執行呢?

答:這是虛擬儲存器技術。實際只有4GB的記憶體,在使用者看來似乎遠遠大於4GB(這是虛擬技術中的“空間多工技術”)

問題:既然一個程式需要被分配CPU才能正常執行,那麼為什麼單核CPU的電腦中能同時執行這麼多個程式呢?

答:這是虛擬處理器技術。實際上只有一個單核CPU,在使用者看來似乎有6個CPU在同時為自己服務(這是虛擬技術中的“分時多工技術”。微觀上處理機在各個微小的時間段內交替著為各個程式服務)

可以看出,如果失去了併發性,則一個時間段內系統中只需執行一道程式,那麼就失去了實現虛擬性的意義了。因此,沒有併發性,就談不上虛擬性

非同步

在多道程式環境下,允許多個程式併發執行,但由於資源有限,程式的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是程式的非同步性。

舉例:

在這裡插入圖片描述
指令如下圖所示:
在這裡插入圖片描述
一號二號的約會就相當於兩個程式的處理,每個程式都有各自需要執行的指令

老渣的心相當於有限的系統資源。

由於可分配的資源有限,程式的執行不是一貫到底的,而是走走停停的,已不可預知的速度向前推進

可以看出來,如果失去了併發性,則系統只能序列的處理各個程式,每個程式的執行會一貫到底。只有系統擁有併發性,才有可能導致非同步性

知識點回顧

在這裡插入圖片描述

作業系統的發展和分類

本節知識點總覽

在這裡插入圖片描述
綠色框內的部分是內容

手工操作階段

在這裡插入圖片描述
這個階段就是人工把自己的程式和資料編號,放入紙帶機進入主機,經過運算以後在由紙帶機輸出(這個過程當中人工編輯二進位制程式程度緩慢,紙帶機也慢)

缺點:
使用者獨佔全機(一次只有一個人能用)
人機速度矛盾導致資源利用率極低(人很慢,機器太快,工作時間就很短)

批處理階段(單道批處理系統)

這個階段引入離線輸入/輸出技術(用磁帶完成),並監督程式負責控制作業的輸入、輸出(這監督程式就是作業系統的雛形)

在這裡插入圖片描述
這個階段其實就是把紙帶機的內容放到了磁帶,再由主機讀磁帶計算,這樣子就一定程度上解決了輸入輸出慢的問題

主要優點:
緩解了一定程度的人機速度矛盾,資源利用率有所提升

主要缺點:
記憶體中僅有一道程式執行,只有該程式執行結束之後才能調入下一道程式。CPU有大量的時間是在空閒等待I/O完成。資源利用率依然很低。

批處理階段(多道批處理系統)

在這裡插入圖片描述
這個階段其實和單道批處理差不多時間,和單道唯一的區別就是不能多道程式併發,這裡有一定的完善

主要優點:
多道程式併發執行,共享計算機資源。資源利用率大幅度提升,CPU和其他資源保持“忙碌”狀態,系統吞吐量增大

主要缺點:
使用者響應時間長,沒有人機互動功能(使用者提交自己的作業之後就只能等待計算機處理完成,中間不能控制自己的作業執行)

分時作業系統

計算機以時間片為單位輪流為各個使用者/作業服務,各個使用者可通過終端與計算機進行互動。(也就是這個時間內,人可以和計算機進行互動)

主要優點:使用者請求可以被即時響應,解決了人機互動問題。允許多個使用者同時使用一臺計算機,並且使用者對計算機的操作相互獨立,感受不到別人的存在。

主要缺點:不能優先處理一些緊急任務。作業系統對各個使用者/作業都是完全公平的,迴圈地為每個使用者/作業服務一個時間片,不區分任務的緊急性。(例如現在有個緊急任務被處理,分時操作就不能馬上操作,必須等問到了,在操作)

實時操作

在實時作業系統的控制下,計算機系統接收到外部訊號後及時進行處理,並且要在嚴格的時限內處理完事件。實時作業系統的主要特點是及時性和可靠性片(這就是插隊的快感吧)

主要優點:能夠優先響應一些緊急任務, 某些緊急任務不需時間片排隊。

實時系統分為兩種:
硬實施系統—必須在絕對嚴格的規定時間內完成處理(例如:導彈控制系統、自動駕駛系統)

軟實時系統—能接收偶爾違反時間規定(例如:12306火車訂票系統)

其他作業系統(僅供瞭解)

網路作業系統:是伴隨著計算機網路的發展而誕生的,能把網路中各個計算機有機地結合起來,實現資料傳送等功能,實現網路中各種資源的共享(如檔案共享)和各臺計算機之間的通訊。( 如: Windows NT就是一種典型的網路作業系統,網站伺服器就可以使用)

分散式作業系統:主要特點是分佈性和並行性。系統中的各臺計算機地位相同,任何工作都可以分佈在這些計算機上,由它們並行、協同完成這個任務。

個人計算機作業系統:如Windows XP、MacOS, 方便個人使用。

作業系統的執行機制和體系結構

本節知識點

在這裡插入圖片描述

指令、處理器狀態、程式

在這裡插入圖片描述

指令由兩種
特權指令(不允許使用者程式使用,例如記憶體清零指令)和非特權指令(普通的運算指令)

針對指令種類,處理器也是有兩種狀態:使用者態(目態:此時只能執行非特權指令)和核心態(管態:此時可以執行特權指令和非特權指令)

而這個是用程式狀態字暫存器(PSW)中的某個標誌位來表示當前處理器出於什麼狀態,如0為使用者態,1位核心態

針對需要使用不用指令的程式也分為兩種:核心程式(作業系統的核心程式是系統的管理者,既可以執行特權指令,也可以執行非特權指令,執行在核心態)和應用程式(為了保證系統能安全執行,普通應用程式只能執行非特權指令,執行在使用者態)

作業系統的核心

在這裡插入圖片描述
作業系統內部其實也分為核心和非核心功能,如上圖所示。

核心中偏向於硬體的也有時鐘管理、中斷處理和原語(裝置驅動、CPU切換)

程式管理、儲存器管理、裝置管理等功能也是核心的一部分

(圖中已經給出了時鐘管理和原語的解釋)

核心是計算機上配置的底層軟體,是作業系統最基本、最核心的部分。

實現作業系統核心功能的那些程式就是核心程式。

在這裡插入圖片描述
這就是核心所有的組成,而根據組成成分的多少將核心分為兩種:大核心(不僅有微核心的功能,還有對系統資源進行管理的功能)和微核心(只包含時鐘管理、中斷處理和原語)

具體如下圖所示:
在這裡插入圖片描述
大核心:將作業系統的主要功能模組都作為系統核心,執行在核心態

優點:高效能

缺點:核心程式碼龐大,結構混亂,難以維護

微核心:只把最基本的功能保留在核心

優點:核心功能少,結構清晰,方便維護

缺點:需要頻繁地在核心態和使用者態之間切換,效能低

(這就好比企業,大核心就是小型企業,啥事都是管理幹;微核心就是大型企業,啥事都要讓別人幹)

知識點回顧

在這裡插入圖片描述

中斷和異常

本節知識點總覽

在這裡插入圖片描述

中斷的誕生

為了讓多道程式併發處理,所以引入了中斷機制,實現了多道程式併發執行

本質:發生中斷就意味著需要作業系統接入,開展管理工作

過程:程式1到時間了,就發生中斷,進入核心態管理,然後讓程式2進入工作(程式2如果在時間內需要輸出了,就申請內中斷/系統呼叫介入,變成核心態進行輸出),然後再切換成程式3進行。。。

中斷有以下一些概念
(1)當中斷髮生時,CPU立即進入核心態
(2)當中斷髮生時,當前執行的程式暫停執行,並由作業系統核心對中斷進行處理
(3)對於不同的中斷訊號,會進行不同的處理

發生了中斷,就意味著需要作業系統介入,開展管理工作。由於作業系統的管理工作(比如程式切換、分配I/0裝置等)需要使用特權指令,因此CPU要從使用者態轉為核心態。中斷可以使CPU從使用者態切換為核心態,使作業系統獲得計算機的控制權。有了中斷,才能實現多道程式併發執行。

核心態和使用者態之間的切換:
使用者態→核心態是通過中斷實現的,並且中斷是唯一途徑!!!(唯一!!!)

核心態→使用者態的切換是通過執行一個特權指令,將程式狀態字(PSW)的標誌位設定為使用者態

中斷的分類

在這裡插入圖片描述
中斷分兩種:
內中斷(來自CPU內部的中斷,例如:指令的中斷、硬體壞了、軟體邏輯錯誤)和外中斷(來自於CPU外部中斷,例如外設請求、人工干預)

另一種分類
在這裡插入圖片描述
這裡其實和上面的差不多,也就是名字換了換

外中斷的處理過程

執行完每個指令之後CPU都會檢查當前是否有外部中斷訊號

如果檢測到外部中斷訊號,則需要保護被中斷程式的CPU環境( 如程式狀態字PSW、程式計數器PC、各種通用暫存器)

根據中斷訊號型別轉入相應的中斷處理程式

恢復原程式的CPU環境並退出中斷,返回原程式繼續往下執行

(這裡的中斷處理程式會從使用者態變到核心態)

知識點回顧

在這裡插入圖片描述

系統呼叫

本節知識點總覽

在這裡插入圖片描述

什麼是系統呼叫

系統呼叫”是作業系統提供給應用程式(程式設計師/程式設計人員)使用的介面,可以理解為一種可供應用程式呼叫的特殊函式,應用程式可以發出系統呼叫請求來獲得作業系統的服務。

解決方法:作業系統提供“系統呼叫”功能,使用者程式想要使用印表機這種共享資源,只能通過系統呼叫向作業系統發出請求。作業系統會對各個請求進行協調管理(就是為了防止應用程式隨便呼叫系統介面導致混亂)

應用程式通過系統呼叫請求作業系統的服務。系統中的各種共享資源都由作業系統統一掌管,因此在使用者程式中,凡是與資源有關的操作(如儲存分配、/0操作、檔案管理等),都必須通過系統呼叫的方式向作業系統提出服務請求,由作業系統代為完成。這樣可以保證系統的穩定性和安全性,防止使用者進行非法操作。

系統呼叫的分類

在這裡插入圖片描述
系統呼叫相關處理涉及到對系統資源的管理、對程式的控制,這些功能需要執行一些特權指令才能完成,因此係統呼叫的相關處理需要在核心態下進行。

系統呼叫與庫函式的區別
在這裡插入圖片描述
下圖就是層次結構
在這裡插入圖片描述
注:不涉及系統呼叫的庫函式:比如運算操作的函式;涉及系統呼叫的庫函式:比如建立一個新檔案的函式

系統呼叫的過程

在這裡插入圖片描述
傳遞系統呼叫引數→執行陷入指令(使用者態)→執行系統呼叫相應服務程式(核心態)→返回使用者程式

注意:
1.陷入指令是在使用者態執行的,執行陷入指令之後立即引發一個內中斷,從而CPU進入核心態
2.發出系統呼叫請求是在使用者態,而對系統呼叫的相應處理在核心態下進行
3.陷入指令是唯一一個只能在使用者態執行,而不可在核心態執行的指令

知識點回顧

在這裡插入圖片描述

相關文章