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