操作系統(tǒng)的發(fā)展
1. 手工操作系統(tǒng)
-
缺點
用戶獨占全機(jī),資源利用率低
cpu等待手工操作,cpu利用不充分
2. 批處理操作系統(tǒng)
-
單道批處理操作系統(tǒng)
-
特征
自動性
順序性
單道性
-
缺點
- 每次主機(jī)僅能放一次作業(yè),運(yùn)行期間高速的cpu等待低速的I/O完成的狀態(tài)
-
-
多道批處理操作系統(tǒng)
-
特點
多道
宏觀上運(yùn)行
微觀上運(yùn)行
-
面臨的問題
如何分配處理器
多道程序內(nèi)存分配
I/O設(shè)備如何分配
如何組織和存放大量程序和數(shù)據(jù),以方便用戶使用保證其安全性和一致性
-
優(yōu)點
資源利用率高
多道程序共享計算機(jī)資源,使各資源充分利用
系統(tǒng)吞吐量大
-
缺點
用戶響應(yīng)時間長
不提供人機(jī)交互能力
用戶不了解計算機(jī)情況,不能控制計算機(jī)
-
3. 分時操作系統(tǒng)
-
特點
交互性
同時性
獨立性
及時性
-
問題
- 解決了人機(jī)交互問題,對一些事件不能及時做出處理
4. 實時操作系統(tǒng)
硬實時操作系統(tǒng)
軟實時操作系統(tǒng)
5. 網(wǎng)絡(luò)操作系統(tǒng)和分布式操作系統(tǒng)
- 網(wǎng)絡(luò)中各種資源共享以及個計算機(jī)之間的通信
6. 個人操作系統(tǒng)
- 如Windows,Linux等
操作系統(tǒng)運(yùn)行機(jī)制
-
兩種指令
特權(quán)指令 指計算機(jī)不允許用戶直接使用的指令。只能在和心態(tài)下執(zhí)行
非特權(quán)指令 既可以在核心態(tài)游客一再用戶態(tài)下執(zhí)行
-
兩種處理狀態(tài)
核心態(tài) 此時cpu可以執(zhí)行特輕輕按指令
用戶態(tài)
-
兩種程序
內(nèi)核程序 管理者,管理應(yīng)用程序,可以執(zhí)行一些特權(quán)指令
應(yīng)用程序
操作系統(tǒng)
-
內(nèi)核功能(最核心基礎(chǔ)的功能,是計算機(jī)配置上的底層軟件,實現(xiàn)操作系統(tǒng)內(nèi)核功能的程序就是內(nèi)核程序)
時鐘管理
中斷處理
原語(設(shè)備驅(qū)動、CPU切換)
注意:以上三個功能是最接近硬件的層次,若僅僅包含以上三個就是內(nèi)核,若還包括以下的就稱之為大內(nèi)核
-
系統(tǒng)控制的數(shù)據(jù)處理結(jié)構(gòu)
進(jìn)程管理
存儲器管理
設(shè)備管理
非內(nèi)核功能
系統(tǒng)調(diào)用
指系統(tǒng)中各種資源都有操作系統(tǒng)統(tǒng)一掌管,因此在用戶程序中,凡是與資源有關(guān)的操作(如存儲分配,I/O操作、文件管理等),都必須通過系統(tǒng)調(diào)用的方式像操作系統(tǒng)提出服務(wù)請求,由操作系統(tǒng)代為完成。這樣可以保證系統(tǒng)的穩(wěn)定性和安全性,防止用戶非法操作。 會使處理器從用戶態(tài)進(jìn)入核心態(tài)
1. 設(shè)備管理
完成設(shè)備的請求/釋放/啟動等功能
2. 文件管理
完成文件的 讀/寫/創(chuàng)建/刪除等功能
3. 進(jìn)程管理
完成進(jìn)程的創(chuàng)建/撤銷/阻塞/喚醒等功能
4. 進(jìn)程通信
完成進(jìn)程之間的消息傳遞/信號傳遞等功能
5. 內(nèi)存管理
完成內(nèi)存分配/回收等功能
系統(tǒng)調(diào)用的過程
(系統(tǒng)調(diào)用發(fā)生在用戶態(tài),對系統(tǒng)調(diào)用的處理發(fā)生在核心態(tài))
傳遞系統(tǒng)調(diào)用參數(shù)
-
執(zhí)行陷入指令[用戶態(tài)]
(產(chǎn)生內(nèi)中斷,使處理器從用戶態(tài)進(jìn)入核心態(tài))
(操作系統(tǒng)獲得CPU控制權(quán) )
執(zhí)行系統(tǒng)調(diào)用相應(yīng)服務(wù)程序[核心態(tài)]
-
返回用戶程序
注意:
陷入指令在用戶態(tài)執(zhí)行,執(zhí)行陷入指令之后立即引發(fā)一個內(nèi)中斷,從而CPU進(jìn)入核心態(tài)
發(fā)出系統(tǒng)請求旨在用戶態(tài),而對系統(tǒng)調(diào)用的相應(yīng)處理在核心態(tài)下進(jìn)行
陷入指令是唯一一個只能在用戶態(tài)執(zhí)行,而不可以在核心態(tài)執(zhí)行的指令
陷入指令又稱為訪管指令
進(jìn)程
程序:一個指令序列
進(jìn)程實體:
PCB
程序段:程序本身
數(shù)據(jù)段:運(yùn)行程序要處理的數(shù)據(jù)
1. 定義
理解:
為了方便操作系統(tǒng)管理,完成各種程序并發(fā)執(zhí)行,引入了進(jìn)程,進(jìn)程實體的概念。
系統(tǒng)為每個運(yùn)行的程序配置一個數(shù)據(jù)結(jié)構(gòu),稱為進(jìn)程控制塊(PCB),用來描述進(jìn)程的各種信息(如程序代碼存放位置)
-
一般把進(jìn)程實體簡稱為進(jìn)程所謂創(chuàng)建進(jìn)程,實質(zhì)上是為了創(chuàng)建進(jìn)程實體中的PCB;而撤銷進(jìn)程,實質(zhì)上是撤銷進(jìn)程實體中的PCB
三種定義
進(jìn)程是程序的一次執(zhí)行過程
進(jìn)程是一個程序及其數(shù)據(jù)在處理及上順序執(zhí)行所發(fā)生的活動。
進(jìn)程是具有獨立功能的程序在數(shù)據(jù)集合上運(yùn)行的過程,他是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位
總:進(jìn)程是進(jìn)程實體的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個單位。
對比進(jìn)程實體和進(jìn)程
進(jìn)程實體:主要強(qiáng)調(diào)創(chuàng)建的PCB(靜態(tài))
進(jìn)程:強(qiáng)調(diào)運(yùn)行過程(動態(tài))
注意:在沒有特別要求的時候,可以當(dāng)進(jìn)程實體就是進(jìn)程
2. 組成
PCB
-
進(jìn)程描述信息
-
進(jìn)程標(biāo)識符PID
進(jìn)程被創(chuàng)建時,操作系統(tǒng)會為該進(jìn)程分配一個唯一的,不重復(fù)的ID,用于區(qū)分不同的進(jìn)程(類似一身份證號)
用戶標(biāo)識符UID
-
-
進(jìn)程控制和管理信息
進(jìn)程當(dāng)前狀態(tài)
進(jìn)程優(yōu)先級
-
資源分配清單
程序段指針
數(shù)據(jù)段指針
鍵盤
鼠標(biāo)
-
處理機(jī)相關(guān)信息
-
各種寄存器值
進(jìn)程切換時需要把進(jìn)程當(dāng)前運(yùn)行的情況記錄下來保存在PCB中,如程序計數(shù)器的值表示了當(dāng)前程序執(zhí)行到哪一句
-
-
其他
進(jìn)程標(biāo)識碼
處理機(jī)狀態(tài)
進(jìn)程調(diào)度信息
進(jìn)程控制信息
3.組織方式
一個操作系統(tǒng)中,通常由數(shù)十、數(shù)百乃至數(shù)千個PCB。為了能對其有效管理,應(yīng)當(dāng)用適當(dāng)?shù)姆绞桨堰@些PCB組織起來
-
鏈接方式
按照進(jìn)程狀態(tài)將PCB分為多個隊列
-
操作系統(tǒng)持有執(zhí)行各個隊列的指針
執(zhí)行指針
就緒隊列執(zhí)指針
-
阻塞隊列指針
[圖片上傳失敗...(image-39b9cf-1629181963277)]
-
索引方式
根據(jù)進(jìn)程狀態(tài)不同,建立幾張索引表
-
操作系統(tǒng)有指向哥哥索引表的指針
執(zhí)行指針
就緒隊列執(zhí)指針
-
阻塞隊列指針
[圖片上傳失敗...(image-bedf32-1629181963277)]
4. 特征
動態(tài)性:進(jìn)程時程序一次執(zhí)行過程,動態(tài)產(chǎn)生、變化、消亡
并發(fā)性 :內(nèi)存中有多個進(jìn)程實體,個進(jìn)程可并發(fā)執(zhí)行
獨立性:進(jìn)程是能獨立運(yùn)行、獨立獲得資源、獨立接受調(diào)度的基本單位
異步性:各進(jìn)程按各自獨立的,不可預(yù)知的速度向前推進(jìn),操作系統(tǒng)要提供“進(jìn)程同步機(jī)制”來解決異步問題
結(jié)構(gòu)性:每個進(jìn)程都會配置一個PCB,從結(jié)構(gòu)上看,進(jìn)程有程序段、數(shù)據(jù)段、PCB組成
進(jìn)程的狀態(tài)和轉(zhuǎn)換
進(jìn)程是程序的一次執(zhí)行,執(zhí)行過程中,有時需要被CPU處理,有時又需要等待CPU服務(wù),可見進(jìn)程的狀態(tài)會有各種變化,為了方便對各個進(jìn)程的管理,操作系統(tǒng)需要將進(jìn)程合理劃分為幾種狀態(tài)。
1. 狀態(tài)
-
運(yùn)行狀態(tài):占有CPU,并在CPU上運(yùn)行cpu √ 其他資源 √
注意:單核處理機(jī)環(huán)境下,每一時刻最多只有一個 進(jìn)程處于運(yùn)行態(tài)(雙核有兩個)
-
就緒狀態(tài):已經(jīng)具備運(yùn)行條件,但由于沒有空閑CPU,而暫時不能運(yùn)行cpu √ 其他資源 ×
注意:此時進(jìn)程已經(jīng)擁有除了處理及之外所有的資源,一旦獲得處理機(jī),即立刻進(jìn)入運(yùn)行態(tài)
-
阻塞狀態(tài):因等待某一件事而暫停不能運(yùn)行cpu × 其他資源 ×
注意:如等待操作系統(tǒng)分配打印機(jī),等待讀磁盤操作的結(jié)果
以上三種為三種基本狀態(tài)
-
創(chuàng)建狀態(tài):進(jìn)程正在被創(chuàng)建,操作系統(tǒng)為系統(tǒng)分配資源、初始化PCB
操作系統(tǒng)需要完成創(chuàng)建進(jìn)程,為該進(jìn)程分配所需要的內(nèi)存空間等系統(tǒng)資源,為其創(chuàng)建初始化PCB
終止?fàn)顟B(tài):進(jìn)程正在從系統(tǒng)中撤銷,操作系統(tǒng)會回收進(jìn)程擁有的資源、撤銷PCB
2. 進(jìn)程狀態(tài)間的轉(zhuǎn)換

