国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

操作系統(tǒng)(第二章-進(jìn)程管理)

這篇具有很好參考價值的文章主要介紹了操作系統(tǒng)(第二章-進(jìn)程管理)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、程序執(zhí)行

1. 前趨圖?

2. 程序的順序執(zhí)行?

3. 程序的并發(fā)執(zhí)行?

二、進(jìn)程的描述?

? ? (一)、進(jìn)程的概念?

1. 進(jìn)程的定義?

2. 進(jìn)程的特征?

? ? (二)、進(jìn)程的狀態(tài)極其轉(zhuǎn)換?

1. 進(jìn)程的三種基本狀態(tài)

(1)就緒狀態(tài)?

(2)運(yùn)行狀態(tài)

(3)等待狀態(tài)

2. 進(jìn)程狀態(tài)的轉(zhuǎn)換?

? ? (三)、進(jìn)程的掛起狀態(tài)?

1. 掛起狀態(tài)的引入?

? ? (四)、進(jìn)程控制塊PCB?

1. 進(jìn)程控制塊的作用?

2. 進(jìn)程控制塊的內(nèi)容?

三、進(jìn)程控制

(一)操作系統(tǒng)內(nèi)核

特權(quán)指令和非特權(quán)指令

特權(quán)指令

非特權(quán)指令

? ? ?(二)、進(jìn)程創(chuàng)建

? ? (三)、進(jìn)程撤銷?

? ? (四)、進(jìn)程等待(進(jìn)程阻塞)

? ? (五)、進(jìn)程喚醒?

? ? 四、進(jìn)程同步

(一)進(jìn)程同步的概念?

? ? (二)、進(jìn)程同步機(jī)制應(yīng)遵循的原則?

? ? (三)、進(jìn)程同步機(jī)制——鎖?

? ? ?(四)、進(jìn)程同步機(jī)制——信號量

五、進(jìn)程通信?

? ? (一)、共享存儲器系統(tǒng)?

? ? (二)、消息傳遞系統(tǒng)

? ? (三)、管道通信系統(tǒng)?

六、處理機(jī)調(diào)度?

?? ? 一、進(jìn)程調(diào)度算法的選取原則

? ? 二、常用的進(jìn)程調(diào)度算法

? ? 三、常用的作業(yè)調(diào)度算法?

? ? 四、死鎖的基本概念?

? ? 七、線程技術(shù)?

1. 線程的概念?

2. 線程與進(jìn)程的比較?

3. 線程的類型?


一、程序執(zhí)行

? ? 程序執(zhí)行是指程序在計算機(jī)中的運(yùn)行過程。程序的執(zhí)行可以用前趨圖表示,程序的執(zhí)行方式有順序執(zhí)行和并發(fā)執(zhí)行兩種。

1. 前趨圖?

? ? 前趨圖是一個有向無循環(huán)圖。圖中的每個節(jié)點(diǎn)可用于表示一條語句、一個程序段等;節(jié)點(diǎn)間的有向邊表示在兩個節(jié)點(diǎn)之間存在的前趨關(guān)系。如Pi→Pj,稱Pi是Pj的前趨,而Pj是Pi的后繼。在前趨圖中,沒有前趨的節(jié)點(diǎn)稱為初始節(jié)點(diǎn),沒有后繼的節(jié)點(diǎn)稱為終止節(jié)點(diǎn)。應(yīng)當(dāng)注意的是,前趨圖中不能存在循環(huán)。?

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

? ? 在上圖所示的前趨圖中存在下述前趨關(guān)系: ? ? P1→P2,P1→P3,P2→P4,P3→P4,P4→P5。?

2. 程序的順序執(zhí)行?

(1)程序順序執(zhí)行的概念?

? ? 一個較大的程序通常由若干個操作組成。程序在執(zhí)行時,必須按照某種先后次序逐個執(zhí)行操作,只有當(dāng)前一個操作執(zhí)行完后,才能執(zhí)行后一個操作。?

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

(2)程序順序執(zhí)行的特征?

  • 順序性。嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。
  • 封閉性。程序在封閉的環(huán)境下執(zhí)行,其執(zhí)行結(jié)果不受外界因素的影響。
  • 確定性。程序執(zhí)行的結(jié)果與它的執(zhí)行速度無關(guān),不會影響到最終結(jié)果。
  • 可再現(xiàn)性。只要程序執(zhí)行的環(huán)境和初始條件相同,都將獲得相同的結(jié)果。?

3. 程序的并發(fā)執(zhí)行?

?(1)程序并發(fā)執(zhí)行的概念?

? ? 在處理一批程序時,它們之間有時并不存在嚴(yán)格的執(zhí)行次序,可以并發(fā)執(zhí)行。?

? ? 程序并發(fā)執(zhí)行時的前趨圖,如下圖所示。

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

(2)程序并發(fā)執(zhí)行的特征?

  • 間斷性。在程序并發(fā)執(zhí)行時,它們之間共享資源或相互合作,形成了相互制約的關(guān)系,表現(xiàn)為“執(zhí)行—暫停執(zhí)行—執(zhí)行”的間斷性活動規(guī)律。
  • 失去封閉性。程序并發(fā)執(zhí)行時,多個程序共享系統(tǒng)中的各種資源,致使程序的運(yùn)行失去了封閉性。這樣,一個程序在執(zhí)行時,必然會受到其他程序的影響。
  • 不可再現(xiàn)性。即使并發(fā)程序執(zhí)行的環(huán)境和初始條件相同,程序多次執(zhí)行或以不同的方式執(zhí)行都可能獲得不相同的結(jié)果。
  • 資源共享性。系統(tǒng)中的硬件資源(CPU、內(nèi)存和I/O設(shè)備等)和軟件資源(系統(tǒng)程序和數(shù)據(jù)集等)為多個用戶或作業(yè)共同使用。
  • 程序和計算不再一一對應(yīng)。?

二、進(jìn)程的描述?

? ? (一)、進(jìn)程的概念?

進(jìn)程的組成:是由PCB、程序段、數(shù)據(jù)段組成。

PCB是給操作系統(tǒng)用的,而程序段和數(shù)據(jù)段是給進(jìn)程自己用的,與進(jìn)程自身的運(yùn)行邏輯有關(guān)。

?操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

1. 進(jìn)程的定義?

? ? 關(guān)于進(jìn)程的定義有以下一些描述:

? ? (1)進(jìn)程是程序的一次執(zhí)行。

? ? (2)進(jìn)程可以定義為一個數(shù)據(jù)結(jié)構(gòu)及能在其上進(jìn)行操作的一個程序。

? ? (3)進(jìn)程是程序在一個數(shù)據(jù)集合上的運(yùn)行過程,是系統(tǒng)資源分配和調(diào)度的一個獨(dú)立單位。

? ? 據(jù)此,可以把“進(jìn)程”定義為:一個程序在一個數(shù)據(jù)集合上的一次運(yùn)行過程。所以一個程序在不同數(shù)據(jù)集合上運(yùn)行,乃至一個程序在同樣數(shù)據(jù)集合上的多次運(yùn)行都是不同的進(jìn)程。?

?可將進(jìn)程定義為:進(jìn)程是進(jìn)程實(shí)體的一次運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。

當(dāng)進(jìn)程創(chuàng)建時,操作系統(tǒng)會給該進(jìn)程分配唯一的身份證號——PID

2. 進(jìn)程的特征?

? ? 進(jìn)程與傳統(tǒng)的程序是截然不同的兩個概念,它具有五個基本特征,從這五個特征可以看到進(jìn)程與程序的巨大差異。

(1)動態(tài)性

? ? 動態(tài)性是進(jìn)程的最基本特征,它表現(xiàn)為“進(jìn)程因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因得不到資源而暫停,以及因撤銷而消亡”。因此,進(jìn)程具有一定的生命周期,其狀態(tài)也會不斷發(fā)生變化,是一個動態(tài)實(shí)體。而程序僅是一組指令的集合,并且可以一成不變地存放在某種介質(zhì)上,是一個靜態(tài)實(shí)體。

(2)并發(fā)性

? ? 進(jìn)程的并發(fā)性是指多個進(jìn)程在一段時間內(nèi)同時運(yùn)行,交替使用處理器的情況。并發(fā)性是進(jìn)程也是操作系統(tǒng)的重要特征。

(3)獨(dú)立性

? ? 獨(dú)立性是指進(jìn)程實(shí)體是一個能獨(dú)立運(yùn)行的基本單位,同時也是獨(dú)立獲得資源和獨(dú)立調(diào)度的基本單位。沒有創(chuàng)建進(jìn)程的程序,是不能參加運(yùn)行的。

(4)異步性

