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