2023-03-24 14:37:05來源:勵普網(wǎng)
隨著社會越來越發(fā)達,大家都選擇在網(wǎng)絡(luò)上汲取相關(guān)知識內(nèi)容,比如系統(tǒng)架構(gòu)設(shè)計師教程_系統(tǒng)架構(gòu)設(shè)計師,為了更好的解答大家的問題,小編也是翻閱整理了相應(yīng)內(nèi)容,下面就一起來看一下吧!
(資料圖)
操作系統(tǒng)的主要功能是進行處理機與進程管理、存儲管理、設(shè)備管理、文件管理和作業(yè)管理,本節(jié)討論操作系統(tǒng)是如何完成這些功能的。
進程管理
處理機是計算機系統(tǒng)的核心資源。操作系統(tǒng)的功能之一就是處理機管理。隨著計算機的迅速發(fā)展,處理機管理顯得更為重要,這主要由于:計算機的速度越來越快,處理機的充分利用有利于系統(tǒng)效率的大大提高;處理機管理是整個操作系統(tǒng)的重心所在,其管理的好壞直接影響到整個系統(tǒng)的運行效率;而且操作系統(tǒng)中并發(fā)活動的管理和控制是在處理機管理下實現(xiàn)的,它集中了操作系統(tǒng)中最復(fù)雜的部分,它設(shè)計的好壞關(guān)系到整個系統(tǒng)的成敗,
進程(process)是處理機管理中最基本的、最重要的概念。進程是系統(tǒng)并發(fā)執(zhí)行的體現(xiàn)。由于在多道程序系統(tǒng)中,眾多的計算機用戶都以各種各樣的任務(wù),隨時隨地爭奪使用處理機。為了動態(tài)地看待操作系統(tǒng),則以進程作為獨立運行的基本單位,以進程作為分配資源的基本單位,從進程的觀點來研究操作系統(tǒng)。因此,處理機管理也被稱為進程管理。處理機管理的功能就是組織和協(xié)調(diào)用戶對處理機的爭奪使用,把處理機分配給進程,對進程進行管理和控制,以最大限度發(fā)揮處理機的作用。
1.進程的概念
用靜態(tài)的觀點看,操作系統(tǒng)是一組程序和表格的集合。用動態(tài)的觀點看,操作系統(tǒng)是進程的動態(tài)和并發(fā)執(zhí)行的。而進程的概念實際上是程序這一概念發(fā)展的產(chǎn)物。因此,可以從分析程序的基本特征入手,引出 進程 的概念。
順序程序是指程序中若干操作必須按照某種先后次序來執(zhí)行,并且每次操作前和操作后的數(shù)據(jù)、狀態(tài)之間都有一定的關(guān)系。在早期的程序設(shè)計中,程序一般都是順序地執(zhí)行的。
在多道程序系統(tǒng)中,程序的運行環(huán)境發(fā)生了很大的變化。主要體現(xiàn)在:
(1)資源共享。為了提高資源的利用率,計算機系統(tǒng)中的資源不再由一道程序?qū)S?,而是由多道程序共同使用?/p>
(2)程序的并發(fā)執(zhí)行或并行執(zhí)行。邏輯上講:允許多道不同用戶的程序并行運行;允許一個用戶程序內(nèi)部完成不同操作的程序段之間并行運行;允許操作系統(tǒng)內(nèi)部不同的程序之間并行運行。物理上講:內(nèi)存儲器中保存多個程序,I/O設(shè)備被多個程序交替地共享使用;多處理機系統(tǒng)的情形下,表現(xiàn)為多個程序在各自的處理機上運行,執(zhí)行時間是重疊的。單處理機系統(tǒng)時,程序的執(zhí)行表現(xiàn)為多道程序交替地在處理機上相互空插運行。
實際上,在多道程序系統(tǒng)中,程序的并行執(zhí)行和資源共享之間是相輔相成的。一方面,只有允許程序并行執(zhí)行,才可能存在資源共享的問題;另一方面,只有有效地實現(xiàn)資源共享,才可能使得程序并行執(zhí)行。
這樣,可增強計算機系統(tǒng)的處理能力和提高機器的利用率。并發(fā)操作實際上是這樣的事實:大多數(shù)程序段只要求操作在時間上是有序的,也就是有些操作必須在其他操作之前。這是有序的,但其中有些操作卻可以同時進行。
2.進程的定義與分類
由于多道程序系統(tǒng)環(huán)境下并行程序執(zhí)行的特征:并發(fā)性、動態(tài)性、開放性和相互制約,這樣,使用程序的概念就不能如實地反映程序活動的這些特征,必須引入新的概念--進程。操作系統(tǒng)內(nèi)在最本質(zhì)的特征是動態(tài)性和并發(fā)性,而進程正反映了動態(tài)性和并發(fā)性等特征。
程序的并行執(zhí)行具有如下特征:
(1)并發(fā)性。即并發(fā)程序的若干個程序段同時在系統(tǒng)中運行,這些程序段的執(zhí)行在時間上是重迭的,一個程序段的執(zhí)行尚未結(jié)束,另一個程序段的執(zhí)行已經(jīng)開始,即使這種重迭是很小的一部分,也稱這幾個程序段是并發(fā)執(zhí)行的。
(2)動態(tài)性。指程序與其執(zhí)行活動不再一一對應(yīng)。并發(fā)程序中的并發(fā)活動是動態(tài)產(chǎn)生、動態(tài)消亡的。如,幾道并發(fā)執(zhí)行的C語言程序共享C編譯系統(tǒng),在這種情況下,-個編譯程序能同時為多道程序服務(wù),每個程序調(diào)用-次就是執(zhí)行一次,即這個編譯程序?qū)?yīng)多個執(zhí)行活動。
(3)開放性。指系統(tǒng)中并發(fā)執(zhí)行的程序共享使用的資源,程序的執(zhí)行與外部因素(如執(zhí)行速度)相關(guān),不再具有封閉性。
(4)相互制約性。指程序的動態(tài)活動相互依賴、相互制約。其制約關(guān)系可分為間接制約關(guān)系和直接制約關(guān)系兩種:間接制約關(guān)系是指相互無邏輯關(guān)系的用戶程序之間競爭使用資源所發(fā)生的制約關(guān)系;直接制約關(guān)系是指存在邏輯關(guān)系的程序之間相互等待而發(fā)生的制約關(guān)系。通過程序活動的這種相互制約關(guān)系,才能保證程序的正確運行。
系統(tǒng)中同時存在許多進程,它們依性質(zhì)不同可分為各種不同的類別:
(1)系統(tǒng)進程和用戶進程。一般來講,在管態(tài)下執(zhí)行的進程稱為系統(tǒng)進程;在目態(tài)下執(zhí)行的進程稱為用戶進程。系統(tǒng)進程起著資源管理和控制的作用;用戶進程是為用戶任務(wù)而建立的進程。
(2)父進程和子進程。系統(tǒng)或用戶首先創(chuàng)建的進程稱為父進程;在父進程下面的進程稱為子進程。父子進程間存在著某些控制結(jié)構(gòu)和控制關(guān)系,因此可以定義一個進程圖。進程圖是一棵有向的、包含一個根節(jié)點的樹。節(jié)點表示進程,記為Pi,從節(jié)點Pi到節(jié)點Pj的一條邊表示進程Pj是由進程Pi創(chuàng)建的。其中,稱Pi是Pj的父進程,而Pj則是Pi的子進程。如圖1-2所示。
進程圖 圖1-2進程圖
進程圖反映了進程間的父、子關(guān)系,創(chuàng)建與被創(chuàng)建關(guān)系,控制與被控制關(guān)系,反映了進程間的層次關(guān)系。同一個進程下屬的所有進程稱為一個進程族,即協(xié)調(diào)完成同一任務(wù)的進程集合同屬于一個進程族。父、子進程間的關(guān)系主要如下:
(1)進程控制。任何一個進程只能由其直接的父進程創(chuàng)建,進程也只能被其父進程刪除。而且當(dāng)刪除某一中間進程(即非葉子節(jié)點)時,同時隱含地刪除其所屬的所有各級子進程。父進程能對其下屬的各級子孫進程實施控制,如掛起某個子孫進程。而子進程無權(quán)對其父進程實施控制。
(2)運行方式。父進程一旦創(chuàng)建了進程后,可以選擇父、子進程同時運行的方式;父進程也可以等待子進程的運行,直至全部子進程結(jié)束后,才開始重新運行。
(3)資源共享??梢赃x擇兩種不同的資源共享方式:一是子進程可共享父進程所擁有的全部資源;二是子進程僅能共享父進程的部分資源。
3.進程的狀態(tài)轉(zhuǎn)換
由進程運行的間斷性,決定了進程至少具有下述三種狀態(tài):
(1)就緒狀態(tài)。當(dāng)進程已分配了除CPU以外的所有必要的資源后,只要能再獲得處理機,便能立即執(zhí)行,把進程這時的狀態(tài)稱為就緒狀態(tài)。在一個系統(tǒng)中,可以有多個進程同時處于就緒狀態(tài),通常把它們排成一個隊列,稱為就緒隊列。
(2)執(zhí)行狀態(tài)指進程已獲得處理機,其程序正在執(zhí)行。在單處理機系統(tǒng)中,只能有一個進程處于執(zhí)行狀態(tài)。
(3)阻塞狀態(tài)進程因發(fā)生某事件(如請求I/O、申請緩沖空間等)而暫停執(zhí)行時的狀態(tài),亦即進程的執(zhí)行受到阻塞,故稱這種暫停狀態(tài)為阻塞狀態(tài),有時也稱為 等待 狀態(tài),或 睡眠 狀態(tài)。通常將處于阻塞狀態(tài)的進程排成一個隊列,稱為阻塞隊列。
進程的狀態(tài)隨著自身的推進和外界的變化而變化。例如,就緒狀態(tài)的進程被進程調(diào)度程序選中進入執(zhí)行狀態(tài);執(zhí)行狀態(tài)的進程因等待某一事件的發(fā)生轉(zhuǎn)入等待狀態(tài);等待狀態(tài)的進程所等待事件來到便進入就緒狀態(tài)。進程的狀態(tài)可以動態(tài)地相互轉(zhuǎn)換,但阻塞狀態(tài)的進程不能直接進入執(zhí)行狀態(tài),就緒狀態(tài)的進程不能直接進入阻塞狀態(tài)。在任何時刻,任何進程都處于且只能處于某一狀態(tài)。進程狀態(tài)的變化情況如下:
(1)運行態(tài)→等待態(tài):一個進程運行中啟動了外圍設(shè)備,它就變成等待外圍設(shè)備傳輸信息的狀態(tài);進程在運行中申請資源(主存儲空間及外圍設(shè)備因得不到滿足)時,變成等待資源狀態(tài),進程在運行中出現(xiàn)了故障(程序出錯或主存儲器讀寫錯等),變成等待干預(yù)狀態(tài)。
(2)等待態(tài)→就緒態(tài):外圍設(shè)備工作結(jié)束后等待外圍設(shè)備傳輸信息的進程結(jié)束等待;等待的資源能得到滿足時(另一個進程歸還了資源),則等待資源者就結(jié)束等待;故障排隊后讓等待干預(yù)的進程結(jié)束等待,任何一個結(jié)束等待的進程必須先變成就緒狀態(tài),待分配到處理器后才能運行。
(3)運行態(tài)→就緒態(tài):進程用完了一個使用處理器的時間后強迫該進桂暫時讓出處理器,當(dāng)有更優(yōu)先權(quán)的進程要運行時也迫使正在運行的進程讓出處理器。由于自身或外界原因成為等待狀態(tài)的進程讓出處理器時,它的狀態(tài)就變成就緒狀態(tài)。
(4)就緒態(tài)→運行態(tài):等待分配處理器的進程,系統(tǒng)按一種選定的策略從處于就緒狀態(tài)的進程中選擇一個進程,讓它占用處理器,那個被選中的進程就變成了運行態(tài)。
圖1-3表示了進程的三種基本狀態(tài)及各狀態(tài)之間的轉(zhuǎn)換。
圖1-3進程三態(tài)模型及其狀態(tài)轉(zhuǎn)換
3.關(guān)于掛起狀態(tài)
在不少系統(tǒng)中,進程只有圖1-3所示的三種狀態(tài)。但在另一些系統(tǒng)中,又增加了一些新狀態(tài),其中最重要的是掛起狀態(tài)。引入掛起狀態(tài)的原因有:
(1)對換的需要。為了緩和內(nèi)存緊張的情況,而將內(nèi)存中處于阻塞狀態(tài)的進程換至外存上,使進程又處于一種有別于阻塞狀態(tài)的新狀態(tài)。因為即使該進程所期待的事件發(fā)生,該進程仍不具備執(zhí)行條件而不能進入就緒隊列,稱這種狀態(tài)為掛起狀態(tài)。
(2)終端用戶的請求。當(dāng)終端用戶在自己的程序運行期間,發(fā)現(xiàn)有可疑問題時。往往希望使自己的進程暫停下來。也就是說,使正在執(zhí)行的進程暫停執(zhí)行,若是就緒進程,則不接受調(diào)度以便研究其執(zhí)行情況或?qū)Τ绦蜻M行修改。把這種靜止?fàn)顟B(tài)也稱為掛起狀態(tài)。
(3)父進程請求。父進程常希望掛起自己的子進程,以便考查和修改子進程,或者協(xié)調(diào)各子進程間的活動。
(4)負荷調(diào)節(jié)的需要。當(dāng)實時系統(tǒng)中的工作負荷較重,有可能影響到對實時任務(wù)的控制時,可由系統(tǒng)把一些不重要的進程掛起,以保證系統(tǒng)能正常運行。
(5)操作系統(tǒng)的需要。操作系統(tǒng)希望掛起某些進程,以便檢查運行中資源的使用情況及進行記賬。
由上所述,不難了解掛起狀態(tài)具有下述三個屬性:
(1)被掛起的進程,原來可能處于就緒狀態(tài),此時進程(被掛起)的狀態(tài)稱為掛起就緒;若被掛起的進程原來可能處于阻塞狀態(tài),此時的狀態(tài)稱為掛起阻塞。不論哪種狀態(tài)。該進程都是不可能被調(diào)度而執(zhí)行的。
(2)處于掛起阻塞狀態(tài)的進程,其阻塞條件與掛起條件無關(guān);當(dāng)進程所期待的事件出現(xiàn)后,進程雖不再被阻塞,但仍不能運行,這時,應(yīng)將該進程從靜止阻塞轉(zhuǎn)換為掛起就緒。
(3)進程可以由其自身掛起,也可由用戶或操作系統(tǒng)等將之掛起。其目的都在于阻止進程繼續(xù)運行,被掛起的進程是只能被用顯式方式來激活,以便從掛起狀態(tài)中解脫出來。
圖1-4示出了具有掛起操作的進程狀態(tài)演變情況。
圖1-4進程狀態(tài)轉(zhuǎn)換
4.進程互斥與同步
進程互斥定義為:一組并發(fā)進程中一個或多個程序段,因共享某一共有資源而導(dǎo)致必須以一個不允許交叉執(zhí)行的單位執(zhí)行。也就是說互斥是要保證臨界資源在某一時刻只被一個進程訪問。
進程同步定義為:把異步環(huán)境下的一組并發(fā)進程因直接制約而互相發(fā)送消息而進行互相合作、互相等待,使得各進程按一定的速度執(zhí)行的過程稱為進程同步。也就是說進程之間是異步執(zhí)行的,同步即是使各進程按一定的制約順序和速度執(zhí)行。
系統(tǒng)中有些資源可以供多個進程同時使用,有些資源則一次僅允許一個進程使用,將一次僅允許一個進程使用的資源稱為臨界資源(CriticalResourse),很多物理設(shè)備如打印機、磁帶機等都屬于臨界資源,某些軟件的變量、數(shù)據(jù)、表格也不允許兩個進程同時使用,所以也是臨界資源。
進程在并發(fā)執(zhí)行中可以共享系統(tǒng)中的資源。但是臨界資源的訪問則必須互斥進行,即各進程對臨界資源進行操作的那段程序的執(zhí)行也須是互斥的,只有這樣才能保證對臨界資源的互斥訪問。把一個進程訪問臨界資源的那段程序代碼稱為臨界區(qū)(Criticalsection)有了臨界區(qū)的概念,進程間的互斥就可以描述為:禁止兩個及以上的進程同時進入訪問同一臨界資源的臨界區(qū)。為此,必須有專門的同步機構(gòu)來協(xié)調(diào)它們,協(xié)調(diào)準(zhǔn)則如下:
(1)空閑讓進。無進程處于臨界區(qū)時,若有進程要求進入臨界區(qū)則立即允許其進入;
(2)忙則等待。當(dāng)已有進程進入其臨界區(qū)時,其他試圖進入各自臨界區(qū)的進程必須等待,以保證諸進程互斥地進入臨界區(qū);
(3)有限等待。有若干進程要求進入臨界區(qū)時,應(yīng)在有限時間內(nèi)使一進程進入臨界區(qū),即它們不應(yīng)相互等待而誰也不進入臨界區(qū);
(4)讓權(quán)等待。對于等待進入臨界區(qū)的進程必須釋放其占有的CPU.
信號量可以有效地實現(xiàn)進程的同步和互斥。在操作系統(tǒng)中,信號量是一個整數(shù)。當(dāng)信號量大于等于零時,代表可供并發(fā)進程使用的資源實體數(shù),當(dāng)信號量小于零時則表示正在等待使用臨界區(qū)的進程數(shù)。建立一個信號量必須說明所建信號量所代表的意義和設(shè)置初值,以及建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),以便指向那些等待使用該臨界區(qū)的進程。
對信號量只能施加特殊的操作:P操作和V操作。P操作和V操作都是不可分割的原子操作,也稱為原語,因此,P原語和V原語執(zhí)行期間不允許中斷發(fā)生。
P(sem)操作的作用是將信號量sem值減l,若sem的值成負數(shù),則調(diào)用P操作的進程暫停執(zhí)行,直到另一個進程對同一信號量做V操作。V(sem)操作的作用是將信號量sem值加1,若sem的值小于等于0,從相應(yīng)隊列(與sem有關(guān)的隊列)中選一個進程,喚醒它。
一般P操作與V操作的定義如下所述:
P操作:
P(sem){
sem=sem-1;
if(sem 0)進程進入等待狀態(tài);
else繼續(xù)進行;}
V操作:
V(sem){
sem=sem+1;
if(sem≤0)喚醒隊列中的一個等待進程;
else繼續(xù)進行;}
為了保護共享資源(如公共變量等),使它們不被多個進程同時訪問,就要阻止這些進程同時執(zhí)行訪問這些資源(臨界資源)的代碼段(臨界區(qū));進程互斥不允許兩個以上共享臨界資源的并發(fā)進程同時進入臨界區(qū)。利用P、V原語和信號量可以方便地解決并發(fā)進程對臨界區(qū)的進程互斥問題。
設(shè)信號量mutex是用于互斥的信號量,初值為1,表示沒有并發(fā)進程使用該臨界區(qū)。于是各并發(fā)進程的臨界區(qū)可改寫成下列形式的代碼段:
P(mutex);
臨界區(qū)
V(mutex);
要用P,V操作實現(xiàn)進程同步,需要引進私用信號量。私用信號量只與制約進程和被制約進程有關(guān),而不是與整組并發(fā)進程相關(guān)。與此相對,進程互斥使用的信號量為公用信號量。首先為各并發(fā)進程設(shè)置私用信號量,然后為私用信號量賦初值,最后利用P,V原語和私用信號量規(guī)定各進程的執(zhí)行順序。
經(jīng)典同步問題的例子是生產(chǎn)者-消費者問題。這要求存后再取,取后再存,即有兩個制約關(guān)系,為此,需要兩個信號量,表示緩沖區(qū)中的空單元數(shù)和非空單元數(shù),記為Bufempty和Buffull,它們的初值分別是1和0,相應(yīng)的程序段形式是:
生產(chǎn)者
loop
生產(chǎn)一產(chǎn)品next;
P(Bufempty);
next產(chǎn)品存緩沖區(qū);
V(Buffull);
endloop
消費者
loop
P(Buffulll);
V(Bufempty);
從緩沖區(qū)中取產(chǎn)品;
使用產(chǎn)品
endloop
5.前趨圖
前趨圖是一個由結(jié)點和有向邊構(gòu)成的有向無循環(huán)圖。該圖通常用于表現(xiàn)事務(wù)之間先后順序的制約關(guān)系。圖中的每個結(jié)點可以表示一個語句、一個程序段或是一個進程,結(jié)點間的有向邊表示兩個結(jié)點之間存在的前趨關(guān)系。
例:在計算機中,經(jīng)常采用流水線方式執(zhí)行指令,若每一條指令都可以分解為取指、分析和執(zhí)行三步。取指操作為:取指操作為Ai,分析操作為Bi和執(zhí)行操作為Ci(i=1,2,3)。圖1-5為三個任務(wù)各程序段并發(fā)執(zhí)行的前驅(qū)圖。
圖中A1沒有前趨結(jié)點,稱為開始結(jié)點,它不受任何制約,可以直接執(zhí)行;而B1與A2只能在A1執(zhí)行完成之后才能開始,而B2必須在B1與A2完成之后才能開始;C3沒有后繼結(jié)點,稱為終止結(jié)點。
圖1-5前趨圖
在前趨圖中,執(zhí)行優(yōu)后順序的制約關(guān)系可分為兩種:直接制約和間接制約。
直接制約通常是指一個操作中,多個步驟之間的制約關(guān)系,也可以說是 同步的進程之間的制約關(guān)系 .例如圖1-5中,A1、B1、C1是一條指令的取指、分析、執(zhí)行三個步驟,所以他們之間的關(guān)系是直接制約。
間接制約通常是指多個操作之間相同步驟的制約關(guān)系,也可以說是 互斥的進程之間的制約關(guān)系 .例如圖1-5中,A1、A2、A3之間就存在間接制約的關(guān)系。
前趨圖的應(yīng)用廣泛,在項目開發(fā)中,可用前趨圖來分析哪些活動可以并行完成。同時項目管理工具:Pert圖,單(雙)代號網(wǎng)絡(luò)圖等都融入了前趨圖的思想。
6.進程調(diào)度與死鎖
進程調(diào)度即處理器調(diào)度(又稱上下文轉(zhuǎn)換),它的主要功能是確定在什么時候分配處理器,并確定分給哪一個進程,即讓正在執(zhí)行的進程改變狀態(tài)并轉(zhuǎn)入就緒隊列的隊尾,再由調(diào)度原語將就緒隊列的隊首進程取出,投入執(zhí)行。
引起進程調(diào)度的原因有以下幾類:
(1)正在執(zhí)行的進程執(zhí)行完畢。
(2)執(zhí)行中的進程自己調(diào)用阻塞原語將自己阻塞起來進入睡眠狀態(tài)。
(3)執(zhí)行中的進程調(diào)用了P原語操作,從而因資源不足而阻塞;或調(diào)用V原語操作激活了等待資源的進程隊列。
(4)在分時系統(tǒng)中,當(dāng)一進程用完一個時間片。
(5)就緒隊列中某進程的優(yōu)先級變得高于當(dāng)前執(zhí)行進程的優(yōu)先級,也將引起進程調(diào)度。
進程調(diào)度的方式有兩類:剝奪方式與非剝奪方式。所謂非剝奪方式是指,一旦某個作業(yè)或進程占有了處理器,別的進程就不能把處理器從這個進程手中奪走,直到該進程自己因調(diào)用原語操作而進入阻塞狀態(tài),或時間片用完而讓出處理機;剝奪方式是指,當(dāng)就緒隊列中一旦有進程的優(yōu)先級高于當(dāng)前執(zhí)行進程的優(yōu)先級時,便立即發(fā)生進程調(diào)度,轉(zhuǎn)讓處理機。
進程調(diào)度的算法是服務(wù)于系統(tǒng)目標(biāo)的策略,對于不同的系統(tǒng)與系統(tǒng)目標(biāo),常采用不同的調(diào)度算法:
(1)先來先服務(wù)(FirstComeandFirstServerd,FCFS)調(diào)度算法,又稱先進先出(FirstInandFirstOut,FIFO)。就緒隊列按先來后到原則排隊。
(2)優(yōu)先數(shù)調(diào)度。優(yōu)先數(shù)反映了進程優(yōu)先級,就緒隊列按優(yōu)先數(shù)排隊。有兩種確定優(yōu)先級的方法,即靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級。靜態(tài)優(yōu)先級是指進程的優(yōu)先級在進程開始執(zhí)行前確定,執(zhí)行過程中不變,而動態(tài)優(yōu)先級則可以在進程執(zhí)行過程中改變。
(3)輪轉(zhuǎn)法(RoundRobin)。就緒隊列按FCFS方式排隊。每個進程執(zhí)行一次占有處理器時間都不超過規(guī)定的時間單位(時間片)。若超過,則自行釋放自己所占有的CPU而排到就緒隊列的末尾,等待下一次調(diào)度。同時,進程調(diào)度程序又去調(diào)度當(dāng)前就緒隊列中的第一個進程。
進程管理是操作系統(tǒng)的核心,在進程管理的實現(xiàn)中,如果設(shè)計不當(dāng),會出現(xiàn)一種尷尬的局面--死鎖。
當(dāng)若干個進程互相競爭對方已占有的資源,無限期地等待,不能向前推進時會造成 死鎖 .例如,P1進程占有資源R1,P2進程占有資源R2,這時,P1又需要資源R2,P2也需要資源R1,它們在等待對方占有的資源時,又不會釋放自己占有的資源,因而使雙方都進入了無限等待狀態(tài)。
死鎖是系統(tǒng)的一種出錯狀態(tài),它不僅浪費大量的系統(tǒng)資源,甚至?xí)?dǎo)致整個系統(tǒng)的崩潰,所以死鎖是應(yīng)該盡量預(yù)防和避免的。
(1)死鎖條件。產(chǎn)生死鎖的主要原因是供共享的系統(tǒng)資源不足,資源分配策略和進程的推進順序不當(dāng)。系統(tǒng)資源既可能是可重復(fù)使用的一直性資源,也可能是消耗性的臨時資源。產(chǎn)生死鎖的必要條件是:互斥條件、保持和等待條件、不剝奪條件和環(huán)路等待條件。
(2)解決死鎖的策略。處于死鎖狀態(tài)的進程不能繼續(xù)執(zhí)行又占有了系統(tǒng)資源,從而會阻礙其他作業(yè)的執(zhí)行。
解決死鎖有兩種策略:一種是在死鎖發(fā)生前采用的預(yù)防和避免策略;另一種是在死鎖發(fā)生后采用的檢測與恢復(fù)策略。
死鎖的預(yù)防主要是通過打破死鎖產(chǎn)生的4個必要條件之一來保證不會產(chǎn)生死鎖。采用的死鎖預(yù)防策略通常有資源的靜態(tài)分配法或有序分配法,它們分別打破了資源動態(tài)分配條件和循環(huán)等待條件,因此不會發(fā)生死鎖。但這樣做會大大降低系統(tǒng)資源的利用率和進程之間的并行程度。
死鎖避免策略,則是在系統(tǒng)進行資源分配時,先執(zhí)行一個死鎖避免算法(典型的如銀行家算法),來保證本次分配不會導(dǎo)致死鎖的發(fā)生。由于資源分配很頻繁,因此死鎖避免策略要耗費大量的CPU時間。
希賽網(wǎng)希賽網(wǎng)提示:實際上,系統(tǒng)出現(xiàn)死鎖的概率很小,故從系統(tǒng)所花的代價上看,采用死鎖發(fā)生后的檢測與恢復(fù)策略要比采用死鎖發(fā)生前的預(yù)防與避免策略代價小一些。
7.線程
在支持線程的操作系統(tǒng)中,線程是進程中的-個實體,是系統(tǒng)實施調(diào)度的獨立單位。線程只擁有-些在運行中必不可少的資源,它與屬于同一個進程的其他線程共享該進程所擁有的資源。各線程之間可以并發(fā)地運行。線程切換時只需保存和設(shè)置少量寄存器的內(nèi)容,而并不涉及存儲器管理方面的操作,所以線程切換的開銷遠遠小于進程的切換(原運行進程狀態(tài)的切換還要引起資源轉(zhuǎn)移及現(xiàn)場保護等問題)。同一個進程中的多個線程共享同一個地址空間,這使得線程之間同步和通信的實現(xiàn)也比較容易。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
雅思 托福 GRE IB SAT GMAT A-Level ACT 多鄰國英語測試 OSSD 英語四六級 出國英語 詞匯 AEAS 英語口語 商務(wù)英語 考研英語 青少英語 成人英語 個人提升英語 高中英語 劍橋英語 AP課程 一級建造師 二級建造師 消防工程師 消防設(shè)施操作員 BIM 造價工程師 環(huán)評師 監(jiān)理工程師 咨詢工程師 安全工程師 建筑九大員 注冊電氣工程師 一級注冊建筑師 公路水運檢測 通信工程 裝配式工程師 二級注冊建筑師 PLC智能制造 智慧消防工程師 智慧建造工程師 全過程工程咨詢師 EPC工程總承包 碳排放管理師 應(yīng)急救援員 初級會計師 中級會計師 注冊會計師(cpa) CFA ACCA CMA 基金從業(yè) 證券從業(yè) 會計證 初中級經(jīng)濟師 薪稅師 會計實操 企業(yè)合規(guī)師 FRM 會計就業(yè) 教師資格 食品安全管理師 人力資源管理 鄉(xiāng)村規(guī)劃師 心理咨詢師 健康管理師 家庭教育指導(dǎo)師 普通話 公共營養(yǎng)師 物業(yè)經(jīng)理 網(wǎng)絡(luò)主播 專利代理師 教師招聘 少兒編程 書法培訓(xùn) 繪畫美術(shù) 音樂 舞蹈 棋類 國畫 樂器 擊劍 機器人編程 小孩子注意力訓(xùn)練 兒童專注力 體適能 少兒小主播 信奧賽C++ 籃球 羽毛球 足球培訓(xùn) 嵌入式培訓(xùn) 軟件測試 Web前端 linux云計算 大數(shù)據(jù) C/C++開發(fā) 電子商務(wù) Java開發(fā) 影視后期 剪輯包裝 游戲設(shè)計 php 商業(yè)插畫 產(chǎn)品經(jīng)理 Python photoshop UXD全鏈路 UI設(shè)計 室內(nèi)設(shè)計 電商視覺設(shè)計 IT認證 PMP項目管理