? ? 異步性是指系統(tǒng)中的進(jìn)程按照各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn),即進(jìn)程按照異步方式運(yùn)行。正因如此,將導(dǎo)致執(zhí)行的不可再現(xiàn)性。因此,在操作系統(tǒng)中必須采取相應(yīng)的措施來保證進(jìn)程之間能夠協(xié)調(diào)運(yùn)行。

(5)結(jié)構(gòu)性

? ? 進(jìn)程的結(jié)構(gòu)性是指在結(jié)構(gòu)上進(jìn)程實(shí)體由程序段、數(shù)據(jù)段和進(jìn)程控制塊組成,這三部分也統(tǒng)稱為“進(jìn)程映像”。?

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

? ? (二)、進(jìn)程的狀態(tài)極其轉(zhuǎn)換?

? ? 系統(tǒng)中的諸多進(jìn)程并發(fā)運(yùn)行,并因競爭系統(tǒng)資源而相互依賴相互制約,因而進(jìn)程執(zhí)行時呈現(xiàn)了“運(yùn)行—暫停—運(yùn)行”的間斷性。進(jìn)程執(zhí)行時的間斷性可用進(jìn)程的狀態(tài)及其狀態(tài)的轉(zhuǎn)換來描述。?

1. 進(jìn)程的三種基本狀態(tài)

? ? 通常,一個進(jìn)程必須有就緒、運(yùn)行和等待三種基本狀態(tài)。?

(1)就緒狀態(tài)?

? ? 當(dāng)進(jìn)程已分配到除處理器(CPU)以外的所有必要資源后,只要再獲得處理器就可以立即執(zhí)行,這時進(jìn)程的狀態(tài)稱為就緒狀態(tài)。

? ? 在一個系統(tǒng)里,可以有多個進(jìn)程同時處于就緒狀態(tài),通常把這些就緒進(jìn)程排成一個或多個隊列,稱為就緒隊列。

(2)運(yùn)行狀態(tài)

? ? 處于就緒狀態(tài)的進(jìn)程一旦獲得了處理器,就可以運(yùn)行,進(jìn)程狀態(tài)也就處于運(yùn)行狀態(tài)。

? ? 在單處理器系統(tǒng)中,只能有一個進(jìn)程處于運(yùn)行狀態(tài)。在多處理器系統(tǒng)中,可能有多個進(jìn)程處于運(yùn)行狀態(tài)。

(3)等待狀態(tài)

? ? 正在運(yùn)行的進(jìn)程因?yàn)榘l(fā)生某些事件(如請求輸入/輸出、申請額外空間等)而暫停運(yùn)行,這種受阻暫停的狀態(tài)稱為等待狀態(tài)。

? ? 通常將處于等待狀態(tài)的進(jìn)程排成一個隊列,稱為等待隊列。在有些系統(tǒng)中也會按照等待原因的不同將處于等待狀態(tài)的進(jìn)程排成多個隊列。?

2. 進(jìn)程狀態(tài)的轉(zhuǎn)換?

?操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

? ? (三)、進(jìn)程的掛起狀態(tài)?

1. 掛起狀態(tài)的引入?

? ? 在很多系統(tǒng)中,進(jìn)程只有上述三種基本狀態(tài)。但在另一些系統(tǒng)中,由于某種需要又增加了一些新的進(jìn)程狀態(tài),其中最重要最常見的是掛起狀態(tài)。

? ? 引入掛起狀態(tài)主要是基于下列需求:

? ? (1)用戶的需求;

? ? (2)父進(jìn)程的需求;

????(3)操作系統(tǒng)的需求;

? ? (4)對換的需求;

?? ? 引入掛起狀態(tài)后的進(jìn)程狀態(tài)轉(zhuǎn)換過程如下圖所示。

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

? ? (四)、進(jìn)程控制塊PCB?

1. 進(jìn)程控制塊的作用?

? ? 進(jìn)程控制塊PCB(Process Control Block)是進(jìn)程實(shí)體的重要組成部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)。在進(jìn)程控制塊中記錄了操作系統(tǒng)所需要的、用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需要的全部信息。換句話說,在進(jìn)程的整個生命周期中,操作系統(tǒng)都要通過進(jìn)程的PCB來對并發(fā)運(yùn)行的進(jìn)程進(jìn)行管理和控制。

? ? 由此看來,進(jìn)程控制塊是系統(tǒng)對進(jìn)程控制采用的數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)是根據(jù)進(jìn)程的PCB而感知進(jìn)程存在的。所以,進(jìn)程控制塊是進(jìn)程存在的唯一標(biāo)志。 PCB可以被多個系統(tǒng)模塊讀取和修改,如調(diào)度模塊、資源分配模塊、中斷處理模塊、監(jiān)督和分析模塊等。因?yàn)镻CB經(jīng)常被系統(tǒng)訪問,因此常駐主存。系統(tǒng)把所有的PCB組織成若干個鏈表(或隊列),存放在操作系統(tǒng)中專門開辟的PCB區(qū)內(nèi)。

2. 進(jìn)程控制塊的內(nèi)容?

(1)進(jìn)程標(biāo)志信息

? ? 進(jìn)程標(biāo)識符用于標(biāo)識一個進(jìn)程,通常有外部標(biāo)識符和內(nèi)部標(biāo)識符兩種。 ? ?

? ? ① 外部標(biāo)識符:? ?

由進(jìn)程創(chuàng)建者命名,通常是由字母、數(shù)字所組成的一個字符串,在用戶(進(jìn)程)訪問該進(jìn)程時使用。外部標(biāo)識符都便于記憶,如計算進(jìn)程、打印進(jìn)程、發(fā)送進(jìn)程、接收進(jìn)程等。

? ? ② 內(nèi)部標(biāo)識符 ? ??

? ? 為方便系統(tǒng)使用而設(shè)置的。操作系統(tǒng)為每一個進(jìn)程賦予唯一的一個整數(shù),把它作為內(nèi)部標(biāo)識符。內(nèi)部標(biāo)識符通常就是一個進(jìn)程的序號。

(2)說明信息(進(jìn)程調(diào)度信息)

? ? 說明信息是與進(jìn)程調(diào)度有關(guān)的狀態(tài)信息,它包括:

  • 進(jìn)程狀態(tài)。它指明進(jìn)程當(dāng)前的狀態(tài),作為進(jìn)程調(diào)度和對換時的依據(jù)。
  • 優(yōu)先權(quán)高的進(jìn)程將優(yōu)先獲得處理器。
  • 進(jìn)程調(diào)度所需的其他信息。其內(nèi)容與所采用的進(jìn)程調(diào)度算法有關(guān),如進(jìn) ?程等待時間、進(jìn)程已運(yùn)行時間等。
  • ?等待事件是指進(jìn)程由運(yùn)行狀態(tài)轉(zhuǎn)變?yōu)榈却隣顟B(tài)時所等待發(fā)生的事件,即等待原因。

?(3)現(xiàn)場信息(處理器狀態(tài)信息)

? ? 現(xiàn)場信息是用于保留進(jìn)程存放在處理器中的各種信息,主要由處理器中的各個寄存器的內(nèi)容組成。尤其是當(dāng)進(jìn)程暫停運(yùn)行時,這些寄存器內(nèi)的信息將被保存在PCB里,當(dāng)該進(jìn)程重新運(yùn)行時,能從上次停止的地方繼續(xù)運(yùn)行。

  • 通用寄存器。其中的內(nèi)容可以被用戶程序訪問,用于暫存信息。
  • 指令計數(shù)器。用于存放要訪問的下一條指令的地址。
  • 程序狀態(tài)字。用于保存當(dāng)前處理器的狀態(tài)信息,如運(yùn)行方式、中斷屏蔽標(biāo)志等。
  • 用戶棧指針。每個用戶進(jìn)程都有一個或若干個與之相關(guān)的關(guān)系棧,用于存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址,棧指針指向堆棧的棧頂。?

(4)管理信息(進(jìn)程控制信息)?

? ? 管理信息包括進(jìn)程資源、控制機(jī)制等一些進(jìn)程運(yùn)行所需要的信息。

  • ?程序和數(shù)據(jù)的地址。它是指該進(jìn)程的程序和數(shù)據(jù)所在的主存和外存地址,以便該進(jìn)程再次運(yùn)行時,能夠找到程序和數(shù)據(jù)。
  • 進(jìn)程同步和通信機(jī)制。它是指實(shí)現(xiàn)進(jìn)程同步和進(jìn)程通信時所采用的機(jī)制,如消息隊列指針、信號量等。
  • ?資源清單。該清單中存放有除CPU以外,進(jìn)程所需的全部資源和已經(jīng)分配到的資源。
  • ?鏈接指針。它將指向該進(jìn)程所在隊列的下一個進(jìn)程的PCB的首地址。?

(5)進(jìn)程控制塊的組織方式?

(1)鏈接方式