進(jìn)程控制
1. 什么是進(jìn)程控制
進(jìn)程控制主要功能是對系統(tǒng)中的所有晉城市是有效的管理,它具有創(chuàng)建新進(jìn)程、撤銷已有進(jìn)程、實現(xiàn)進(jìn)程狀態(tài)轉(zhuǎn)換等功能。(實現(xiàn)進(jìn)程狀態(tài)轉(zhuǎn)換)
2. 如何實現(xiàn)進(jìn)程及控制

用原語實現(xiàn)進(jìn)程控制。原語的特點是執(zhí)行期間不允許中斷,只能一起呵成
這種不可以中斷的操作即原子操作
原語采用“關(guān)中斷指令”和“開中斷指令”實現(xiàn)
3. 進(jìn)程控制相關(guān)的原語(三類)
更新PCB中的信息
將PCB插入合適的隊列
分配/回收資源
進(jìn)程的創(chuàng)建
-
創(chuàng)建原語
申請空白PCB
為新進(jìn)程分配所需資源
初始化PCB
將PCB插入就緒隊列
-
引起進(jìn)程創(chuàng)建的事件
-
用戶登錄
分時系統(tǒng)中,用戶登陸成功,系統(tǒng)為用戶建立一個新的進(jìn)程
-
作業(yè)調(diào)度
多道批處理系統(tǒng)中,有新的作業(yè)放入內(nèi)存時,會建立一個新的進(jìn)程
-
提供服務(wù)
用戶向操作系統(tǒng)提出某些請求時,會新建一個進(jìn)程處理該請求
-
應(yīng)用請求
由用戶進(jìn)程主動請求創(chuàng)建一個進(jìn)程
-
進(jìn)程的終止
-
撤銷原語
從PCB集合中找到種植進(jìn)程的PCB
若進(jìn)程正在運(yùn)行,立即剝奪進(jìn)程,將CPU分配給其它進(jìn)程
終止其所有子進(jìn)程
將該進(jìn)程擁有的所有資源歸還父進(jìn)程或操作系統(tǒng)
刪除PCB
-
引起進(jìn)程終止的事件
正常結(jié)束
異常結(jié)束
外界干預(yù)
進(jìn)程的阻塞
-
阻塞原語
找到要阻塞的進(jìn)程對應(yīng)的PCB
保護(hù)進(jìn)程運(yùn)行現(xiàn)場,將PCB狀態(tài)信息設(shè)置為“阻塞態(tài)”,暫時停止進(jìn)程運(yùn)行
將PCB插入響應(yīng)時間的等待隊列
-
引起進(jìn)程阻塞的事件
需要等待系統(tǒng)分配某種資源
需要等待相互合作的其他進(jìn)程完成工作
進(jìn)程的喚醒
-
喚醒原語
在時間等待隊列中到PCB
將PCB從等待隊列溢出,設(shè)置進(jìn)程為就緒
將PCB插入就緒隊列,等待被調(diào)度
-
引起進(jìn)程喚醒的事件
- 等待事件的發(fā)生
系統(tǒng)阻塞原語和喚醒原語要成對出現(xiàn),因何事阻塞就因何事被喚醒
進(jìn)程的切換
-
切換原語
將運(yùn)行環(huán)境信息存入PCB
PCB移入相應(yīng)隊列
選擇另一個進(jìn)程執(zhí)行,并更新其PCB
根據(jù)PCB回復(fù)進(jìn)程所需運(yùn)行環(huán)境
引起進(jìn)程切換的事件
* 當(dāng)前進(jìn)程事件片到
* 有更高優(yōu)先級的進(jìn)程到達(dá)
* 當(dāng)前進(jìn)程主動阻塞
* 當(dāng)前進(jìn)程終止
進(jìn)程通信
定義:進(jìn)程通信指進(jìn)程之間的信息交換
(進(jìn)程是分配系統(tǒng)資源的單位<u style="box-sizing: border-box;">包括內(nèi)存地址空間</u>,因此各進(jìn)程擁有內(nèi)存地址空間相互獨立)
進(jìn)程是不能直接訪問另一個進(jìn)程空間的
1. 共享儲存
基于數(shù)據(jù)結(jié)構(gòu)的共享
基于存儲空間的共享
兩個進(jìn)程對共享空間是互斥的

