以下完全為個(gè)人總結(jié)——若發(fā)現(xiàn)問(wèn)題請(qǐng)下方評(píng)論瘩将,定回
進(jìn)程管理
- 操作系統(tǒng)最基本的兩個(gè)特性 - 并發(fā)性及共享性
- PCB(進(jìn)程控制塊)- 進(jìn)程存在的唯一標(biāo)志
- 進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過(guò)程焰扳,使系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位倘核;
進(jìn)程是操作系統(tǒng)資源分配和獨(dú)立運(yùn)行的基本單位;
任何進(jìn)程都是在操作系統(tǒng)的內(nèi)核的支持下運(yùn)行的矩桂,是與內(nèi)核緊密相關(guān)的
特性:動(dòng)態(tài)性(最基本特征)喂链、并發(fā)性、獨(dú)立性彭谁、異步性、結(jié)構(gòu)性 - 進(jìn)程實(shí)體組成:程序段阐枣、數(shù)據(jù)段马靠、PCB奄抽;
- 進(jìn)程狀態(tài):運(yùn)行狀態(tài)蔼两、就緒狀態(tài)、阻塞狀態(tài)(等待狀態(tài))逞度、創(chuàng)建狀態(tài)额划、結(jié)束狀態(tài)
- 進(jìn)程狀態(tài)的轉(zhuǎn)換中
運(yùn)行狀態(tài)->阻塞狀態(tài) 是一個(gè)主動(dòng)的過(guò)程
阻塞狀態(tài)->就緒狀態(tài) 是一個(gè)被動(dòng)的過(guò)程需要其他程序的協(xié)助 -
原語(yǔ) 一般把進(jìn)程控制用的程序段稱(chēng)為原語(yǔ)
特點(diǎn): 執(zhí)行期間不允許中斷,是一個(gè)不可分割的基本單位 - 進(jìn)程創(chuàng)建
分配唯一進(jìn)程標(biāo)識(shí)號(hào)档泽,申請(qǐng)空白PCB失敗則創(chuàng)建失敗
分配資源俊戳,失敗則阻塞,等待狀態(tài)并非創(chuàng)建失敗
初始化PCB
入隊(duì)馆匿,進(jìn)入就緒隊(duì)列抑胎; - 進(jìn)程終止
根據(jù)進(jìn)程標(biāo)識(shí)符,檢索PCB,讀進(jìn)程狀態(tài)
若處于執(zhí)行態(tài)渐北,中止進(jìn)程阿逃,將處理機(jī)資源分給其他進(jìn)程
若有子進(jìn)程也全部終止
將擁有的全部的資源歸還父進(jìn)程或操作系統(tǒng)
將該P(yáng)CB從所在隊(duì)列刪除 - 進(jìn)程阻塞/喚醒
調(diào)用阻塞原語(yǔ)(Block)
找到進(jìn)程標(biāo)識(shí)號(hào)對(duì)應(yīng)的PCB
若運(yùn)行,保護(hù)現(xiàn)場(chǎng)赃蛛,轉(zhuǎn)換狀態(tài)為阻塞恃锉,停止運(yùn)行
PCB插入等待隊(duì)列
調(diào)用喚醒原語(yǔ)(Wakeup)
找到對(duì)應(yīng)PCB
移出等待隊(duì)列,職位就緒狀態(tài)
PCB插入就緒隊(duì)列 - 進(jìn)程切換
指的是 處理機(jī)從一個(gè)進(jìn)程上的運(yùn)行轉(zhuǎn)到另一個(gè)進(jìn)程上運(yùn)行呕臂,環(huán)境發(fā)生了實(shí)質(zhì)性變化破托。
保存處理機(jī)上下文,PC及各寄存器
更新PCB歧蒋,移動(dòng)到相應(yīng)隊(duì)列
更新為另一程序PCB土砂,內(nèi)存管理及數(shù)據(jù)結(jié)構(gòu)
回復(fù)處理機(jī)上下文
進(jìn)程的切換與處理機(jī)的切換不同
處理機(jī)模式州既,可能同一進(jìn)程的中斷恢復(fù)后只需回復(fù)現(xiàn)場(chǎng)即可,無(wú)需改變當(dāng)前進(jìn)程環(huán)境信息瘟芝,而進(jìn)程切換就緒改變了易桃; - PCB
常駐內(nèi)存,任意時(shí)刻可存取锌俱,進(jìn)程結(jié)束后刪除
進(jìn)程實(shí)體的一部分晤郑,是進(jìn)程存在的唯一標(biāo)志
PCB 包含的信息:
進(jìn)程描述信息:
PID(進(jìn)程標(biāo)識(shí)符) - 唯一標(biāo)識(shí)進(jìn)程
UID(用戶標(biāo)識(shí)符) - 進(jìn)程歸屬用戶,為共享和保護(hù)服務(wù)
進(jìn)程控制和管理信息
進(jìn)程當(dāng)前狀態(tài) - 處理機(jī)調(diào)度分配依據(jù)
進(jìn)程優(yōu)先級(jí)
資源分配清單
處理機(jī)相關(guān)信息 - PCB組織方式 - 鏈接/索引
- 進(jìn)程高級(jí)通信方式(P/V操作是低級(jí)通信方式)
1)共享存儲(chǔ)
低級(jí) - 基于數(shù)據(jù)結(jié)構(gòu)的共享
高級(jí) - 基于存儲(chǔ)區(qū)的共享
2)消息傳遞
進(jìn)程間數(shù)據(jù)以格式化消息為單位
通過(guò)發(fā)送消息/接收消息兩個(gè)原語(yǔ)
直接通信 - 直接發(fā)送到對(duì)方的消息緩沖隊(duì)列中贸宏;
簡(jiǎn)接通信 - 消息發(fā)送到中間實(shí)體(信箱)
3)管道通信
管道:連接讀/寫(xiě)進(jìn)程實(shí)現(xiàn)他們之間通信的一個(gè)共享文件
管道機(jī)制:互斥造寝、同步、確定對(duì)方存在
半雙工通信吭练,每次管道中寫(xiě)滿后诫龙,才可讀 - 線程
線程是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位
輕量級(jí)進(jìn)程,一個(gè)基本的CPU執(zhí)行單元鲫咽,程序執(zhí)行流的最小單元
不擁有系統(tǒng)資源签赃,只有運(yùn)行時(shí)所必須的資源,同一進(jìn)程下的各線程共享進(jìn)程資源
線程獨(dú)立調(diào)度的基本單位分尸,進(jìn)程是擁有資源的基本單位 - 內(nèi)核線程 - 內(nèi)核支持的線程锦聊,線程管理的工作由內(nèi)核完成
- 用戶級(jí)線程 - 線程管理由應(yīng)用程序完成(對(duì)操作系統(tǒng)透明)
- 多線程模型(用戶級(jí)線程->內(nèi)核線程 對(duì)應(yīng)關(guān)系)
1)多對(duì)一模型
優(yōu)點(diǎn):效率高
缺點(diǎn):當(dāng)一個(gè)線程使用內(nèi)核級(jí)線程被阻塞,全部阻塞
2)一對(duì)一模型
優(yōu)點(diǎn):并發(fā)能力較強(qiáng)
缺點(diǎn):開(kāi)銷(xiāo)大箩绍、影響程序性能
3)多對(duì)多模型
特點(diǎn):前兩種方法的折中孔庭,集兩個(gè)方法之優(yōu); - 處理機(jī)調(diào)度
1)作業(yè)調(diào)度(高級(jí)調(diào)度)
使其獲得競(jìng)爭(zhēng)處理機(jī)的權(quán)利
2)內(nèi)存調(diào)度(中級(jí)調(diào)度)
提高內(nèi)存利用率和系統(tǒng)吞吐量
3)進(jìn)程調(diào)度(低級(jí)調(diào)度)(和切換程序?yàn)椴僮飨到y(tǒng)內(nèi)核程序)
按照某種最基本方法策略材蛛,最基本調(diào)度
頻度很高 幾十毫秒一次 - 作業(yè)調(diào)度為進(jìn)程活動(dòng)做準(zhǔn)備圆到,進(jìn)程調(diào)度使進(jìn)程活動(dòng)起來(lái),中級(jí)調(diào)度將不能運(yùn)行的進(jìn)程掛起
- 不能進(jìn)行調(diào)度及切換的情況
處理中斷過(guò)程
進(jìn)程在操作系統(tǒng)內(nèi)核程序臨界區(qū)中
其他需要完全屏蔽中斷的原子操作過(guò)程
進(jìn)程調(diào)度方式
1)非剝奪調(diào)度方式
簡(jiǎn)單卑吭、系統(tǒng)開(kāi)銷(xiāo)小芽淡,適合大多數(shù)批處理系統(tǒng),不適合分時(shí)系統(tǒng)實(shí)時(shí)系統(tǒng)豆赏;
2)剝奪調(diào)度方式(搶占方式)
提高系統(tǒng)吞吐率和響應(yīng)效率 - CPU利用率
- 系統(tǒng)吞吐量 單位時(shí)間內(nèi)CPU完成的作業(yè)的數(shù)量
- 周轉(zhuǎn)時(shí)間 作業(yè)完成時(shí)間 - 作業(yè)提交時(shí)間
平均周轉(zhuǎn)時(shí)間 =(作業(yè)1周轉(zhuǎn)時(shí)間+作業(yè)2周轉(zhuǎn)時(shí)間+...)/n;
帶權(quán)周轉(zhuǎn)時(shí)間 = 作業(yè)周轉(zhuǎn)時(shí)間/作業(yè)實(shí)際運(yùn)行時(shí)間挣菲; - 等待時(shí)間 進(jìn)程處于等待處理機(jī)狀態(tài)時(shí)間的總和;
處理機(jī)調(diào)度算法影響的只有作業(yè)在就緒隊(duì)列中等待的時(shí)間河绽; - 響應(yīng)時(shí)間 從用戶提交請(qǐng)求到系統(tǒng)首次產(chǎn)生響應(yīng)所用的時(shí)間己单;
- 調(diào)度算法
1)FCFS(first come first solve)
特點(diǎn):簡(jiǎn)單、效率低耙饰,對(duì)長(zhǎng)作業(yè)有利纹笼,對(duì)短作業(yè)不利(相對(duì)SJF和高響應(yīng)比來(lái)說(shuō)),有利于CPU繁忙苟跪,不利于I/O繁忙廷痘;
2)SJF(shortest job first)
對(duì)長(zhǎng)作業(yè)不利蔓涧,容易產(chǎn)生饑餓現(xiàn)象,平均等待時(shí)間笋额、平均周轉(zhuǎn)時(shí)間最少元暴;
3)優(yōu)先級(jí)調(diào)度(優(yōu)先權(quán)調(diào)度,適合實(shí)時(shí)操作系統(tǒng))
非剝奪式優(yōu)先級(jí)/剝奪式優(yōu)先級(jí)
靜態(tài)優(yōu)先級(jí) - 進(jìn)程創(chuàng)建時(shí)定好的兄猩,運(yùn)行期間不變
動(dòng)態(tài)優(yōu)先級(jí) - 進(jìn)程運(yùn)行中茉盏,動(dòng)態(tài)調(diào)整優(yōu)先級(jí)
4)高響應(yīng)比優(yōu)先調(diào)度(主要用于作業(yè)調(diào)度,適用分時(shí)系統(tǒng))
響應(yīng)比 Rp=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間枢冤;
有利于短作業(yè)
前兩種算法的兼顧鸠姨,克服了饑餓狀態(tài),兼顧了長(zhǎng)作業(yè)淹真;
5)時(shí)間片輪轉(zhuǎn)調(diào)度(適用分時(shí)系統(tǒng))
就緒進(jìn)程按照先來(lái)先服務(wù)排好序
時(shí)間片長(zhǎng)短決定于 系統(tǒng)響應(yīng)時(shí)間讶迁、就緒隊(duì)列中的進(jìn)程數(shù)目,系統(tǒng)的處理能力
6)多級(jí)反饋隊(duì)列(適用分時(shí)系統(tǒng))
時(shí)間片與優(yōu)先級(jí)的綜合核蘸,動(dòng)態(tài)調(diào)整優(yōu)先級(jí)及時(shí)間片大小
優(yōu)勢(shì):
終端型用戶:短作業(yè)優(yōu)先
短批處理作業(yè)用戶:周轉(zhuǎn)時(shí)間短
長(zhǎng)批處理用戶:不會(huì)發(fā)生饑餓
Here comes the big case:
- 進(jìn)程同步
- 臨界資源 - 一次只允許一個(gè)進(jìn)程使用的資源為臨界資源巍糯;
- 同步(直接制約關(guān)系)
- 互斥(簡(jiǎn)介制約關(guān)系)
- 為禁止兩個(gè)進(jìn)程同時(shí)進(jìn)入臨界區(qū),同步機(jī)制應(yīng)遵循以下準(zhǔn)則
空閑讓進(jìn)
忙則等待
有限等待
讓權(quán)等待
同步問(wèn)題單寫(xiě)了
- 死鎖問(wèn)題
- 死鎖產(chǎn)生必要條件 -互斥條件 - 不剝奪條件 - 請(qǐng)求和保持條件 - 循環(huán)等待條件
- 三種死鎖處理策略
死鎖預(yù)防
破壞互斥條件 / 破壞不剝奪條件 / 破壞請(qǐng)求和保持條件(預(yù)先靜態(tài)分配) / 破壞循環(huán)等待(順序資源分配)條件
死鎖避免
系統(tǒng)安全狀態(tài)(找到安全序列) / 銀行家算法
死鎖檢測(cè)
資源分配圖 / 死鎖定理(簡(jiǎn)化資源分配圖) / 死鎖解除(資源剝奪客扎、撤銷(xiāo)進(jìn)程祟峦、進(jìn)程回退)