? ? 把具有相同狀態(tài)的PCB用鏈接指針鏈接成隊列,如就緒隊列、等待隊列和空閑隊列等。就緒隊列中的PCB將按照相應(yīng)的進(jìn)程調(diào)度算法進(jìn)行排序。而等待隊列也可以根據(jù)等待原因的不同,將處于等待狀態(tài)的進(jìn)程的PCB排成等待I/O隊列、等待主存隊列等多個隊列。

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

(2)索引方式

? ? 系統(tǒng)根據(jù)各個進(jìn)程的狀態(tài)建立不同的索引表,如就緒索引表、等待索引表等,并把各個索引表在主存的首地址記錄在主存中的專用單元里,也可以稱為表指針。在每個索引表的表目中,記錄著具有相同狀態(tài)的各個PCB在表中的地址。?

操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

?(6)進(jìn)程控制原語

? ? 原語是指具有特定功能的不被中斷的過程。它主要用于實(shí)現(xiàn)操作系統(tǒng)的一些專門控制操作。用于進(jìn)程控制的原語有:

  • ?(1)創(chuàng)建原語 ? ? 用于為一個進(jìn)程分配工作區(qū)和建立PCB,置該進(jìn)程為就緒狀態(tài)。
  • (2)撤銷原語 ? ? 用于一個進(jìn)程工作結(jié)束后,收回它的工作區(qū)和PCB。
  • (3)等待原語 ? ? 用于進(jìn)程在運(yùn)行過程中發(fā)生等待事件時,把進(jìn)程的狀態(tài)改為等待狀態(tài)。
  • (4)喚醒原語 ? ? 用于當(dāng)進(jìn)程等待的事件結(jié)束時,把進(jìn)程的狀態(tài)改為就緒狀態(tài)。

三、進(jìn)程控制

(一)操作系統(tǒng)內(nèi)核

核心態(tài):又稱管態(tài)、系統(tǒng)態(tài),是操作系統(tǒng)管理程序執(zhí)行時計算機(jī)所處的狀態(tài)。這種狀態(tài)具有較高的特權(quán),能執(zhí)行一切指令,訪問所有的寄存器和存儲器。

用戶態(tài):又稱目態(tài),是用戶執(zhí)行程序時計算機(jī)所處的狀態(tài)。這種狀態(tài)具有較低的特權(quán),只有執(zhí)行規(guī)定的指令,訪問指定的寄存器和存儲器。

用戶態(tài)和內(nèi)核態(tài)是操作系統(tǒng)中的兩種不同的運(yùn)行級別。用戶態(tài)是指應(yīng)用程序運(yùn)行時所處的狀態(tài),而內(nèi)核態(tài)是指操作系統(tǒng)運(yùn)行時所處的狀態(tài)。在用戶態(tài)下,應(yīng)用程序可以訪問自己的內(nèi)存空間和一些受限制的系統(tǒng)資源,但不能直接訪問硬件設(shè)備和操作系統(tǒng)的核心功能。而在內(nèi)核態(tài)下,操作系統(tǒng)可以訪問所有的系統(tǒng)資源和硬件設(shè)備,并且可以執(zhí)行所有的核心功能。

用戶態(tài)和內(nèi)核態(tài)之間的切換是通過系統(tǒng)調(diào)用、異常和外圍設(shè)備中斷來實(shí)現(xiàn)的。當(dāng)應(yīng)用程序需要訪問受限制的系統(tǒng)資源或執(zhí)行核心功能時,它會發(fā)起一個系統(tǒng)調(diào)用,這時操作系統(tǒng)會將應(yīng)用程序的狀態(tài)切換到內(nèi)核態(tài),執(zhí)行相應(yīng)的操作,然后將狀態(tài)切換回用戶態(tài),繼續(xù)執(zhí)行應(yīng)用程序。

用戶態(tài)和內(nèi)核態(tài)之間的切換是有開銷的,因?yàn)樾枰4婧突謴?fù)現(xiàn)場、復(fù)制參數(shù)和代碼等操作。這也是為什么說用戶態(tài)和內(nèi)核態(tài)切換的開銷大的原因。

特權(quán)指令和非特權(quán)指令

在計算機(jī)體系結(jié)構(gòu)中,存在兩種主要類型的指令:特權(quán)指令和非特權(quán)指令。它們在處理器的執(zhí)行權(quán)限方面有所區(qū)別。

特權(quán)指令

特權(quán)指令:系統(tǒng)態(tài)下運(yùn)行的指令(相當(dāng)于系統(tǒng)指令),對內(nèi)存的訪問不受限制,可以訪問用戶空間和系統(tǒng)空間,不允許應(yīng)用程序使用。

特權(quán)指令是那些需要較高執(zhí)行權(quán)限的指令,通常由操作系統(tǒng)或內(nèi)核執(zhí)行。這些指令涉及到對系統(tǒng)資源的管理和控制,如內(nèi)存管理、I/O 操作、中斷處理等。只有在特殊的特權(quán)級別下才能執(zhí)行這些指令,一般用戶程序無法直接執(zhí)行它們。這有助于確保系統(tǒng)的安全性和穩(wěn)定性。

常見的特權(quán)指令包括:

1. 操作系統(tǒng)調(diào)用指令
2. 修改頁表的指令
3. 中斷和異常處理指令
4. I/O 操作相關(guān)指令
5. 修改控制寄存器的指令
非特權(quán)指令

非特權(quán)指令:在用戶態(tài)運(yùn)行的指令,應(yīng)用程序所使用的所有指令,訪問內(nèi)存受限,只允許訪問用戶空間,不能對系統(tǒng)中的軟件和硬件直接訪問。

非特權(quán)指令是那些可以由普通用戶程序直接執(zhí)行的指令。它們通常涉及到一般的計算、數(shù)據(jù)傳輸和邏輯運(yùn)算等基本操作。非特權(quán)指令執(zhí)行時不會對系統(tǒng)的關(guān)鍵資源產(chǎn)生直接影響,因此可以由用戶程序自由使用。

常見的非特權(quán)指令包括:

1. 數(shù)據(jù)移動指令(如MOV)
2. 算術(shù)運(yùn)算指令(如ADD、SUB)
3. 邏輯運(yùn)算指令(如AND、OR)
4. 條件分支指令(如JUMP)
5. 棧操作指令(如PUSH、POP)

?通過將特權(quán)指令和非特權(quán)指令分開,計算機(jī)體系結(jié)構(gòu)可以實(shí)現(xiàn)更好的安全性和系統(tǒng)穩(wěn)定性,確保只有授權(quán)的代碼可以執(zhí)行對系統(tǒng)關(guān)鍵資源的敏感操作。

? ? ?(二)、進(jìn)程創(chuàng)建

? ? 在系統(tǒng)中,只有進(jìn)程才能得到運(yùn)行。因此,程序要想運(yùn)行,就必須為之創(chuàng)建進(jìn)程。進(jìn)程運(yùn)行結(jié)束,還必須撤銷它。

? ? (1)用戶登錄:在分時系統(tǒng)中,用戶鍵入登錄命令后,如果是合法用戶,系統(tǒng)將為該終端用戶建立一個進(jìn)程,并把它放入就緒隊列。?

? ? (2)作業(yè)調(diào)度:在批處理系統(tǒng)中,當(dāng)作業(yè)調(diào)度程序調(diào)度某個作業(yè)時,便將該作業(yè)裝入主存,為其分配必要的資源,并為之創(chuàng)建進(jìn)程,放入就緒隊列。?

? ? (3)提供服務(wù):當(dāng)運(yùn)行中的用戶進(jìn)程提出某種請求后,系統(tǒng)將專門創(chuàng)建一個進(jìn)程來提供用戶所需要的服務(wù)。

? ? (4)應(yīng)用請求:基于應(yīng)用進(jìn)程自己的需要,由它自己創(chuàng)建一個新進(jìn)程,這個新進(jìn)程也稱為該進(jìn)程的子進(jìn)程。

進(jìn)程創(chuàng)建的處理過程?

? ? 一旦操作系統(tǒng)發(fā)現(xiàn)了要求創(chuàng)建進(jìn)程的事件后,便調(diào)用進(jìn)程創(chuàng)建原語,按照下列步驟創(chuàng)建一個新進(jìn)程:

? ? ① 為新進(jìn)程分配唯一的進(jìn)程標(biāo)識符,并從PCB隊列中申請一個空閑的PCB。

? ? ② 為新進(jìn)程的程序和數(shù)據(jù),以及用戶棧分配相應(yīng)的主存空間及其他必要的資源。

? ? ③ 初始化PCB中的相應(yīng)信息,如標(biāo)識信息、處理器信息、進(jìn)程控制信息等。

? ? ④ 如果就緒隊列可以接納新進(jìn)程,便將新進(jìn)程加入到就緒隊列中。

? ? (三)、進(jìn)程撤銷?

