操作系统(2) -- 进程管理
2.1 進(jìn)程與線程
為什么引入進(jìn)程?
多道程序環(huán)境下,允許多個(gè)程序并發(fā)執(zhí)行,為了更好的描述和控制程序的并發(fā)執(zhí)行,實(shí)現(xiàn)操作系統(tǒng)的并發(fā)性和共享性
進(jìn)程:
進(jìn)程控制塊(process control block,PCB):利用PCB描述進(jìn)程的基本情況和運(yùn)行態(tài),進(jìn)而控制和管理進(jìn)程。是進(jìn)程存在的唯一標(biāo)志。
程序段,數(shù)據(jù)段,PCB組成進(jìn)程實(shí)體
進(jìn)程:是進(jìn)程實(shí)體的運(yùn)行過(guò)程,是系統(tǒng)進(jìn)行資源分配(資源指處理機(jī)、存儲(chǔ)器、其他澀北服務(wù)于某個(gè)進(jìn)程的時(shí)間)和調(diào)度的一個(gè)獨(dú)立單位(未引入線程)
進(jìn)程的基本特征:動(dòng)態(tài)性、并發(fā)性、獨(dú)立性、異步性、結(jié)構(gòu)性
進(jìn)程的狀態(tài)與轉(zhuǎn)換:
-
通常有5種,前3種是基本狀態(tài):運(yùn)行態(tài)、就緒態(tài)、阻塞態(tài)(等待態(tài))、創(chuàng)建態(tài)、結(jié)束態(tài)
進(jìn)程控制:進(jìn)程創(chuàng)建,進(jìn)程終止,進(jìn)程阻塞與喚醒,進(jìn)程切換
進(jìn)程的組織:
-
進(jìn)程控制塊:進(jìn)程描述信息,進(jìn)程控制和管理信息,資源分配清單和處理機(jī)相關(guān)信息;PCB組織方式有鏈接方式和索引方式
-
程序段:能被進(jìn)程調(diào)度程序調(diào)到CPU執(zhí)行的程序代碼段,可被多個(gè)進(jìn)程共享
-
數(shù)據(jù)段
進(jìn)程通信:
共享存儲(chǔ):進(jìn)程之間存在一塊可直接訪問(wèn)的共享空間,通過(guò)對(duì)共享空間的讀寫實(shí)現(xiàn)信息交換。操作系統(tǒng)負(fù)責(zé)為通信進(jìn)程提供可共享的存儲(chǔ)空間和同步互斥工具
消息傳遞:以格式化的消息為單位,通過(guò)發(fā)送消息和接收消息兩個(gè)原語(yǔ)進(jìn)行數(shù)據(jù)交換
-
直接通信:直接掛在接收進(jìn)程的消息隊(duì)列
-
間接通信:發(fā)到某個(gè)中間實(shí)體(信箱)
管道通信:用 一個(gè)用于連接讀進(jìn)程和寫進(jìn)程的共享文件 實(shí)現(xiàn)通信。以字符流形式發(fā)送。管道只能半雙工通信。且一旦數(shù)據(jù)被讀取,就從管道中拋棄,釋放空間。
線程:
引入線程的目的?
減小程序在并發(fā)執(zhí)行時(shí)所付出的時(shí)空開(kāi)銷,提供操作系統(tǒng)的并發(fā)性能。
線程:一個(gè)基本的CPU執(zhí)行單元,程序執(zhí)行流的最小單元。線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,與同屬于一個(gè)進(jìn)程的其他線程共享進(jìn)程的資源。
進(jìn)程內(nèi)涵改變:引入線程后,進(jìn)程作為除CPU外的系統(tǒng)資源的分配單元,線程作為處理機(jī)的分配單元
線程屬性:輕型實(shí)體,不擁有資源,有唯一標(biāo)識(shí)線程控制塊;不同線程可執(zhí)行相同程序;同進(jìn)程中不同線程共享進(jìn)程資源;線程是處理機(jī)調(diào)度單位,多線程可以并發(fā);
線程實(shí)現(xiàn)方式:
-
用戶級(jí)線程:線程管理由應(yīng)用程序完成,通過(guò)線程庫(kù)設(shè)計(jì)
-
內(nèi)核級(jí)線程:線程管理由內(nèi)核完成,應(yīng)用程序沒(méi)有線程管理的代碼,有一個(gè)到內(nèi)核級(jí)線程的編程接口
-
組合方式
線程與進(jìn)程比較
調(diào)度:線程是獨(dú)立調(diào)度的基本單位,線程是擁有資源的基本單位
擁有資源:線程沒(méi)有系統(tǒng)資源,進(jìn)程擁有資源,但線程可以訪問(wèn)進(jìn)程的資源
并發(fā)性:進(jìn)程可以并發(fā),線程也可以
系統(tǒng)開(kāi)銷:線程開(kāi)銷小,進(jìn)程開(kāi)銷大
地址空間和其他資源:進(jìn)程地址空間相互獨(dú)立,線程沒(méi)有自己獨(dú)立的地址空寂,它共享其所屬進(jìn)程的空間
通信:線程通信需要進(jìn)程同步和互斥手段,線程可以直接讀寫進(jìn)程數(shù)據(jù)段通信
單處理系統(tǒng),發(fā)生死鎖時(shí)全部進(jìn)程處于阻塞態(tài)
阻塞態(tài)轉(zhuǎn)就緒態(tài)不會(huì)引起另一個(gè)進(jìn)程的狀態(tài)變化
I/O操作完成之前進(jìn)程在等待結(jié)果,狀態(tài)為阻塞態(tài);完成后進(jìn)程等待事件就緒,變成就緒態(tài)。
運(yùn)行態(tài)到阻塞態(tài)的狀態(tài)轉(zhuǎn)換是進(jìn)程自身決定的
?
2.2 處理機(jī)調(diào)度
處理機(jī)調(diào)度:把處理機(jī)分配給某個(gè)進(jìn)程,處理機(jī)調(diào)度是多道程序操作系統(tǒng)的基礎(chǔ)
調(diào)度層次:作業(yè)調(diào)度、中級(jí)調(diào)度、進(jìn)程調(diào)度,進(jìn)程調(diào)度是最基本的,不可缺少
不能進(jìn)行進(jìn)程切換的情況:
處理中斷
進(jìn)程在操作系統(tǒng)內(nèi)核程序臨界區(qū)
其他需要完全屏蔽中斷的原子操作過(guò)程中
進(jìn)程調(diào)度方式:非剝奪,剝奪
調(diào)度的基本準(zhǔn)則:
CPU利用率
系統(tǒng)吞吐量:單位時(shí)間內(nèi)CPU完成作業(yè)的數(shù)量
周轉(zhuǎn)時(shí)間:從作業(yè)提交到作業(yè)完成所經(jīng)歷的時(shí)間;周轉(zhuǎn)時(shí)間 = 作業(yè)完成時(shí)間 - 作業(yè)提交時(shí)間
平均周轉(zhuǎn)時(shí)間:多個(gè)作業(yè)周轉(zhuǎn)時(shí)間的平均值
帶權(quán)周轉(zhuǎn)時(shí)間:作業(yè)周轉(zhuǎn)時(shí)間/作業(yè)實(shí)際運(yùn)行時(shí)間
等待時(shí)間
響應(yīng)時(shí)間:從用戶提交請(qǐng)求到系統(tǒng)首次產(chǎn)生響應(yīng)所用的時(shí)間
調(diào)度算法:
先來(lái)先服務(wù)(FCFS):選最先進(jìn)入隊(duì)列的作業(yè)調(diào)入內(nèi)存,分配資源創(chuàng)建進(jìn)程放入就緒隊(duì)列;不可剝奪;算法簡(jiǎn)單,對(duì)長(zhǎng)作業(yè)有利,對(duì)短作業(yè)不利,有利于CPU繁忙型作業(yè),不利于I/O繁忙型作業(yè)
短作業(yè)優(yōu)先(SJF):選擇運(yùn)行時(shí)間最短的作業(yè);對(duì)長(zhǎng)作業(yè)不利,導(dǎo)致饑餓現(xiàn)象,沒(méi)有考慮作業(yè)的緊迫程度;SJF平均等待時(shí)間,平均周轉(zhuǎn)時(shí)間最少
優(yōu)先級(jí)調(diào)度:選擇優(yōu)先級(jí)最高的作業(yè);分非剝奪式和剝奪式;
高響應(yīng)比優(yōu)先:選擇響應(yīng)比最高的作業(yè)運(yùn)行;響應(yīng)比 = (1+等待時(shí)間/要求服務(wù)時(shí)間)
時(shí)間片輪轉(zhuǎn)調(diào)度:適用分時(shí)系統(tǒng)。將就緒進(jìn)程排序,每個(gè)進(jìn)行運(yùn)行一個(gè)時(shí)間片。
多級(jí)反饋隊(duì)列調(diào)度算法:動(dòng)態(tài)調(diào)整進(jìn)程優(yōu)先級(jí)和時(shí)間片的大小;設(shè)置多個(gè)就緒隊(duì)列,賦予不同優(yōu)先級(jí),賦予各個(gè)隊(duì)列中進(jìn)程執(zhí)行時(shí)間片的大小各不相同,優(yōu)先級(jí)越高,時(shí)間片越小
分時(shí)操作系統(tǒng)調(diào)度:高響應(yīng)比,時(shí)間片輪轉(zhuǎn),多級(jí)反饋隊(duì)列調(diào)度
實(shí)時(shí)操作系統(tǒng)調(diào)度:優(yōu)先級(jí)調(diào)度算法
?
2.3 進(jìn)程同步
基本概念:
臨界資源:一次僅允許一個(gè)進(jìn)程使用的資源
臨界區(qū):訪問(wèn)臨界資源的那段代碼
同步:直接制約關(guān)系,為完成某種任務(wù)而建立的兩個(gè)或多個(gè)進(jìn)程,需要在某些位置上協(xié)調(diào)工作次序,傳遞信息所產(chǎn)生的制約關(guān)系
互斥:間接制約關(guān)系,一個(gè)進(jìn)程進(jìn)入臨界區(qū),另一個(gè)進(jìn)程必須等待
同步機(jī)制準(zhǔn)則:空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待
實(shí)現(xiàn)臨界區(qū)互斥的基本辦法:
軟件實(shí)現(xiàn)方法:
-
單標(biāo)志法
-
雙標(biāo)志先檢查
-
雙標(biāo)志后檢查
-
Peterson's Algorithm
硬件實(shí)現(xiàn)方法:
-
TestAndSet方法
-
中斷屏蔽方法(關(guān)中斷)
信號(hào)量:
-
P,V操作,P請(qǐng)求資源,V釋放資源
-
同步信號(hào)量初值為0
-
互斥信號(hào)量初值為1
-
應(yīng)用:若某個(gè)行為要用某種資源,在這個(gè)行為前P這種資源;若某行為提供某資源,在這個(gè)行為后V這種資源。在互斥問(wèn)題中,P,V操作要求夾緊使用互斥資源的那個(gè)行為,中間不能有其他冗余代碼。
管程:
定義:一組數(shù)據(jù)及定義在這組數(shù)據(jù)上的對(duì)這組數(shù)組的操作組成的軟件模塊
組成:局部于管程的共享數(shù)據(jù)結(jié)構(gòu)說(shuō)明;對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過(guò)程;對(duì)局部于管程的共享數(shù)據(jù)設(shè)置初始值額語(yǔ)句
特性:局部于管程的數(shù)據(jù)只能被局部于管程內(nèi)的過(guò)程所訪問(wèn);一個(gè)進(jìn)程只有調(diào)用管程內(nèi)過(guò)程才能進(jìn)入管程訪問(wèn)共享數(shù)據(jù);每次運(yùn)行一個(gè)進(jìn)程在管程內(nèi)執(zhí)行某個(gè)內(nèi)部過(guò)程
同步問(wèn)題:
-
生產(chǎn)者--消費(fèi)者問(wèn)題
-
讀者--寫者問(wèn)題
-
哲學(xué)家進(jìn)餐問(wèn)題
-
吸煙者問(wèn)題
硬件方法實(shí)現(xiàn)進(jìn)程同步不能實(shí)現(xiàn)讓權(quán)等待,Peterson算法滿足有限等待不滿足讓權(quán)等待。
?
?
2.4 死鎖
死鎖的概念:
死鎖:指多個(gè)進(jìn)程因?yàn)楦?jìng)爭(zhēng)資源而造成一種僵局,若無(wú)外力作用,這些進(jìn)程都無(wú)法向前推進(jìn)
產(chǎn)生原因:
爭(zhēng)用系統(tǒng)資源
進(jìn)程推進(jìn)順序非法
死鎖產(chǎn)生的必要條件,只要一個(gè)不滿足,死鎖就不會(huì)發(fā)生
互斥條件
不剝奪條件
請(qǐng)求并保持
循環(huán)等待
死鎖的處理策略
死鎖預(yù)防:破壞死鎖產(chǎn)生的4個(gè)必要條件之一即可
死鎖避免
系統(tǒng)安全狀態(tài):允許進(jìn)程動(dòng)態(tài)申請(qǐng)資源,但系統(tǒng)在進(jìn)行資源分配之前,先計(jì)算此次資源分配的安全性。若此次分配導(dǎo)致系統(tǒng)進(jìn)入不安全的狀態(tài),就讓進(jìn)程等待,否則,分配資源。
銀行家算法:OS為銀行家,OS管理的資源為資金,進(jìn)程向OS請(qǐng)求資源相當(dāng)于貸款。OS按規(guī)則為進(jìn)程分配資源。當(dāng)進(jìn)程首次申請(qǐng)資源,要測(cè)試該進(jìn)程對(duì)資源的最大需求量,若可滿足,則按當(dāng)前申請(qǐng)量分配資源,否則推遲分配。當(dāng)進(jìn)程執(zhí)行中繼續(xù)申請(qǐng)資源,測(cè)試當(dāng)前占用和申請(qǐng)的資源是否超過(guò)最大需求量,超過(guò)拒絕,未超過(guò)測(cè)試現(xiàn)有資源是否滿足最大需求量,滿足則分配申請(qǐng)的資源,否則推遲分配。
死鎖檢測(cè)及解除
資源分配圖
死鎖定理:S為死鎖狀態(tài)的條件是當(dāng)且僅當(dāng)S狀態(tài)的資源分配圖是不可完全簡(jiǎn)化的。
死鎖解除:
資源剝奪法
撤銷進(jìn)程法
進(jìn)程回退法
總結(jié)
以上是生活随笔為你收集整理的操作系统(2) -- 进程管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构(6) -- 查找
- 下一篇: java信息管理系统总结_java实现科