操作系統(tǒng)知識點
操作系統(tǒng)整理歸納
4.1.1 操作系統(tǒng)的概念
操作系統(tǒng):是管理計算機軟硬件資源的程序,同時它又是用戶與計算機硬件的接口。
4.1.2 操作系統(tǒng)的構(gòu)成
進程管理、內(nèi)存管理、文件管理、輸入/輸出系統(tǒng)管理、二級存儲管理、聯(lián)網(wǎng)、保護系統(tǒng)、命令解釋程序
4.2.1 操作系統(tǒng)的類別
經(jīng)過多年的發(fā)展,操作系統(tǒng)多種多樣。為提高大型計算機系統(tǒng)的資源利用率,操作系統(tǒng)從批處理,多道程序發(fā)展為分時操作系統(tǒng)。為了滿足計算機處理實時事件的需要,就有實時操作系統(tǒng)。為適應(yīng)個人計算機系統(tǒng)的需要又出現(xiàn)了桌面操作系統(tǒng)。為適應(yīng)并行系統(tǒng)的需要,就有了多處理器操作系統(tǒng)。為滿足網(wǎng)絡(luò)和分布計算的需要,就有了網(wǎng)絡(luò)操作系統(tǒng)和分布式操作系統(tǒng)。此外,還有為支持嵌入式計算機的嵌入式操作系統(tǒng)。
4.2.2 計算環(huán)境
從計算機誕生至今,操作系統(tǒng)總是與具體的計算環(huán)境相聯(lián)系,它總是在某種計算環(huán)境中設(shè)置和使用,就目前來看計算環(huán)境可分為以下幾類:
1. 傳統(tǒng)計算環(huán)境
指普通意義下的獨立或聯(lián)網(wǎng)工作的通用計算機所形成的計算環(huán)境。
2.基于Web的計算環(huán)境
互聯(lián)網(wǎng)的普及使得計算被延伸到Web環(huán)境。
3.嵌入式計算環(huán)境
嵌入式計算機就是安裝在某些設(shè)備上的計算部件,其計算相對比較簡單。
4.3.1 進程的概念
什么是進程?它與程序有什么區(qū)別?
程序:用戶為完成某一個特定問題而編寫的操作步驟。
進程:可以簡單地被看作是正在執(zhí)行的程序。但是進程需要一定的資源來完成它的任務(wù)(例如CPU時間、內(nèi)存、文件和I/O設(shè)備) 。
進程與程序的區(qū)別在于進程是動態(tài)的、有生命力的,而程序是靜態(tài)的。一個程序加載到內(nèi)存,系統(tǒng)就創(chuàng)建一個進程,程序執(zhí)行結(jié)束后,該進程也就消亡了。
在計算機中,由于多個程序共享系統(tǒng)資源,就必然引發(fā)對CPU的爭奪。如何有效地利用CPU資源,如何在多個請求CPU的進程中選擇取舍,這就是進程管理要解決的問題。
4.3.3 進程控制塊PCB(略)
為了控制進程,操作系統(tǒng)就必須知道進程存儲在哪里,以及進程的一些屬性。
進程控制塊是進程實體的一部分,是操作系統(tǒng)中記錄進程的專用數(shù)據(jù)結(jié)構(gòu)。一個新的進程創(chuàng)建時,操作系統(tǒng)就會為該進程建立一個進程控制塊。操作系統(tǒng)根據(jù)進程控制塊對并發(fā)進程進行控制。
4.3.4 進程調(diào)度及隊列圖
計算機采用多道程序的目的是使得計算機系統(tǒng)無論何時都有進程運行,單處理器的計算機在某一時刻CPU只能運行一個進程,如果存在多個進程,其它進程就需要等待CPU空閑時才能被調(diào)度執(zhí)行。
當(dāng)一個進程處于等待或CPU時間片用完時,操作系統(tǒng)就會從該進程中拿走CPU控制權(quán),然后再交給其它進程使用,這就是進程的調(diào)度。
4.3.5 CPU調(diào)度及其準(zhǔn)則
在設(shè)計CPU調(diào)度程序時主要應(yīng)該考慮的準(zhǔn)則包括:
(1) CPU使用率。讓CPU盡可能地忙。
(2) 吞吐量。讓CPU在一定時間內(nèi)完成的進程數(shù)盡可能多。
(3) 周轉(zhuǎn)時間。讓進程從提交到運行完成的時間盡可能短。
(4) 等待時間。讓進程在就緒隊列中等待所花時間之和盡可能短。
(5) 響應(yīng)時間。讓進程從提交請求到產(chǎn)生第一響應(yīng)之間的時間盡可能短。
主要的CPU調(diào)度算法
1、 先到先服務(wù)
2、 最短作業(yè)優(yōu)先
3、 優(yōu)先權(quán)
4、 輪轉(zhuǎn)
5、 多級隊列
6、 多級反饋隊列
4.3.7 進程的同步與互斥
進程的同步就是指相互協(xié)作的進程不斷調(diào)整它們之間的相對速度,以實現(xiàn)共同有序地推進。
換句話說,在操作系統(tǒng)中,允許多個進程并發(fā)運行。然而,有些進程之間本身存在某種聯(lián)系,它們在系統(tǒng)中需要一種協(xié)作,以保證進程能正確有序地執(zhí)行并維護數(shù)據(jù)的一致性。
在操作系統(tǒng)中,可能存在著多個進程。而系統(tǒng)中一些資源一次只允許一個進程使用,這類資源被稱為臨界資源。在進程中訪問臨界資源的那段程序稱為臨界區(qū)。當(dāng)一個進程進入臨界區(qū)執(zhí)行時,其它進程就不允許進入臨界區(qū)執(zhí)行,否則就會導(dǎo)致錯誤結(jié)果。由此得出:
多個進程并發(fā)執(zhí)行時,只允許一個進程進入臨界區(qū)運行,這就是進程的互斥。
例如:多個進程在競爭使用打印機時表現(xiàn)為互斥。
一個文件可供多個進程共享,其中有一個進程在寫操作時,其它進程則不允許同時寫或讀,表現(xiàn)為互斥。
4.3.8 進程的死鎖及處理方法
在多道程序設(shè)計中,多個進程可能競爭一定數(shù)量的資源。一個進程在申請資源時,如果所申請資源不足,該進程就必須處于等待狀態(tài)。如果所申請的資源被其它進程占有,那么進程的等待狀態(tài)就可能無法改變,從而形成進程之間相互一直等待的局面,這就是死鎖。
競爭資源引起死鎖
引起死鎖的四個必要條件:
• 互斥:任一時刻只能有一個進程獨占某一資源,若另一進程申請該資源則需延遲到該資源釋放為止。
• 占有并等待:即該進程占有部分資源后還在等待其它資源,而該資源被其它進程占有。
• 非搶占:某進程已占用資源且不主動放棄它所占有的資源時,其它進程不能強占該資源,只有等其完成任務(wù)并釋放資源。
• 循環(huán)等待:在出現(xiàn)死鎖的系統(tǒng)中,一定存在這樣一個進程鏈,其中每個進程至少占有其它進程所必需的資源,從而形成一個等待鏈。
處理死鎖問題的三種方式:
• 可使用協(xié)議預(yù)防和避免死鎖,確保系統(tǒng)從不會進入死鎖狀態(tài)。
• 可允許系統(tǒng)進入死鎖狀態(tài),然后檢測出死鎖狀態(tài),并加以恢復(fù)。
• 可忽略進程死鎖問題,并假裝系統(tǒng)中死鎖從來不會發(fā)生。即沒有必要把精力花在小概率事件上。
處理死鎖優(yōu)先考慮的順序:先預(yù)防和避免 再檢測和恢復(fù)