? ? (1)進(jìn)程正常結(jié)束 ? ? 這是指程序運(yùn)行到最后一條指令后。如在C語言程序的函數(shù)調(diào)用中,執(zhí)行函數(shù)調(diào)用的最后一條指令return后,結(jié)束該函數(shù)。

? ? (2)進(jìn)程異常錯誤 ? ? 在進(jìn)程運(yùn)行期間,由于出現(xiàn)某些錯誤和故障而使進(jìn)程被迫中止。例如越界錯誤、超時故障、非法指令錯、運(yùn)行超時、等待超時、算術(shù)運(yùn)算錯、I/O故障等。

? ? (3)進(jìn)程應(yīng)外界的請求而終止運(yùn)行 ? ? 例如,操作員或操作系統(tǒng)要求父進(jìn)程干預(yù)或父進(jìn)程結(jié)束等。

進(jìn)程撤銷的處理過程,?一旦操作系統(tǒng)發(fā)現(xiàn)了要求終止進(jìn)程的事件后,便調(diào)用進(jìn)程終止原語,按照下列步驟終止指定的進(jìn)程:

? ? ① 根據(jù)被終止進(jìn)程的標(biāo)識符,從PCB集合中檢索該進(jìn)程的PCB,讀出進(jìn)程狀態(tài)。

? ? ② 若該進(jìn)程處于運(yùn)行狀態(tài),則立即終止該進(jìn)程的運(yùn)行。

? ? ③ 若該進(jìn)程有子孫進(jìn)程,還要將其子孫進(jìn)程終止。

? ? ④ 將該進(jìn)程所占用的資源回收,歸還給父進(jìn)程或操作系統(tǒng)。

? ? ⑤ 將被終止進(jìn)程的PCB從所在隊列中移出,撤銷該進(jìn)程的PCB,并將其加入到空閑的PCB隊列中。

? ? (四)、進(jìn)程等待(進(jìn)程阻塞)

? ? (1)請求系統(tǒng)服務(wù) ? ? 正在運(yùn)行的進(jìn)程請求系統(tǒng)提供服務(wù)時,例如申請打印機(jī)打印,但申請服務(wù)資源被另外的進(jìn)程占有,該進(jìn)程只能處于等待狀態(tài)。

? ? (2)啟動某種操作 ? ? 正在運(yùn)行的進(jìn)程啟動某種操作后,其后續(xù)命令必須在該操作完成后才能運(yùn)行,所以要先等待該進(jìn)程。

? ? (3)新數(shù)據(jù)尚未到達(dá) ? ? 對于相互合作的進(jìn)程,如果一個進(jìn)程需要先獲得另一個進(jìn)程提供的數(shù)據(jù)后才能運(yùn)行,則只有等待所需要的數(shù)據(jù)到達(dá)。

? ? (4)無新工作可做 ? ? 系統(tǒng)往往設(shè)置一些具有特定功能的系統(tǒng)進(jìn)程,每當(dāng)這種進(jìn)程完成任務(wù)后,便把自己阻塞起來等待新任務(wù)的到來。

??進(jìn)程等待的處理過程,? ? 一旦操作系統(tǒng)發(fā)現(xiàn)了要求等待進(jìn)程的事件后,便調(diào)用進(jìn)程等待原語,按照下列步驟阻塞指定的進(jìn)程:

? ? ① 立即停止執(zhí)行該進(jìn)程。

? ? ② 修改進(jìn)程控制塊中的相關(guān)信息。把進(jìn)程控制塊中的運(yùn)行狀態(tài)由“運(yùn)行”狀態(tài)改為“等待”狀態(tài),并填入等待的原因,以及進(jìn)程的各種狀態(tài)信息。

? ? ③ 把進(jìn)程控制塊插入到等待隊列。根據(jù)等待隊列的組織方式,把等待進(jìn)程的進(jìn)程控制塊插入等待隊列中。

? ? ④ 轉(zhuǎn)調(diào)度程序重新調(diào)度,運(yùn)行就緒隊列中的其他進(jìn)程。

? ? (五)、進(jìn)程喚醒?

? ? (1)請求系統(tǒng)服務(wù)得到滿足 ? ? 因請求服務(wù)得不到滿足的等待隊列中的進(jìn)程,得到相應(yīng)的服務(wù)要求時,處于等待隊列中的進(jìn)程就被喚醒。

? ? (2)啟動某種操作完成 ? ? 處于等待某種操作完成的等待隊列中的進(jìn)程,其等待的操作已經(jīng)完成,可以執(zhí)行其后續(xù)命令,則必須把它喚醒。

? ? (3)新數(shù)據(jù)已經(jīng)到達(dá) ? ? 對于相互合作的進(jìn)程,如果一個進(jìn)程需要另一個進(jìn)程提供的數(shù)據(jù)已經(jīng)到達(dá),則把因此而處于等待的進(jìn)程喚醒。

? ? (4)有新工作可做 ? ? 系統(tǒng)中的具有特定功能的系統(tǒng)進(jìn)程,接收到新的任務(wù)時,就必須喚醒它。

進(jìn)程喚醒的過程?,? ? 一旦操作系統(tǒng)發(fā)現(xiàn)了要求喚醒進(jìn)程的事件后,便調(diào)用進(jìn)程喚醒原語,按照下列步驟喚醒指定的進(jìn)程。

? ? ① 從等待隊列中找到該進(jìn)程。

? ? ② 修改該進(jìn)程控制塊中的相關(guān)內(nèi)容,把等待狀態(tài)改為就緒狀態(tài),刪除等待原語等。

? ? ③ 把進(jìn)程控制塊插入到就緒隊列中。按照就緒隊列的組織方式,把被喚醒的進(jìn)程的進(jìn)程控制塊插入到就緒隊列中。

? ? 四、進(jìn)程同步

? ? 對于相關(guān)進(jìn)程間的同步和互斥,必須進(jìn)行有效的控制。這種控制涉及幾個基本概念,即臨界資源、臨界區(qū)、進(jìn)程同步和進(jìn)程互斥。

(一)進(jìn)程同步的概念?

1. 臨界資源

? ? 在系統(tǒng)中有許多硬件或軟件資源,如打印機(jī)、公共變量等,這些資源在一段時間內(nèi)只允許一個進(jìn)程訪問或使用,這種資源稱為臨界資源。?

2. 臨界區(qū)

? ? 作為臨界資源,不論是硬件臨界資源,還是軟件臨界資源,多個并發(fā)進(jìn)程都必須互斥地訪問或使用,這時把每個進(jìn)程中訪問臨界資源的那段代碼稱為臨界區(qū)。而這些并發(fā)進(jìn)程中涉及臨界資源訪問的那些程序段稱為相關(guān)臨界區(qū)。

? ? 在臨界區(qū)之前增加一段用于檢查的代碼,這段代碼稱為進(jìn)入?yún)^(qū)。相應(yīng)地,在臨界區(qū)后面也要加入一段代碼,稱為退出區(qū),用于將臨界資源的被訪問標(biāo)志恢復(fù)為未被訪問標(biāo)志。

3. 進(jìn)程同步

? ? 進(jìn)程同步是指多個相關(guān)進(jìn)程在執(zhí)行次序上的協(xié)調(diào),這些進(jìn)程相互合作,在一些關(guān)鍵點(diǎn)上需要相互等待或相互通信。通過臨界區(qū)可以協(xié)調(diào)進(jìn)程間相互合作的關(guān)系,這就是進(jìn)程同步。

4. 進(jìn)程互斥?

? ? 進(jìn)程互斥是指當(dāng)一個進(jìn)程進(jìn)入臨界區(qū)使用臨界資源時,另一個進(jìn)程必須等待。當(dāng)占用臨界資源的進(jìn)程退出臨界區(qū)后,另一個進(jìn)程才被允許使用臨界資源。通過臨界區(qū)協(xié)調(diào)進(jìn)程間資源共享的關(guān)系,就是進(jìn)程互斥。進(jìn)程互斥是同步的一種特例。?

? ? (二)、進(jìn)程同步機(jī)制應(yīng)遵循的原則?

? ? 為了實(shí)現(xiàn)進(jìn)程的同步與互斥,可以利用軟件方法,也可以在系統(tǒng)中設(shè)置專門的同步機(jī)制來協(xié)調(diào)各個進(jìn)程。但是,所有的同步機(jī)制都必須遵循以下四條原則。

1. 空閑讓進(jìn):當(dāng)無進(jìn)程處于臨界區(qū)時,臨界資源處于空閑狀態(tài),可以允許一個請求進(jìn)入臨界區(qū)的進(jìn)程進(jìn)入自己的臨界區(qū),有效地使用臨界資源。

2. 忙則等待:已有進(jìn)程進(jìn)入自己的臨界區(qū)時,意味著臨界資源正被訪問,因而其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證進(jìn)程互斥地使用臨界資源。

3. 有限等待: 對要求訪問臨界資源的進(jìn)程,應(yīng)保證該進(jìn)程在有效的時間內(nèi)進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)。