2. 管道通信

3. 消息傳遞
消息: 消息頭 消息體

總結(jié)

線程概念與多線程模型
什么是線程?為什么引入線程?
引入線程概念之后,cpu調(diào)用對象由進(jìn)程變?yōu)榱司€程
線程相當(dāng)于輕量級進(jìn)程,是一個最基本的CPU單元,也是程序執(zhí)行流的小單位
線程是進(jìn)程的一個實體,是被系統(tǒng)獨立調(diào)度和分配的基本單位
統(tǒng)一進(jìn)程內(nèi)的存在許多線程,線程共享此進(jìn)程內(nèi)的資源

線程的組成
線程ID
程序計數(shù)器
寄存器集合
推棧
引入線程帶來的變化
-
資源分配、調(diào)度
傳統(tǒng)進(jìn)程機(jī)制中,進(jìn)程是資源分配、調(diào)度的基本單位
引入線程后,進(jìn)程是資源分配的基本單位,線程是調(diào)度的基本單位
-
并發(fā)性
傳統(tǒng)進(jìn)程機(jī)制中,只能進(jìn)程間并發(fā)
引入線程后,個線程之間也能并發(fā)
-
系統(tǒng)開銷
傳統(tǒng)進(jìn)程間并發(fā),需要切換進(jìn)程的運(yùn)行環(huán)境,系統(tǒng)開銷很大
線程間并發(fā),如果是同一進(jìn)程內(nèi)的線程切換,則不需要切換線程
引入線程后,并發(fā)所帶來的系統(tǒng)開銷減少
線程的屬性
線程是處理機(jī)調(diào)度單位
多CPU計算機(jī)中。各個進(jìn)程可占用不同的CPU
每個線程都有一個線程ID(唯一的線程標(biāo)識符),線程控制塊(TCB)【數(shù)據(jù)結(jié)構(gòu)】
線程也有就緒、堵塞、運(yùn)行三種基本狀態(tài)
線程幾乎不擁有系統(tǒng)資源
同一進(jìn)程的不同線程間共享進(jìn)程的資源
由于共享內(nèi)存地址空間,同一進(jìn)程中的線程間甚至無需系統(tǒng)干預(yù)
同一進(jìn)程中的線程切換,不會引起進(jìn)程切換
不同進(jìn)程中的線程切換,會引起線程切換
切換同進(jìn)程內(nèi)的線程,系統(tǒng)開銷很小
切換進(jìn)程,系統(tǒng)開銷很大
線程的實現(xiàn)方式
-
用戶級線程
用戶級線程用戶可以看到,操作系統(tǒng)看不到

