单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1
進(jìn)程與線程
一、進(jìn)程特征和概念
前提:允許多個程序并發(fā)執(zhí)行。
1.概念
PCB(process control block)進(jìn)程控制塊,系統(tǒng)利用 PCB 來描述進(jìn)程的基本情況和運行狀 態(tài),進(jìn)而控制和管理進(jìn)程。
PCB是進(jìn)程存在的唯一標(biāo)志。
進(jìn)程是進(jìn)程實體的運行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。2.特征
- 動態(tài)性:進(jìn)程是程序的一次執(zhí)行,所以他是有生命周期的。(基本特征)
- 并發(fā)性:引入進(jìn)程的目的就是為了程序能夠并發(fā)執(zhí)行。
- 獨立性:一個進(jìn)程就是一個獨立的個體
- 異步性:由于進(jìn)程的相互制約,使得進(jìn)程具有執(zhí)行的間斷性。
- 結(jié)構(gòu)性:一個進(jìn)程實體由程序段、數(shù)據(jù)段和進(jìn)程控制塊三部分組成。
二、進(jìn)程的狀態(tài)與轉(zhuǎn)換
幾個比較重要的轉(zhuǎn)換:
就緒態(tài)→運行態(tài):獲得處理機資源(時間片)。
運行態(tài)→就緒態(tài):獲得的時間片用完,或者在可剝奪的操作系統(tǒng)中被更高優(yōu)先級的進(jìn)程搶走時間片。
運行態(tài)→阻塞態(tài):請求某一資源,或者等待某一事件發(fā)生。
進(jìn)程以系統(tǒng)調(diào)用的形式請求操作系統(tǒng)提供服務(wù),這是一種特殊的、由運行用戶態(tài)程序調(diào)用操作系統(tǒng)內(nèi)核過程的形式。阻塞態(tài)→就緒態(tài):等待的事件到來時。
三、進(jìn)程控制
1.進(jìn)程的創(chuàng)建
允許一個進(jìn)程創(chuàng)建另一個進(jìn)程,就是父進(jìn)程和子進(jìn)程。
創(chuàng)建過程如下:
1)分配唯一進(jìn)程標(biāo)志號,申請一個空白的PCB(有限的)。沒有就創(chuàng)建失敗了。
2)分配資源,分配用戶棧和內(nèi)存資源,若資源不足就處于阻塞態(tài),直到有資源被釋放。
3)初始化PCB。(標(biāo)志信息、處理機狀態(tài)信息、處理機控制信息、設(shè)置進(jìn)程的優(yōu)先級等。)
4)如果就緒隊列未滿,就插入就緒隊列,等待被調(diào)度。
2.進(jìn)程的終止
通常引起終止的事件
- 正常結(jié)束
- 異常結(jié)束
- 外界干預(yù)
終止過程:
1)根據(jù)標(biāo)志符檢索PCB,讀取該進(jìn)程狀態(tài)。
2)如處于執(zhí)行狀態(tài),立即終止執(zhí)行,處理器資源也分出去。
3)若還有子孫進(jìn)程,則終止其子進(jìn)程。
4)將該進(jìn)程的資源還給父進(jìn)程(沒有就還給操作系統(tǒng))。
5)將PCB從所在隊列(鏈表)刪除。
3.進(jìn)程的阻塞與喚醒
阻塞:
1)找到PCB
2)若為運行態(tài),則保護(hù)現(xiàn)場,然后轉(zhuǎn)為阻塞態(tài)
3)將該PCB插入等待隊列,交出處理機資源
喚醒:
1)在等待隊列中找到PCB
2)將其從隊列中移出,設(shè)置為就緒態(tài)
3)插入就緒隊列,等待調(diào)度
4.進(jìn)程切換
進(jìn)程切換是指處理機從一個進(jìn)程的運行轉(zhuǎn)到另一個進(jìn)程上運行。
1)保存處理機上下文,包括程序計數(shù)器和其他寄存器
2)更新 PCB 信息
3)把進(jìn)程的 PCB 移入相應(yīng)的隊列,如就緒、在某事件阻塞等隊列。
4)選擇另一個進(jìn)程執(zhí)行,并更新其 PCB
5)更新內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)。
6)恢復(fù)處理機上下文
四、進(jìn)程的組織
一個進(jìn)程由以下三部分組成,最核心的就是PCB
1.進(jìn)程控制塊
PCB是進(jìn)程實體的一部分,是進(jìn)程存在的唯一標(biāo)志。
主要包括:描述信息、進(jìn)程控制和管理信息、資源分配清單、和處理機關(guān)信息等。
1)描述信息:PID進(jìn)程標(biāo)識符,UID用戶標(biāo)識符。
2)進(jìn)程控制和管理信息:進(jìn)程當(dāng)前的狀態(tài),優(yōu)先級等信息。
3)資源分配清單:說明有關(guān)內(nèi)存地址的狀況。
4)處理機相關(guān)信息:主要指處理機中各寄存器的值。
2.程序段
3.數(shù)據(jù)段
五、進(jìn)程的通信
管道可以理解為共享存儲的優(yōu)化和發(fā)展 ,因為在共享存儲中,若某進(jìn)程要訪問共享存儲空間, 則必須沒有其他進(jìn)程在該共享存儲空間中進(jìn)行寫操作,否則訪問行為就會被阻塞。管道通信中,存儲空間進(jìn)化成了緩沖區(qū),緩沖區(qū)只允許一邊寫入、另一邊讀出,因此只要緩沖區(qū)中有數(shù)據(jù),進(jìn)程就能從緩沖區(qū)中讀出,而不必?fù)?dān)心會因為其他進(jìn)程在其中進(jìn)行寫操作而遭到阻塞。六、線程概念和多線程模型
1.概念
線程由線程ID、程序計數(shù)器、寄存器集合和堆棧組成。
線程是進(jìn)程中的一個實體。
有了線程這個概念后,進(jìn)程作為除了CPU之外的系統(tǒng)資源分配單元,而線程則作為處理機的分配單元。
2.線程和進(jìn)程的比較
1)調(diào)度
線程是獨立調(diào)度的基本單位,進(jìn)程是擁有資源的基本單位。
也就是說,一個進(jìn)程內(nèi)的線程可以切換到另一個進(jìn)程內(nèi)的一個線程,但是資源不能。
2)擁有資源
線程不擁有系統(tǒng)資源
3)并發(fā)性
多個進(jìn)程可以并發(fā)執(zhí)行,多個線程也可以并發(fā)執(zhí)行。
4)系統(tǒng)開銷
創(chuàng)建和撤銷進(jìn)程時,涉及到很多系統(tǒng)資源的分配和回收。但是線程不擁有系統(tǒng)資源,創(chuàng)建和撤銷系統(tǒng)則不需要付出那么大的開銷。同樣,線程間的切換也比進(jìn)程間的切換更容易實現(xiàn)。
5)地址空間和其他資源
進(jìn)程之間互相獨立。
線程之間共享該進(jìn)程的資源。
6)通信
進(jìn)程間通信需要互斥手段的輔助。
線程可以直接讀寫進(jìn)程數(shù)據(jù)段來實現(xiàn)通信。
3.線程的屬性
1)線程不擁有系統(tǒng)資源,但擁有唯一的標(biāo)識符和一個線程控制塊。
2)不同的線程可以執(zhí)行相同的程序
3)同一進(jìn)程中各個線程共享該進(jìn)程所擁有的資源
4)線程是處理機的獨立調(diào)度單元,多個線程可以并發(fā)執(zhí)行。
5)線程生命周期也會有阻塞、就緒、運行等狀態(tài)
4.線程的實現(xiàn)方式
分為兩大類:
用戶級線程、內(nèi)核級線程
5.多線程模型
1)多對一:
多個用戶級線程映射到一個內(nèi)核級線程
2)一對一
一個用戶級線程映射到一個內(nèi)核級線程
3)多對多
n個用戶級線程映射到m個內(nèi)核級線程
總結(jié)
以上是生活随笔為你收集整理的单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux的实际操作:用户管理(查看用户
- 下一篇: 倒计时小工具_这款高颜值的 APP 可以