操作系统-进程管理
進(jìn)程管理
概論:
并發(fā)程序和順序程序有本質(zhì)上的差別,為了能更好地描述程序的并發(fā)執(zhí)行,實現(xiàn)操作系統(tǒng)的并發(fā)性和共享性,引入“進(jìn)程”的概念。
進(jìn)程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。
處理器是計算機(jī)系統(tǒng)中最重要的資源。在現(xiàn)代計算機(jī)系統(tǒng)中,為了提高系統(tǒng)的資源利用率,CPU將為某一程序獨占。通常采用多道程序設(shè)計技術(shù),即允許多個程序同時進(jìn)入計算機(jī)系統(tǒng)的內(nèi)存并運行
1.任務(wù)
保證cpu正確地同時運行多道程序
2.描述
進(jìn)程是系統(tǒng)中獨立地描述運行程序的基本單位,向系統(tǒng)請求資源分配的單位
3.引入
程序執(zhí)行:
1. 順序執(zhí)行特性:順序性(串行),封閉性(最終結(jié)果由給定初值決定,不受外界影響),可再現(xiàn)性(只要輸入不變,結(jié)果就不變)2. 并行執(zhí)行:多個事件同時刻發(fā)生-需求多個cpu資源3. 并發(fā)執(zhí)行:多個事件同時段發(fā)生并運行,進(jìn)程間分時交替執(zhí)行,但cpu分時復(fù)用的過程特性:間斷性(交替執(zhí)行),開放性(可以被中斷),不可再現(xiàn)性名詞解釋:
程序是靜態(tài)的,特指代碼文件執(zhí)行時文件的放到內(nèi)存中
作業(yè)是批處理系統(tǒng)要裝入系統(tǒng)處理的一系列程序和數(shù)據(jù)
進(jìn)程是可并發(fā)執(zhí)行的的程序在某個數(shù)據(jù)集合上的一次執(zhí)行過程時操作系統(tǒng)資源保護(hù),調(diào)度,分配的基本單位。其側(cè)重點是進(jìn)程是 1.已經(jīng)裝入內(nèi)存的 2.運行的 3.程序及其數(shù)據(jù)結(jié)構(gòu)
進(jìn)程特征:
1. 結(jié)構(gòu)性:進(jìn)程實體(進(jìn)程映像)包括進(jìn)程控制塊(PCB),代碼塊,數(shù)據(jù)塊,堆棧2. 動態(tài)性:有創(chuàng)建產(chǎn)生,調(diào)度而運行,結(jié)束而消亡 相對的程序?qū)嶋H上就是文件,是靜態(tài)的并且持久存在3. 獨立性:都有自己的運行數(shù)據(jù)集,但進(jìn)程間也可數(shù)據(jù)通信,共享4. 并發(fā)性:但cpu并發(fā),多cpu并行兩類進(jìn)程:
一.系統(tǒng)進(jìn)程:
1.管理系統(tǒng)支援并行活動的并發(fā)軟件 2.有操作系統(tǒng)自身負(fù)責(zé) 3.直接管理軟硬件資源 4.優(yōu)先級高二.用戶進(jìn)程:
1.系統(tǒng)提供服務(wù)的對象 2.由用戶自己負(fù)責(zé) 3.間接使用軟硬件資源(必須先向系統(tǒng)發(fā)出請求等待系統(tǒng)分配和調(diào)度資源) 4.優(yōu)先級低進(jìn)程實體+運行環(huán)境=>進(jìn)程上下文:
1. 用戶級:由進(jìn)程的代碼區(qū),數(shù)據(jù)區(qū),用戶棧區(qū)和共享存儲區(qū),在編譯目標(biāo)文件時產(chǎn)生,占據(jù)進(jìn)程的虛擬地址空間 2. 系統(tǒng)級:由進(jìn)程控制塊PCB,內(nèi)存管理信息,進(jìn)程環(huán)境塊和系統(tǒng)棧等組成 3. 寄存器上下文:由程序轉(zhuǎn)臺寄存器,各類控制寄存器,地址寄存器,通用寄存器和用戶棧指針等組成當(dāng)一個進(jìn)程被系統(tǒng)調(diào)度而占有cpu是會發(fā)生cpu在新老進(jìn)程中切換,切換的內(nèi)容就是進(jìn)程上下文,進(jìn)程運行時再進(jìn)程的上下文中執(zhí)行的
進(jìn)程狀態(tài)及轉(zhuǎn)換:
3個狀態(tài):
1.執(zhí)行:占用cpu資源
2.就緒:占用除cpu以外的所有資源
3.阻塞:占用資源較少,一般是占用除cpu,內(nèi)存以外的所有資源,只是在等待某件事情的發(fā)生 eg:等待i/o輸入
狀態(tài)之間的關(guān)系:
執(zhí)行到就緒:1.時間片用完2.中斷,優(yōu)先級高的進(jìn)入 進(jìn)程創(chuàng)建時:分配到了除cpu,內(nèi)存外的所有資源
進(jìn)程終止時(正常結(jié)束/出現(xiàn)嚴(yán)重錯誤時):進(jìn)入終止?fàn)顟B(tài)的進(jìn)程不再被執(zhí)行,系統(tǒng)將其處理后會刪除它并回收占用資源
補(bǔ)充:
由內(nèi)存是否充足還可加上掛起狀態(tài),正常就緒缺內(nèi)存就為掛起就緒狀態(tài),正常阻塞缺內(nèi)存就為掛起阻塞狀態(tài).被掛起的進(jìn)程只有被激活才能由外存調(diào)入內(nèi)存處于就緒狀態(tài)
4.進(jìn)程控制
一.進(jìn)程控制塊PCB
記錄描述進(jìn)程當(dāng)前狀態(tài)及控制進(jìn)程運行的信息,是進(jìn)程存在的唯一標(biāo)識
由于其經(jīng)常被系統(tǒng)訪問,所以PCB常駐內(nèi)存
PCB中的信息有
進(jìn)程的標(biāo)識信息
(1).內(nèi)部標(biāo)識:用于操作系統(tǒng)管理進(jìn)程,一般由數(shù)字表示
(2).外部標(biāo)識:進(jìn)程創(chuàng)建者提供的進(jìn)程名,用于用戶訪問進(jìn)程時的標(biāo)識,一般由數(shù)字和字母組成
當(dāng)前進(jìn)程運行的現(xiàn)場信息,用于之后如果被中斷用其恢復(fù)到運行狀態(tài)
控制信息:程序,數(shù)據(jù)地址,進(jìn)程同步,通信機(jī)制
操作系統(tǒng)是根據(jù)PCB來對進(jìn)程控制和管理的,將所有進(jìn)程的PCB集中在系統(tǒng)中合成PCB表,大小決定了系統(tǒng)的并發(fā)度,從某進(jìn)程的進(jìn)程控制塊中查出其現(xiàn)行狀態(tài)及優(yōu)先級
進(jìn)程暫停(中斷時):必須將其斷點處的cpu環(huán)境保存在PCB中
進(jìn)程隊列的組織方式:
二.進(jìn)程控制
1.創(chuàng)建進(jìn)程:
通過創(chuàng)建原語創(chuàng)建
命名進(jìn)程(設(shè)置進(jìn)程標(biāo)識符)->從PCB集合中申請空的PCB->確定優(yōu)先級->建立共享程序段鏈接指針->分配除CPU,內(nèi)存的其他各種資源->初始化PCB->若內(nèi)存充足就加入到就緒隊列中否則放到外存中等待(掛起就緒)創(chuàng)建進(jìn)程的事件:用戶登錄,作業(yè)調(diào)度,提供服務(wù)
引用請求:使用系統(tǒng)調(diào)用完成創(chuàng)建
2.通過介質(zhì):原語
1.是指若干指令所組成的用于實現(xiàn)某個特定功能,在執(zhí)行過程中不可被中斷的程序段(不可分割,不可并發(fā)) 2.是系統(tǒng)核心的一個組成部分,同PCB一樣也是常駐內(nèi)存的,通常在核心態(tài)下運行3.兩態(tài)
兩態(tài)(cpu模式)
中斷或者系統(tǒng)調(diào)用時cpu模式由用戶態(tài)->核心態(tài),執(zhí)行系統(tǒng)服務(wù)(此時進(jìn)程仍在原上下文中進(jìn)行)。當(dāng)中斷響應(yīng)和系統(tǒng)服務(wù)完成之后通過逆向模式切換,恢復(fù)中斷進(jìn)程的運行
4.進(jìn)程狀態(tài)間的聯(lián)系
撤銷原語:撤銷的是標(biāo)志進(jìn)程存在的進(jìn)程控制塊而不是進(jìn)程的程序段(因為程序段可能是多個進(jìn)程的一部分)
阻塞與喚醒進(jìn)程:
阻塞是一種自主行為,喚醒是被動行為(由釋放資源/觸發(fā)事件調(diào)用喚醒原語)
喚醒原語:把除cpu外其他所有資源都得到的進(jìn)程設(shè)為就緒狀態(tài)
掛起與激活進(jìn)程
掛起與激活進(jìn)程:
掛起原語可以進(jìn)程自己調(diào)用也可其他進(jìn)程/系統(tǒng)調(diào)用,但激活原語只能由其他進(jìn)程/系統(tǒng)調(diào)用
被掛起進(jìn)程的非常駐內(nèi)存部分將交換到外存(磁盤)中
5.進(jìn)程互斥與同步
并發(fā)運行多程序時存在兩種基本管理:競爭和協(xié)作
對資源競爭的兩個極端:死鎖與饑餓
互斥:進(jìn)程爭奪獨占資源而產(chǎn)生的競爭制約關(guān)系
同步:進(jìn)程為共同完成任務(wù)基于某個條件來協(xié)調(diào)其運行進(jìn)度,執(zhí)行次序而等待,傳遞信號/消息而產(chǎn)生的協(xié)作制約關(guān)系
聯(lián)系:互斥是一種特殊的同步
臨界資源(獨占資源):某段時間只能由一個進(jìn)程使用的資源
臨界區(qū):用于訪問臨界資源的代碼段
同步機(jī)制:1.有鎖(類比串行執(zhí)行,浪費cpu的時間)2.信號量+PV操作3.管程(把分散在各進(jìn)程中的臨界區(qū)集中起來管理(既便于系統(tǒng)管理資源又能保證互質(zhì)訪問)用數(shù)據(jù)結(jié)構(gòu)抽象表示共享資源,防止進(jìn)程有意無意做違法同步操作)
6.信號量
信號量是進(jìn)程在某一特殊點上被迫停止執(zhí)行(阻塞)直到接收到一個對應(yīng)的特殊變量值,是資源的實體,是一個與隊列有關(guān)的整型變量
信號量除了初值外,只能由PV操作修改
主要作用:
5.進(jìn)程通信
三種方法:1.消息傳遞 2.共享內(nèi)存 3.管道通信
一.消息傳遞
適用于少量的數(shù)據(jù),要求消息傳遞的兩個進(jìn)程在一次傳送數(shù)據(jù)過程中相互同步
消息:進(jìn)程之間以不連續(xù)的成組方式發(fā)送的信息
消息通過信息緩沖區(qū)在進(jìn)程間相互傳遞,通信數(shù)據(jù)封裝在消息中
二.共享內(nèi)存通信
系統(tǒng)應(yīng)該允許多個進(jìn)程將共享內(nèi)存映射放到自己地址空間中,這些進(jìn)程對各自映射的地址段讀寫操作的代碼放到臨界區(qū)中
三.管道通信
管道實際上是一個共享文件,可借助文件系統(tǒng)機(jī)制實現(xiàn)
管道是可以連續(xù)讀寫的特殊文件,允許進(jìn)程FIFO凡是傳送數(shù)據(jù),也能是進(jìn)程同步執(zhí)行操作類比郵箱,發(fā)送進(jìn)程以字符流的形式將數(shù)據(jù)放入接收進(jìn)程從管道接受數(shù)據(jù)
收發(fā)消息的進(jìn)程間應(yīng)該是同步關(guān)系,進(jìn)程對管道的使用時互斥的
管道限制:
管道發(fā)出的每一消息必須作為一條完整的消息讀入
6.進(jìn)程調(diào)度
功能:通過一定的策略將CPU分配給處于就緒隊列中的某個進(jìn)程
一.調(diào)度模型
1.高級調(diào)度(作業(yè)調(diào)度) 在實時和分時系統(tǒng)中不需要,主要用于創(chuàng)建作業(yè)進(jìn)程和為其服務(wù)的系統(tǒng)進(jìn)程
2.中級調(diào)度(平衡調(diào)度)在內(nèi)存不足是采用虛擬存儲技術(shù)擴(kuò)充內(nèi)存-有點類似于內(nèi)存分配策略
3.低級調(diào)度(進(jìn)程調(diào)度)主要是為進(jìn)程進(jìn)行CPU資源的分配
二.調(diào)度算法
1. 先來先服務(wù)FCFS:屬于非搶占式調(diào)度,優(yōu)點:長作業(yè)有力,CPU繁忙型作業(yè)有利 缺點:短作業(yè)不利,IO繁忙型,要求響應(yīng)時間高的不利
2. 短作業(yè)優(yōu)先SJF:非搶占式調(diào)度,優(yōu)點:調(diào)度性能優(yōu)于FCFS但對長作業(yè)不利,忽視了作業(yè)的等待時間,如果不斷的接受短作業(yè),長作業(yè)會出現(xiàn)饑餓現(xiàn)象
3. 最短剩余時間優(yōu)先SRTF:搶占式調(diào)度,優(yōu)點性能優(yōu)于SJF,但是需要計算剩余時間開銷比較大,并且長作業(yè)仍然存在饑餓現(xiàn)象
4. 高響應(yīng)比HRRF:非搶占式調(diào)度,是綜合考慮了FCFS的沒有考慮作業(yè)的運行時間和SJF的沒有考慮作業(yè)等待時間,是他們之間比較折中的算法
5.優(yōu)先權(quán):搶占式調(diào)度,優(yōu)先級越小,優(yōu)先級越高
算法效率:SRJF>SJF>HRRF>FCFS
前面的算法在作業(yè)和進(jìn)程中都是可以使用的
6.時間片輪轉(zhuǎn):搶占式調(diào)度,關(guān)鍵在于設(shè)置時間片的大小,如果太大就會退化為FCFS,如果過小就會導(dǎo)致頻繁切換開銷較大
7.多級反饋隊列:搶占式調(diào)度,是基于時間片的反饋循環(huán)隊列,多個就緒隊列最高級就緒隊列優(yōu)先級最高但是獲取到的時間片比較短。相反低優(yōu)先級其時間片長
后兩種算法都是只能用于進(jìn)程中
這些算法的評價標(biāo)準(zhǔn)可以看:
算法評價
三.死鎖
產(chǎn)生原因:并發(fā)進(jìn)程對臨界資源的競爭以及并發(fā)進(jìn)程的推進(jìn)順序不當(dāng)
四大必要條件:
死鎖的避免可以使用銀行家算法
死鎖定理:如果進(jìn)程-資源分配圖無環(huán)則無死鎖
如果有環(huán)且每個資源都僅有一個資源則死鎖。當(dāng)有多個資源是則只是環(huán)路等待的必要條件而非充分條件
死鎖充分條件:當(dāng)且僅當(dāng)該狀態(tài)下的進(jìn)程-資源分配圖是不可簡化的時候
死鎖檢測:1.基于死鎖定理 2.類似于銀行家算法中的安全性測試算法
死鎖的解除:1.重啟 2.撤銷 3.回滾
7.線程
見:線程
感謝看到這里的你,如果想看更多的內(nèi)容,還請大家點個贊支持一下吧└(o)┘;
總結(jié)