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