-
內(nèi)核級線程
相當(dāng)于從操作系統(tǒng)內(nèi)核視角能看到的線程,必須在核心態(tài)下才能完成。

總結(jié)

處理機(jī)的調(diào)度
1. 基本概念
如有大量任務(wù),但是資源有限,沒辦法同時處理,需要某些規(guī)則決定任務(wù)順序,即調(diào)度??!
進(jìn)程數(shù)量遠(yuǎn)大于處理機(jī)個數(shù),需要從就緒序列中按照一定算法選擇一個進(jìn)程并將處理機(jī)分配給它運(yùn)行,實現(xiàn)進(jìn)程的并發(fā)運(yùn)行
2. 三個層次
-
高級調(diào)度(作業(yè)調(diào)度)
是輔存(外存)與內(nèi)存之間的調(diào)度

-
中級調(diào)度(內(nèi)存調(diào)度)
將暫時不能運(yùn)行的進(jìn)程調(diào)制外存等待,當(dāng)具備空閑條件時在沖洗調(diào)入內(nèi)存。
暫時調(diào)到外存等待的進(jìn)程狀態(tài)為掛起狀態(tài),PCB不會調(diào)到外存,會常駐內(nèi)存,內(nèi)部會記錄進(jìn)程數(shù)據(jù)在外存中的存放位置,進(jìn)程狀態(tài)等信息,被掛起進(jìn)程PCB會被放到掛起的隊列中。