4. 讓權(quán)等待:當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時,應(yīng)立即釋放處理器,以免陷入“忙等”。?

? ? (三)、進(jìn)程同步機(jī)制——鎖?

1. 鎖的概念?

? ? 在同步機(jī)制中,常用一個變量來代表臨界資源的狀態(tài),稱它為鎖。通常用“0”表示資源可用,相當(dāng)于鎖打開。用“1”表示資源已被占用,相當(dāng)于鎖閉合。

互斥鎖:最簡單的一種線程同步方法,會阻塞線程;

自旋鎖:避免切換的一種線程同步方法,屬于“忙等待”?;

讀寫鎖:為“讀多寫少”的資源設(shè)計的線程同步方法,可以顯著提高性能;

條件變量:相對復(fù)雜的一種線程同步方法,有更靈活的使用方法。

? ? ?(四)、進(jìn)程同步機(jī)制——信號量

1. 信號量的概念

? ? 信號量是一種特殊變量,它用來表示系統(tǒng)中資源的使用情況。 ? ? 整型信號量就是一個整型變量。當(dāng)其值大于“0”時,表示系統(tǒng)中對應(yīng)可用資源的數(shù)目;當(dāng)其值小于“0”時,其絕對值表示因該類資源而被等待的進(jìn)程的數(shù)目;當(dāng)其值等于“0”時,表示系統(tǒng)中對應(yīng)資源已經(jīng)用完,并且沒有因該類資源而被等待的進(jìn)程。

2. 對信號量的操作

? ? 對于整型信號量,僅能通過兩個標(biāo)準(zhǔn)的原語操作來訪問,這兩個操作被稱為P操作、V操作,也合稱為PV操作。其中P操作在進(jìn)入臨界區(qū)前執(zhí)行,V操作在退出臨界區(qū)后執(zhí)行。

? ?利用信號量實(shí)現(xiàn)進(jìn)程同步的方法,使用PV操作的規(guī)則

?? ? (1)分清哪些是互斥問題(互斥訪問臨界資源的),哪些是同步問題(具有前后執(zhí)行順序要求的)。

? ? (2)對于互斥問題要設(shè)置互斥信號量,互斥信號量的個數(shù)只與臨界資源的種類有關(guān)。通常有幾類臨界資源就設(shè)置幾個互斥信號量,且初值為1,代表臨界資源可用。

? ? (3)對于同步問題要設(shè)置同步信號量,通常同步信號量的個數(shù)與參與同步的進(jìn)程種類有關(guān),即同步關(guān)系涉及幾類進(jìn)程,就有幾個同步信號量。

? ? (4)在每個進(jìn)程中用于實(shí)現(xiàn)互斥的PV操作必須成對出現(xiàn);用于實(shí)現(xiàn)同步的PV操作也必須成對出現(xiàn),但是它們分別出現(xiàn)在不同的進(jìn)程中;在某個進(jìn)程中如果同時存在互斥與同步的P操作,則其順序不能顛倒,必須先執(zhí)行對同步信號量的P操作,再執(zhí)行對互斥信號量的P操作,但是V操作的順序沒有嚴(yán)格要求。

五、進(jìn)程通信?

進(jìn)程通信是指進(jìn)程之間的信息交換,其所交換的信息量少則幾個字節(jié),多則成千上萬個字節(jié),

? ? (一)、共享存儲器系統(tǒng)?

? ? 在共享存儲器系統(tǒng)中,相互通信的進(jìn)程共享某些數(shù)據(jù)結(jié)構(gòu)或存儲區(qū),進(jìn)程之間能夠通過它們進(jìn)行通信。共享存儲器系統(tǒng)又可以分為共享數(shù)據(jù)結(jié)構(gòu)和共享存儲區(qū)兩種方式。

?1. 共享數(shù)據(jù)結(jié)構(gòu)方式

? ? 在這種通信方式下,相互通信的進(jìn)程共用某些數(shù)據(jù)結(jié)構(gòu),并通過這些數(shù)據(jù)結(jié)構(gòu)交換信息。這種方式與信號量機(jī)制相比,并沒有發(fā)生太大的變化,比較低效、復(fù)雜,只適用于傳送少量的數(shù)據(jù)。

2. 共享存儲區(qū)方式

? ? 這種通信方式是在存儲器中劃出一塊共享存儲區(qū),相互通信的進(jìn)程可以通過對共享存儲區(qū)中的數(shù)據(jù)進(jìn)行讀或?qū)憗韺?shí)現(xiàn)通信。這種方式效率高,可以傳送較多的數(shù)據(jù)。

? ? (二)、消息傳遞系統(tǒng)

?? ? 在消息傳遞系統(tǒng)中,進(jìn)程間的數(shù)據(jù)交換是以消息為單位進(jìn)行的。用戶直接利用系統(tǒng)中提供的一組通信命令(原語)進(jìn)行通信,大大提高了工作效率,又簡化了程序編制的復(fù)雜性。因此,消息傳遞系統(tǒng)成為最常用的高級通信方式。

1. 直接通信方式

? ? 發(fā)送進(jìn)程使用發(fā)送原語直接將消息發(fā)送給接收進(jìn)程,并將它掛在接收進(jìn)程的消息緩沖隊列上。接收進(jìn)程使用接收原語從消息緩沖隊列中取出消息。

? ? 通常,系統(tǒng)提供兩條通信原語: ? ?

(1)發(fā)送原語:Send(Receiver,message); ? ?

(2)接收原語:Receive(Sender,message);

2. 間接通信方式?

? ? 發(fā)送進(jìn)程與接收進(jìn)程通過中間實(shí)體——信箱來完成通信,既可以實(shí)現(xiàn)實(shí)時通信,又可以實(shí)現(xiàn)非實(shí)時通信。

? ?(1)信箱通信的操作

? ? ① 信箱的創(chuàng)建與撤銷 ? ? 進(jìn)程可以利用信箱創(chuàng)建原語來建立一個新信箱。創(chuàng)建進(jìn)程應(yīng)給出信箱的名字、信箱屬性等。當(dāng)信箱所屬進(jìn)程不再需要該信箱時,可用信箱撤銷原語來撤銷信箱。

? ? ② 消息的發(fā)送與接收 ? ? 相互通信的進(jìn)程利用系統(tǒng)提供的下述通信原語來實(shí)現(xiàn)消息的發(fā)送與接收。 ? ? Send(mailbox,message):將一個消息發(fā)送到指定信箱。 ? ? Receive(mailbox,message):從指定信箱中接收一個消息。

? ? 信箱可以由操作系統(tǒng)創(chuàng)建,也可以由用戶創(chuàng)建。創(chuàng)建者是信箱的擁有者,據(jù)此,可以把信箱分為以下三類:

? ? ① 私有信箱 ? ? 用戶進(jìn)程可以為自己建立一個新信箱,并作為進(jìn)程的一部分。信箱的擁有者有權(quán)從信箱中讀取消息,其他用戶只能將自己的消息發(fā)送到該信箱中。

? ? ② 公用信箱 ? ? 它由操作系統(tǒng)創(chuàng)建,并提供給系統(tǒng)中所有核準(zhǔn)的用戶進(jìn)程使用。核準(zhǔn)的進(jìn)程既可以把消息發(fā)送到該信箱,又可以從信箱中取出發(fā)送給自己的消息。

? ? ③ 共享信箱 ? ? 它實(shí)際上是某種進(jìn)程創(chuàng)建的私有信箱。在創(chuàng)建時或創(chuàng)建后,又指明它是可以共享的,同時指出共享進(jìn)程(用戶)的名字,此時就成為共享信箱。?

? ?(3)通信進(jìn)程間的關(guān)系?

? ? ① 一對一關(guān)系 ? ? 在一個發(fā)送進(jìn)程和一個接收進(jìn)程之間建立一條專用的通信通道,使它們之間的通信不受其他進(jìn)程的影響。

? ? ② 多對一關(guān)系 ? ? 允許提供服務(wù)的一個接收進(jìn)程與多個用戶發(fā)送進(jìn)程之間進(jìn)行通信,也稱為客戶機(jī)/服務(wù)器方式。

? ? ③ 一對多關(guān)系 ? ? 允許一個發(fā)送進(jìn)程與多個接收進(jìn)程進(jìn)行通信,使發(fā)送進(jìn)程可以用廣播形式向一組或全部接收者發(fā)送消息。

? ? ④ 多對多關(guān)系 ? ? 允許建立一個公用信箱,讓多個進(jìn)程既可以把消息發(fā)送到該信箱,又可以從信箱中取出發(fā)送給自己的消息。?

? ? (三)、管道通信系統(tǒng)?

