进程调度算法-先来先服务、最短作业优先调度算法和高响应比优先调度算法
文章目錄
- 前言
- 一、進程的上下文切換
- 二、先來先服務(wù)調(diào)度算法
- 三、最短作業(yè)優(yōu)先調(diào)度算法
- 四、高響應(yīng)比優(yōu)先調(diào)度算法
- 總結(jié)
前言
進程是由 CPU 調(diào)度的,因此進程調(diào)度算法也稱 CPU 調(diào)度算法。本篇文章介紹幾種常見的單核CPU調(diào)度算法,雖然現(xiàn)代計算機大多都是多核的,但單核CPU調(diào)度算法是多核CPU的基礎(chǔ),所以學(xué)好單核CPU調(diào)度算法非常重要。
一、進程的上下文切換
在學(xué)習(xí)進程調(diào)度算法時,我們先來看游戲進程上下文切換的概念。關(guān)于進程的基本知識以及與線程之間的區(qū)別,可以參考進程與線程的區(qū)別這篇文章先復(fù)習(xí)一下。
我們先來理解一下上下文是什么意思?
簡單來說:進程的上下文就是外界給進程提供的運行環(huán)境,具體來說就是各個變量和數(shù)據(jù),包括所有的寄存器變量、進程打開的文件、內(nèi)存信息等。
什么是進程的上下文切換?
各個進程之間是共享 CPU 資源的,在不同的時候進程之間需要切換,讓不同的進程可以在CPU 執(zhí)?,那么這個?個進程切換到另?個進程運?,稱為進程的上下?切換。
進程上下文切換包括保存當(dāng)前任務(wù)的運行環(huán)境,恢復(fù)將要運行任務(wù)的運行環(huán)境。當(dāng)進程被切換時,操作系統(tǒng)內(nèi)核必須先保護現(xiàn)場,即將處理機狀態(tài)信息保存在相應(yīng)進程的PCB中,以便在該進程重新執(zhí)行時能再從斷點繼續(xù)執(zhí)行。
了解完了上下文切換的概念,我們來思考一下進程什么時候會發(fā)生一次調(diào)度?
我們都知道進程是由生命周期的,當(dāng)進程從?個狀態(tài)到另外?狀態(tài)變化的時候,就是發(fā)生調(diào)度的時候,以下是三種常見的場景:
進程調(diào)度算法簡單來說就是采用哪一種方式從就緒隊列中選擇一個進程來運行,選擇方式的不同就會導(dǎo)致調(diào)度算法的不同。當(dāng)然評價一個調(diào)度算法有很多的方面,例如CPU 利?率和吞吐量(是單位時間內(nèi) CPU 完成進程的數(shù)量),下面就來正式介紹幾種常見的調(diào)度算法。
二、先來先服務(wù)調(diào)度算法
先來先服務(wù)(First Come First Seved, FCFS)算法是最簡單的?個調(diào)度算法。每次把當(dāng)前處于就緒隊列之首的那個進程調(diào)度到運行狀態(tài),直到這個進程退出或者阻塞,才會去選擇下一個進程。
特點:FCFS算法簡單易行,是一種非搶占式策略,但性能卻不大好。當(dāng)?個長作業(yè)先運行了,那么后面的短作業(yè)等待的時間就會很長,不利于短作業(yè)。
例如:你(短作業(yè))去銀行辦理業(yè)務(wù)可能只需要幾分鐘時間,結(jié)果第一個來的大哥(長作業(yè))事情非常多需要的時間比較長,這時就會讓你等很久。
三、最短作業(yè)優(yōu)先調(diào)度算法
最短作業(yè)優(yōu)先(Shortest Job First, SJF)調(diào)度算法同樣也很簡單,它會優(yōu)先選擇運行時間最短的進程來運?。
特點:如果就緒隊列有?常多的短作業(yè),那么就會使得?作業(yè)不斷的等待,造成等待時間過長
例如:銀行說了時間少的先來辦理,由于你今天辦理的業(yè)務(wù)比較多花費的時間比較長,所以就要一直等其他人辦完了才輪到你。
四、高響應(yīng)比優(yōu)先調(diào)度算法
FCFS和SJF調(diào)度算法的弊端就是在于沒有權(quán)衡短作業(yè)和長作業(yè)。高響應(yīng)比優(yōu)先(Highest Response Ratio Next, HRRN)調(diào)度算法做到了這一點,每次進?進程調(diào)度時,先計算響應(yīng)?優(yōu)先級,然后把響應(yīng)?優(yōu)先級最?的進程投?運?。
高響應(yīng)比優(yōu)先是怎么考慮到短作業(yè)的?
兩個進程的等待時間相同時,要求的服務(wù)時間越短,優(yōu)先級就越?,這樣短作業(yè)的進程容易被選中運?;
高響應(yīng)比優(yōu)先是怎么考慮到長作業(yè)的?
進程的優(yōu)先級可以隨時間等待的增加?提?,當(dāng)其等待時間?夠?時,其響應(yīng)?便可以升到很?,?作業(yè)從?獲得運?的機會;
總結(jié)
進程調(diào)度算法是面試中經(jīng)常會被問到的知識點,本篇文章介紹了三種常見的單核CPU進程調(diào)度算法,內(nèi)容相比較簡單,在接下來的文章中還將介紹更多的進程調(diào)度算法供大家參考學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的进程调度算法-先来先服务、最短作业优先调度算法和高响应比优先调度算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue --- 2.0响应式补充
- 下一篇: 《代码整洁之道》读后感