補(bǔ)充:掛起狀態(tài)與七狀態(tài)模型

-
低級調(diào)度(進(jìn)程調(diào)度)

3. 三層調(diào)度的聯(lián)系、對比、
| 要做什么 | 調(diào)度發(fā)生位置 | 發(fā)生頻率 | 對進(jìn)程狀態(tài)的影響 | |
|---|---|---|---|---|
| 高級調(diào)度 | 按照某種規(guī)則從后備隊列中選擇合適的作業(yè)將其調(diào)入內(nèi)存,并為其創(chuàng)建進(jìn)程 | 外存->內(nèi)存(面向作業(yè)) | 最低 | 無->創(chuàng)建態(tài)->就緒態(tài) |
| 中極調(diào)度 | 按照某種規(guī)則從掛起隊列中選擇合適的作業(yè)將其數(shù)據(jù)調(diào)回內(nèi)存 | 外存->內(nèi)存(面向進(jìn)程) | 中等 | 掛起態(tài)->就緒態(tài)(阻塞掛起->阻塞態(tài)) |
| 低級調(diào)度 | 按照某種規(guī)則從就緒隊列中選擇一個進(jìn)程為其分配處理機(jī) | 內(nèi)存->CPU | 最高 | 就緒態(tài)->運(yùn)行態(tài) |
總結(jié)