? ? 所謂管道是指連接讀進(jìn)程和寫進(jìn)程的,用于實(shí)現(xiàn)它們之間通信的共享文件。向管道提供輸入的發(fā)送進(jìn)程(寫進(jìn)程)以字符流的形式將大量數(shù)據(jù)送入管道,而接受管道輸出的接收進(jìn)程(讀進(jìn)程)可以從管道中接收數(shù)據(jù)。由于發(fā)送進(jìn)程和接收進(jìn)程是利用管道進(jìn)行通信的,故稱為管道通信方式。這種方式首創(chuàng)于UNIX系統(tǒng),因?yàn)樗軅魉痛罅康臄?shù)據(jù),又非常有效,所以又被引入到許多操作系統(tǒng)中。?

六、處理機(jī)調(diào)度?

?? ? 一、進(jìn)程調(diào)度算法的選取原則

1. 面向用戶的原則

?? ?(1)周轉(zhuǎn)時間短

? ?(2)響應(yīng)時間快

? ?(3)截止時間有保證

? ?(4)優(yōu)先權(quán)原則

2. 面向系統(tǒng)的原則

?? ?(1)系統(tǒng)吞吐量高

? ?(2)處理器利用率高

? ?(3)各類資源的平衡利用

? ? 二、常用的進(jìn)程調(diào)度算法

? ? 衡量調(diào)度算法優(yōu)劣的標(biāo)準(zhǔn)是比較不同算法下的周轉(zhuǎn)時間(或帶權(quán)周轉(zhuǎn)時間)和平均周轉(zhuǎn)時間(或平均帶權(quán)周轉(zhuǎn)時間)。平均周轉(zhuǎn)時間短或平均帶權(quán)周轉(zhuǎn)時間短的就是好算法。

1.先來先服務(wù)調(diào)度算法(FCFS)?

? ? 先來先服務(wù)調(diào)度算法是一種最簡單的調(diào)度算法,系統(tǒng)開銷最少。 ? ? 當(dāng)系統(tǒng)采用這種調(diào)度算法時,系統(tǒng)從就緒隊列中選擇一個最先進(jìn)入就緒隊列的進(jìn)程,把處理器分配給該進(jìn)程,使之得到執(zhí)行。進(jìn)程一旦占有了處理器,就一直運(yùn)行下去,直到完成或因發(fā)生某種事件而等待,才退出處理器。?

? ? 先來先服務(wù)調(diào)度算法的裁決模式是非搶占式的,優(yōu)先權(quán)函數(shù)=花費(fèi)在系統(tǒng)中的實(shí)際時間,仲裁規(guī)則是隨機(jī)的。這種調(diào)度算法有利于長進(jìn)程,而不利于短進(jìn)程?

2.短進(jìn)程優(yōu)先調(diào)度算法(SPF)?

? ? 短進(jìn)程優(yōu)先調(diào)度算法是從就緒隊列中選擇一個運(yùn)行時間最短的進(jìn)程,將處理器分配給該進(jìn)程,使之占有處理器并運(yùn)行。直到該進(jìn)程完成或因發(fā)生某種事件而等待,才退出處理器。?

? ? 短進(jìn)程優(yōu)先調(diào)度算法的裁決模式是非搶占式的,優(yōu)先權(quán)函數(shù)=-運(yùn)行時間,仲裁規(guī)則是按照時間先后順序或隨機(jī)方式。這種調(diào)度算法照顧到了系統(tǒng)中的短進(jìn)程,有效地降低了進(jìn)程的平均等待時間,提高了系統(tǒng)的吞吐量。但是,這種算法對長進(jìn)程不利。?

? ? 雖然短進(jìn)程優(yōu)先調(diào)度算法對短進(jìn)程很好,但是也存在不容忽視的缺點(diǎn):?

  1. 該算法對長進(jìn)程非常不利。
  2. 該算法和先來先服務(wù)調(diào)度算法一樣,不能保證緊急進(jìn)程得到及時的處理。
  3. 進(jìn)程調(diào)度的依據(jù)是用戶提供的估計運(yùn)行時間,致使該算法不一定能真正做到短進(jìn)程優(yōu)先調(diào)度。?

3.最短剩余時間優(yōu)先調(diào)度算法(SRT)?

? ? 最短剩余時間優(yōu)先調(diào)度算法是短進(jìn)程優(yōu)先調(diào)度算法的搶占式的動態(tài)版本。它將CPU分配給需要最少時間來完成的進(jìn)程。?

? ? 最短剩余時間優(yōu)先調(diào)度算法的裁決模式是搶占式的,優(yōu)先權(quán)函數(shù)是動態(tài)的,隨著進(jìn)程運(yùn)行和完成時間的減少而增加,仲裁規(guī)則是按照時間先后順序或隨機(jī)方式。這種調(diào)度算法充分照顧到了剩余運(yùn)行時間短的進(jìn)程。?

4.時間片輪轉(zhuǎn)調(diào)度算法(RR)?

? ? 在該算法中,系統(tǒng)將所有的就緒進(jìn)程按照進(jìn)入就緒隊列的先后次序排列。每次調(diào)度時把CPU分配給隊首進(jìn)程,讓其運(yùn)行一個時間片。當(dāng)時間片用完,由計時器發(fā)出時鐘中斷,調(diào)度程序暫停該進(jìn)程的運(yùn)行,使其退出處理器,并將它送到就緒隊列的末尾,等待下一輪調(diào)度運(yùn)行。然后,把CPU分配給就緒隊列中新的隊首進(jìn)程,同時也讓它運(yùn)行一個時間片。這樣就可以保證就緒隊列中的所有進(jìn)程在一定的時間(可以接受的等待時間)內(nèi)均能獲得一個時間片的運(yùn)行時間。?

? ? 時間片輪轉(zhuǎn)調(diào)度算法的裁決模式是面向時間片的,所有就緒進(jìn)程的優(yōu)先權(quán)函數(shù)值相同,仲裁規(guī)則是輪轉(zhuǎn)規(guī)則。這種調(diào)度算法適用于交互進(jìn)程的調(diào)度。?

? ? 在時間片輪轉(zhuǎn)調(diào)度算法中,時間片的大小對系統(tǒng)的性能有很大影響。因此,時間片的大小要適當(dāng),通常要考慮到以下幾個因素:?

? ? ① 系統(tǒng)對響應(yīng)時間的要求 ? ? 作為分時系統(tǒng)首先必須滿足系統(tǒng)對響應(yīng)時間的要求。響應(yīng)時間與進(jìn)程數(shù)目和時間片成正比。?

? ? ② 就緒隊列中進(jìn)程的數(shù)目 ? ? 在分時系統(tǒng)中,就緒隊列上的進(jìn)程數(shù)目是隨著在終端上機(jī)的用戶數(shù)目而改變的。時間片的大小應(yīng)反比于分時系統(tǒng)所配置的終端數(shù)目。?

? ? ③ 系統(tǒng)的處理能力 ? ? 系統(tǒng)的處理能力是必須保證用戶鍵入的常用命令能在一個時間片內(nèi)處理完畢,否則將無法取得滿意的響應(yīng)時間。?

5.優(yōu)先權(quán)調(diào)度算法?

? ? 為了使緊迫型進(jìn)程獲得優(yōu)先處理,引入了優(yōu)先權(quán)調(diào)度算法,也稱為外部優(yōu)先權(quán)調(diào)度算法。它是從就緒隊列中選擇一個優(yōu)先權(quán)最高的進(jìn)程,讓其獲得處理器并運(yùn)行。?

? ? 優(yōu)先權(quán)調(diào)度算法的裁決模式是搶占式的或非搶占式的,優(yōu)先權(quán)函數(shù)是用戶或系統(tǒng)賦給它的優(yōu)先權(quán),仲裁規(guī)則是隨機(jī)的或先進(jìn)先出的。?

? ? 對于優(yōu)先權(quán)調(diào)度算法,其關(guān)鍵在于是采用靜態(tài)優(yōu)先權(quán),還是動態(tài)優(yōu)先權(quán),以及如何確定進(jìn)程的優(yōu)先權(quán)。?

6.響應(yīng)比高者優(yōu)先調(diào)度算法(HRRN)?

? ? 響應(yīng)比高者優(yōu)先調(diào)度算法是一個比較折中的算法,它是從就緒隊列中選擇一個響應(yīng)比最高的進(jìn)程,讓其獲得處理器并運(yùn)行,直到該進(jìn)程完成或因等待某種事件而退出處理器為止。?

響應(yīng)比=響應(yīng)時間/要求服務(wù)時間=等待時間/要求服務(wù)時間?

? ? 響應(yīng)比高者優(yōu)先調(diào)度算法的裁決模式是非搶占式的,優(yōu)先權(quán)函數(shù)=響應(yīng)比,仲裁規(guī)則是隨機(jī)或按照先后次序。這種調(diào)度算法既照顧了短進(jìn)程,又考慮了進(jìn)程到達(dá)的先后次序,也不會使長進(jìn)程長時間得不到服務(wù)。因此,它是一個考慮比較全面的算法。但是每次進(jìn)行調(diào)度時,它都需要對各個進(jìn)程計算響應(yīng)比,所以系統(tǒng)開銷很大,比較復(fù)雜。?