進(jìn)程調(diào)度的問題
1. 調(diào)度的時機(jī)
需要進(jìn)行進(jìn)程調(diào)度的情況
-
當(dāng)前運(yùn)行進(jìn)程主動放棄處理機(jī)
進(jìn)程正常終止
運(yùn)行過程中發(fā)生異常而阻止
進(jìn)程主動請求阻塞(如 等待I/O)
-
當(dāng)前運(yùn)行的進(jìn)程被動放棄處理機(jī)
分給進(jìn)程的時間片用完
有更緊急的事情需要處理(如 I/O中斷)
有更高優(yōu)先級的進(jìn)程進(jìn)入就緒隊列
不能進(jìn)行進(jìn)程調(diào)度與切換的情況
在處理及中斷過程中。中斷處理過程復(fù)雜,與硬件密切相關(guān),很難做到在中斷處理過程中進(jìn)行進(jìn)程切換進(jìn)程在操作系統(tǒng)內(nèi)核程序臨界區(qū)中。
在原子操作過程中(原語)。原子操作不可中斷,要一氣呵成
2. 調(diào)度的切換與過程
- 廣義的進(jìn)程調(diào)度:包含選一個進(jìn)程+進(jìn)程切換兩個步驟
1. 進(jìn)程切換過程主要完成了各種數(shù)據(jù)的保存
2. 對新的進(jìn)程各種數(shù)據(jù)的恢復(fù)(如:程序計數(shù)器、程序狀態(tài)字、各種數(shù)據(jù)寄存器等處理機(jī)現(xiàn)場信息,一般保存在進(jìn)程控制塊)
頻繁的進(jìn)程調(diào)動、切換會是否大部分時間花在進(jìn)程切換上,真正用于執(zhí)行的時間減少
3. 調(diào)度的方式
-
非剝奪調(diào)度方式(非搶占方式)
只允許進(jìn)程主動放棄處理機(jī),在運(yùn)行過程中有更緊迫的任務(wù)到達(dá),當(dāng)前進(jìn)程依然會繼續(xù)使用處理機(jī),知道進(jìn)程終止或主動要求進(jìn)入阻塞態(tài)
實現(xiàn)簡單,系統(tǒng)開銷小但是無法及時處理緊急任務(wù),適合于早期的批處理系統(tǒng)
-
剝奪調(diào)度方式(搶占方式)
搶占方式。當(dāng)一個進(jìn)程在處理機(jī)上執(zhí)行時,如果一個更重要或更緊迫的進(jìn)程要使用處理及。即立即暫停正在執(zhí)行的進(jìn)程,將處理及分配給更重要更緊迫的那個進(jìn)程。
可以有限處理更緊急的進(jìn)程,也可以實現(xiàn)讓各進(jìn)程按時間片輪流執(zhí)行的功能(通過時鐘中斷) 更適合于分時操作系統(tǒng)、實時操作系統(tǒng)
總結(jié)

調(diào)度算法的評價指標(biāo)
-
cpu利用率:CPU“忙碌”的時間占總
系統(tǒng)吞吐量:單位時間完成作業(yè)的數(shù)量
-
周轉(zhuǎn)時間:作業(yè)從提交給系統(tǒng),到作業(yè)完成的這段時間間隔
-
等待時間:指進(jìn)程(作業(yè))處于等待處理及狀態(tài)時間之和,等待時間越長,用戶滿意度越低
對進(jìn)程來說:等待時間指進(jìn)程建立后等待被服務(wù)的時間之和,在等待I/O完成期間其實進(jìn)程也是在被服務(wù)的,所以不計入等待時間
對于作業(yè)來說:不僅要考慮建立進(jìn)程之后的而等待時間,還要加上作業(yè)在外村后被隊列中的等待時間。
響應(yīng)時間:用戶從提出請求到響應(yīng)鎖花費的時間
總結(jié)
image-20210721051705806 -
調(diào)度算法
學(xué)習(xí)思路
1. 算法思想
2. 算法規(guī)則
3. 調(diào)度算法用于作業(yè)調(diào)度 or 進(jìn)程調(diào)度
4. 搶占式 or 非搶占式
5. 優(yōu)點 and 缺點
6. 是否會饑餓
1. 先來先服務(wù)(FCFS)
2. 短作業(yè)優(yōu)先(SJF)
3. 高響度比優(yōu)先(HRRN)
生產(chǎn)者消費者問題
-
問題描述
系統(tǒng)中有一組生產(chǎn)者進(jìn)程和一組消費者進(jìn)程,生產(chǎn)者進(jìn)程每次生產(chǎn)一個產(chǎn)品放入緩沖區(qū),消費者進(jìn)程每次從緩沖區(qū)中取出一個產(chǎn)品并使用。(注:這里的“產(chǎn)品”理解為某種數(shù)據(jù))
共享一個緩沖區(qū)
只有緩沖區(qū)沒滿時,生產(chǎn)者才能把產(chǎn)品放入緩沖區(qū),否則必須等待。
只有緩沖區(qū)不空時,消費者才能從中取出產(chǎn)品,否則必須等待。
緩沖區(qū)是臨界資源,各進(jìn)程必須互斥地訪問。