? ? 三、常用的作業(yè)調(diào)度算法?

? ? ① 先來先服務(wù)調(diào)度算法 ? ? 按作業(yè)到達(dá)系統(tǒng)的先后次序進(jìn)行的調(diào)度。該算法優(yōu)先考慮在系統(tǒng)中等待時間最長的作業(yè)。這種算法容易實(shí)現(xiàn),但效率比較低,而且沒有考慮到緊迫作業(yè)和短作業(yè)。?

? ? ② 短作業(yè)優(yōu)先調(diào)度算法 ? ? 從作業(yè)的后備隊列中挑選運(yùn)行時間最短的作業(yè)作為下一個調(diào)度運(yùn)行對象。這種算法容易實(shí)現(xiàn),且效率較高,但未考慮長作業(yè)的利益。 ? ??

? ? ③ 響應(yīng)比高者優(yōu)先調(diào)度算法 ? ? 為了更有效地提高系統(tǒng)的利用率,可以采用響應(yīng)比高者優(yōu)先調(diào)度算法。響應(yīng)比高者優(yōu)先調(diào)度算法既照顧到了短作業(yè)和長作業(yè),又照顧到等待時間長的作業(yè),但對要求運(yùn)行緊迫的作業(yè),沒有充分考慮到。?

? ? ④ 優(yōu)先權(quán)調(diào)度算法????????? 優(yōu)先權(quán)調(diào)度算法是根據(jù)作業(yè)確定的優(yōu)先權(quán)來選取作業(yè),每次總是選取優(yōu)先權(quán)最高的作業(yè)。在優(yōu)先權(quán)調(diào)度算法中,為了照顧緊迫作業(yè)的運(yùn)行,可能使某些系統(tǒng)資源閑置,系統(tǒng)資源的利用率沒有充分地發(fā)揮。?

? ? ⑤ 分類調(diào)度算法????????? 分類調(diào)度算法是根據(jù)系統(tǒng)運(yùn)行情況和作業(yè)屬性將作業(yè)分類,作業(yè)調(diào)度時輪流從這些不同的作業(yè)類中挑選作業(yè)。分類調(diào)度算法雖然可以均衡使用各類資源,但是需要為不同類型的作業(yè)設(shè)置隊列,增加了系統(tǒng)開銷。?

? ? (1)先來先服務(wù)算法。作業(yè)的執(zhí)行情況如下表所示:?

作業(yè)

提交時間

運(yùn)行時間

開始時間

完成時間

周轉(zhuǎn)時間

帶權(quán)周轉(zhuǎn)時間

J1

8:00

1.0

8:00

9:00

1.0

1.0

J2

8:50

0.50

9:00

9:30

0.67

1.34

J3

9:00

0.20

9:30

9:42

0.7

3.5

J4

9:10

0.10

9:42

9:48

0.63

6.3

? ? 作業(yè)的執(zhí)行順序?yàn)椋篔1,J2,J3,J4。 ? ? 平均周轉(zhuǎn)時間=(1.0+0.67+0.7+0.63)/4=0.75小時 ? ? 平均帶權(quán)周轉(zhuǎn)時間=(1.0+1.34+3.5+6.3)/4=3.035小時?

? ? (2)短作業(yè)優(yōu)先算法。作業(yè)的執(zhí)行情況如下表所示:?

作業(yè)

提交時間

運(yùn)行時間

開始時間

完成時間

周轉(zhuǎn)時間

帶權(quán)周轉(zhuǎn)時間

J1

8:00

1.0

8:00

9:00

1.0

1.0

J2

8:50

0.50

9:18

9:48

0.97

1.94

J3

9:00

0.20

9:00

9:12

0.2

1.0

J4

9:10

0.10

9:12

9:18

0.13

1.3

? ? 作業(yè)的執(zhí)行順序?yàn)椋篔1,J3,J4,J2。 ? ? 平均周轉(zhuǎn)時間=(1.0+0.97+0.2+0.13)/4 = 0.575小時 ? ? 平均帶權(quán)周轉(zhuǎn)時間=(1.0+1.94+1.0+1.3)/4 = 1.31小時?

? ? (3)響應(yīng)比高者優(yōu)先算法。作業(yè)的執(zhí)行情況如下表所示:?

作業(yè)

提交時間

運(yùn)行時間

開始時間

完成時間

周轉(zhuǎn)時間

帶權(quán)周轉(zhuǎn)時間

J1

8:00

1.0

8:00

9:00

1.0

1.0

J2

8:50

0.50

9:18

9:48

0.97

1.94

J3

9:00

0.20

9:00

9:12

0.2

1.0

J4

9:10

0.10

9:12

9:18

0.13

1.3

?? ? 作業(yè)的執(zhí)行順序?yàn)椋篔1,J2,J4,J3。 ? ? 平均周轉(zhuǎn)時間=(1.0+0.67+0.8+0.43)/4=0.725小時 ? ? 平均帶權(quán)周轉(zhuǎn)時間=(1.0+1.34+4+4.3)/4=2.66小時

? ? 四、死鎖的基本概念?

1. 死鎖的概念?

? ? 死鎖是指多個進(jìn)程因競爭資源而造成的一種僵局現(xiàn)象,若無外力的作用,這些進(jìn)程都不能繼續(xù)運(yùn)行。?

2. 死鎖的原因?

? ?(1)競爭資源 ? ? 當(dāng)系統(tǒng)中供多個進(jìn)程共享的資源不足以同時滿足它們的需求時,引起它們對資源的競爭而產(chǎn)生死鎖。?

? ?(2)進(jìn)程推進(jìn)順序非法 ? ? 進(jìn)程在運(yùn)行過程中如果請求和釋放資源的順序不當(dāng),也可能會導(dǎo)致進(jìn)程死鎖。?

3. 產(chǎn)生死鎖的必要條件?

? ? 死鎖并不一定都會出現(xiàn),如果一旦產(chǎn)生死鎖,一定會滿足下述四個必要條件。?

? ?(1)互斥條件:進(jìn)程對分配到的資源進(jìn)行排他性、獨(dú)占性使用,即在一段時間內(nèi)某資源只能由一個進(jìn)程占用

? ?(2)請求和保持條件:進(jìn)程已經(jīng)擁有并保持了至少一個資源,但是,又請求新的資源,而新請求的資源又被其他進(jìn)程占有,此時請求進(jìn)程被等待,但對已獲得的資源保持不放。

? ?(3)不可剝奪條件:進(jìn)程所占有的資源在結(jié)束之前不能被剝奪,只能在運(yùn)行結(jié)束后由自己釋放。

? ?(4)環(huán)路等待條件:在發(fā)生死鎖時,必然存在一個“進(jìn)程—資源”的環(huán)形鏈。?

4. 處理死鎖的基本方法?

? ? 死鎖并不一定都會出現(xiàn),如果一旦產(chǎn)生死鎖,一定會滿足下述四個必要條件。?

? ?(1)預(yù)防死鎖 ? ? 預(yù)防死鎖是在進(jìn)行資源分配之前,通過設(shè)置某些資源分配的限制條件,來破壞產(chǎn)生死鎖的四個必要條件的一個或幾個。?

? ?(2)避免死鎖 ? ? 避免死鎖是在資源分配前不設(shè)置限制條件,在進(jìn)行資源分配的過程中,用某種方法對每次資源分配進(jìn)行管理,以避免某次分配使系統(tǒng)進(jìn)入不安全狀態(tài),以至產(chǎn)生死鎖。?

? ?(3)檢測和解除死鎖 ? ? 該方法首先是通過系統(tǒng)的檢測過程及時地檢查系統(tǒng)是否出現(xiàn)死鎖,并確定與死鎖有關(guān)的進(jìn)程和資源,然后通過撤銷或掛起一些死鎖中的進(jìn)程回收相應(yīng)的資源,進(jìn)行資源的再次分配,從而將進(jìn)程死鎖狀態(tài)解除。?

? ? 七、線程技術(shù)?

1. 線程的概念?

? ? 線程是進(jìn)程中的一個實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和運(yùn)行的基本單位。線程自己基本上不擁有系統(tǒng)資源,只擁有少量在運(yùn)行中必不可少的資源(如程序計數(shù)器、一組寄存器和棧),但是它可以與同屬于一個進(jìn)程的其他線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建和撤銷另一個線程,同一進(jìn)程中的多個線程之間可以并發(fā)運(yùn)行。線程之間也會相互制約,使其在運(yùn)行中呈現(xiàn)異步性。因此,線程同樣具有就緒、運(yùn)行、等待三種基本狀態(tài)。?

2. 線程與進(jìn)程的比較?

?操作系統(tǒng)(第二章-進(jìn)程管理),操作系統(tǒng),操作系統(tǒng),進(jìn)程,進(jìn)程控制,進(jìn)程同步,進(jìn)程通信

3. 線程的類型?

? ?(1)系統(tǒng)級線程?

? ? 系統(tǒng)級線程是依賴于系統(tǒng)控制的,即無論是用戶進(jìn)程中的線程,還是系統(tǒng)進(jìn)程中的線程,它們的創(chuàng)建、撤銷與切換都是由系統(tǒng)控制實(shí)現(xiàn)的。在系統(tǒng)中保留了一張線程控制塊,系統(tǒng)根據(jù)該線程控制塊來感知線程的存在,并對線程進(jìn)行控制。?

? ?(2)用戶級線程?

? ? 用戶級線程是由用戶控制的,對于用戶級線程的創(chuàng)建、撤銷與切換,都與系統(tǒng)控制無關(guān),完全由用戶自己管理。簡單來說就是系統(tǒng)并不知道有用戶級線程的存在,在系統(tǒng)中各種控制仍然是基于進(jìn)程的。?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-815412.html

到了這里,關(guān)于操作系統(tǒng)(第二章-進(jìn)程管理)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 操作系統(tǒng)第二章練習(xí)題

    第三部分 選擇題 1、在進(jìn)程管理中,當(dāng)(???? )時,進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。 ? C? A.進(jìn)程被進(jìn)程調(diào)度程序選中????????????? B.等待某一事件 C.等待的事件發(fā)生?????????????????????? D.時間片用完 2、分配到必要的資源并獲得處理機(jī)時的進(jìn)程狀態(tài)是(

    2024年02月07日
    瀏覽(31)
  • 操作系統(tǒng)(第5版羅寧 文艷軍編著)第二章課后習(xí)題答案

    ????????幾種常見的中斷包括: 輸入/輸出(I/O)中斷:當(dāng)計算機(jī)需要等待外部設(shè)備(如硬盤驅(qū)動器、鍵盤、鼠標(biāo))完成它們的任務(wù)時,它會發(fā)出I/O中斷。 時鐘中斷:時鐘中斷是一個計時器發(fā)出的中斷,它定期發(fā)生,以確保操作系統(tǒng)和其他軟件程序能夠在一定的時間內(nèi)運(yùn)行

    2024年02月08日
    瀏覽(24)
  • 第二章 進(jìn)程管理

    第二章 進(jìn)程管理

    目錄 2.1? 進(jìn)程的引入 2.1.1程序的順序執(zhí)行 1.程序的順序執(zhí)行 2.程序順序執(zhí)行時的特征 2.1.2? 程序的并發(fā)執(zhí)行及其特征 1.并發(fā)執(zhí)行的概念 2.程序并發(fā)執(zhí)行時的特征 2.1.3? 進(jìn)程的定義與特征 1.進(jìn)程的定義 2.進(jìn)程的特征 2.1.4? 進(jìn)程的基本狀態(tài)及轉(zhuǎn)換 1.進(jìn)程的三個基本狀態(tài)

    2024年02月04日
    瀏覽(27)
  • 【正點(diǎn)原子FPGA連載】第二章 安裝Ubuntu操作系統(tǒng) 摘自【正點(diǎn)原子】DFZU2EG_4EV MPSoC之嵌入式Linux開發(fā)指南

    【正點(diǎn)原子FPGA連載】第二章 安裝Ubuntu操作系統(tǒng) 摘自【正點(diǎn)原子】DFZU2EG_4EV MPSoC之嵌入式Linux開發(fā)指南

    1)實(shí)驗(yàn)平臺:正點(diǎn)原子RV1126 Linux開發(fā)板 2)平臺購買地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套實(shí)驗(yàn)源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html 前面虛擬機(jī)已經(jīng)創(chuàng)建成功了,相當(dāng)于硬件已經(jīng)準(zhǔn)備好了,接下來就是要在虛擬機(jī)中安裝Ubuntu系統(tǒng)了,首先

    2023年04月26日
    瀏覽(28)
  • Python開發(fā) Git 第二章: 提交更改 撤銷更改 分支管理 遠(yuǎn)程倉庫操作

    在第一章中,我們成功地初始化了Git倉庫,并進(jìn)行了一些基本的配置。現(xiàn)在,讓我們深入學(xué)習(xí)Git的基本操作,包括提交更改、撤銷更改、分支管理以及遠(yuǎn)程倉庫的操作。 2.1.1 添加文件到暫存區(qū) 在Git中,提交更改通常需要將文件先添加到暫存區(qū)。假設(shè)我們有一個新的文件 exa

    2024年02月04日
    瀏覽(26)
  • 第二章 系統(tǒng)集成及服務(wù)管理知識點(diǎn)1

    這第二章主要講了下集成及服務(wù)管理的內(nèi)容、制度、意義、管理辦法、以及一些管理方面的服務(wù)概念。跟著小老弟把內(nèi)容給歸納歸納,后面來復(fù)習(xí)的時候也能夠省不少時間! 1信息系統(tǒng)集成及服務(wù)管理的內(nèi)容 在信息化建設(shè)過程中,系統(tǒng)集成及服務(wù)存在了諸多問題,主要問題:

    2024年02月16日
    瀏覽(19)
  • 第二章 進(jìn)程與線程 三、進(jìn)程控制

    第二章 進(jìn)程與線程 三、進(jìn)程控制

    目錄 一、定義 二、實(shí)現(xiàn)方式(用原語實(shí)現(xiàn)) 注意: 1、原語是什么 2、如何實(shí)現(xiàn)原語的原子性 3、關(guān)中斷指令和開中斷指令是什么 三、進(jìn)程控制的相關(guān)原語 1、進(jìn)程的創(chuàng)建 ?編輯 2、進(jìn)程的終止 3、進(jìn)程的阻塞與喚醒(阻塞和喚醒要成對出現(xiàn)) 4、進(jìn)程的切換 注意: PSW: PC:

    2024年02月09日
    瀏覽(28)
  • 【軟考高級信息系統(tǒng)項(xiàng)目管理師--第二章:信息技術(shù)發(fā)展】

    【軟考高級信息系統(tǒng)項(xiàng)目管理師--第二章:信息技術(shù)發(fā)展】

    ?? 作者 :“碼上有前” ?? 文章簡介 :軟考高級–信息系統(tǒng)項(xiàng)目管理師 ?? 歡迎小伙伴們 點(diǎn)贊??、收藏?、留言?? 網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議 OSI七層 物理層(RS232、V.35、RJ-45、FDDI) 數(shù)據(jù)鏈路層(IEEE802.3/.2、HDLC、PPP、ATM) 網(wǎng)絡(luò)層(IP、ICMP、IGMP、IPX、ARP【IP】】) 傳輸層(TCP、UDP、SPX) 會話層

    2024年02月21日
    瀏覽(91)
  • 第二章:項(xiàng)目環(huán)境搭建【基于Servlet+JSP的圖書管理系統(tǒng)】

    第二章:項(xiàng)目環(huán)境搭建【基于Servlet+JSP的圖書管理系統(tǒng)】

    02-圖書管理系統(tǒng)-項(xiàng)目環(huán)境搭建 ??本項(xiàng)目涉及到的工具都有在云盤提供,自行下載即可 JDK8 IDEA2021 Tomcat8.5 MySQL的客戶端工具SQLYog … ??通過IDEA創(chuàng)建maven項(xiàng)目。勾選腳手架工具。選擇 maven-archetype-webapp 設(shè)置項(xiàng)目的基礎(chǔ)信息 3.1 JDK配置 ??JDK使用的是JDK8。我們也需要配置下:

    2024年02月11日
    瀏覽(25)
  • 基于linux下的高并發(fā)服務(wù)器開發(fā)(第二章)- 2.7 進(jìn)程退出、孤兒進(jìn)程、僵尸進(jìn)程

    基于linux下的高并發(fā)服務(wù)器開發(fā)(第二章)- 2.7 進(jìn)程退出、孤兒進(jìn)程、僵尸進(jìn)程

    ? 父進(jìn)程運(yùn)行結(jié)束,但子進(jìn)程還在運(yùn)行(未運(yùn)行結(jié)束),這樣的子進(jìn)程就稱為孤兒進(jìn)程 (Orphan Process)。 ? 每當(dāng)出現(xiàn)一個孤兒進(jìn)程的時候,內(nèi)核就把孤兒進(jìn)程的父進(jìn)程設(shè)置為 init ,而 init 進(jìn)程會循環(huán)地 wait() 它的已經(jīng)退出的子進(jìn)程。這樣,當(dāng)一個孤兒進(jìn)程凄涼地結(jié)束 了其生

    2024年02月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包