日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统:第二章 进程管理2 - 处理机调度

發(fā)布時(shí)間:2024/2/28 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统:第二章 进程管理2 - 处理机调度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文已收錄至 Github(MD-Notes),若博客中有圖片打不開,可以來我的 Github 倉庫:https://github.com/HanquanHq/MD-Notes,涵蓋了互聯(lián)網(wǎng)大廠面試必問的知識(shí)點(diǎn),講解透徹,長期更新中,歡迎一起學(xué)習(xí)探討。
面試必會(huì)系列專欄:https://blog.csdn.net/sinat_42483341/category_10300357.html
操作系統(tǒng)系列專欄:https://blog.csdn.net/sinat_42483341/category_10519484.html


第二章 進(jìn)程管理 - 處理機(jī)調(diào)度

目錄

  • 第二章 進(jìn)程管理 - 處理機(jī)調(diào)度
      • 調(diào)度的三個(gè)層次
        • 高級(jí)調(diào)度(作業(yè)調(diào)度)
        • 中級(jí)調(diào)度(內(nèi)存調(diào)度)
        • 低級(jí)調(diào)度(進(jìn)程調(diào)度/處理機(jī)調(diào)度)頻率最高
      • 進(jìn)程的七狀態(tài)模型
          • 五狀態(tài)模型 -> 七狀態(tài)模型
      • 進(jìn)程調(diào)度的時(shí)機(jī)
          • 1、當(dāng)前運(yùn)行的進(jìn)程主動(dòng)放棄處理機(jī)
          • 2、當(dāng)前運(yùn)行的進(jìn)程被動(dòng)放棄處理機(jī)
          • 補(bǔ)充:不能進(jìn)行進(jìn)程調(diào)度與切換的情況
      • 進(jìn)程調(diào)度的方式
        • 非搶占式
        • 搶占方式
      • 調(diào)度算法的評(píng)價(jià)指標(biāo)
      • 調(diào)度算法
        • 1、先來先服務(wù) FIFS(FirstCome First Serve)
        • 2、短作業(yè)優(yōu)先(SJF, Shortest Job First)
        • 3、高響應(yīng)比優(yōu)先(HRRN, Highest Response Ratio Next)
            • 以下三種算法適合用于交互式系統(tǒng),更注重系統(tǒng)的響應(yīng)時(shí)間、公平性、平衡性等指標(biāo)。
        • 4、時(shí)間片輪轉(zhuǎn)(RR, Round-Robin)
        • 5、優(yōu)先級(jí)調(diào)度算法
        • 6、多級(jí)反饋隊(duì)列調(diào)度算法(UNIX使用)


調(diào)度的三個(gè)層次

高級(jí)調(diào)度(作業(yè)調(diào)度)

作業(yè):一個(gè)具體的任務(wù)
用戶向系統(tǒng)提交一個(gè)作業(yè) ≈ 用戶讓操作系統(tǒng)啟動(dòng)一個(gè)程序(來處理一個(gè)具體的任務(wù))

簡(jiǎn)化理解:好幾個(gè)程序需要啟動(dòng),到底先啟動(dòng)哪個(gè)

按一定的原則從外存的作業(yè)后備隊(duì)列中挑選一個(gè)作業(yè)調(diào)入內(nèi)存,并創(chuàng)建進(jìn)程。每個(gè)作業(yè)只調(diào)入一次,調(diào)出一次。作業(yè)調(diào)入時(shí)會(huì)建立PCB,調(diào)出時(shí)才撤銷PCB。

中級(jí)調(diào)度(內(nèi)存調(diào)度)

內(nèi)存不夠時(shí),將某些進(jìn)程的數(shù)據(jù)調(diào)出到外存。等內(nèi)存空閑 / 進(jìn)程需要運(yùn)行時(shí),再重新調(diào)入內(nèi)存。
暫時(shí)調(diào)到外存等待的進(jìn)程為掛起狀態(tài)。被掛起的進(jìn)程PCB會(huì)被組織成掛起隊(duì)列

按照某種策略決定將哪個(gè)處于掛起狀態(tài)的進(jìn)程重新調(diào)入內(nèi)存。一個(gè)進(jìn)程可能會(huì)被多次調(diào)出、調(diào)入內(nèi)存,因此中級(jí)調(diào)度發(fā)生的頻率要比高級(jí)調(diào)度更高。

低級(jí)調(diào)度(進(jìn)程調(diào)度/處理機(jī)調(diào)度)頻率最高

按照某種策略從就緒隊(duì)列中選取一個(gè)進(jìn)程,將處理機(jī)分配給它。

進(jìn)程調(diào)度是操作系統(tǒng)中最基本的一種調(diào)度,在一般的操作系統(tǒng)中都必須配置進(jìn)程調(diào)度。進(jìn)程調(diào)度的頻率很高,一般幾十毫秒一次。

進(jìn)程的七狀態(tài)模型

暫時(shí)調(diào)到外存等待的進(jìn)程狀態(tài)為掛起狀態(tài)(掛起態(tài),suspend),掛起態(tài)又可以進(jìn)一步細(xì)分為 就緒掛起阻塞掛起 兩種狀態(tài)

五狀態(tài)模型 -> 七狀態(tài)模型

進(jìn)程調(diào)度的時(shí)機(jī)

1、當(dāng)前運(yùn)行的進(jìn)程主動(dòng)放棄處理機(jī)
  • 進(jìn)程正常終止
  • 運(yùn)行過程中發(fā)生異常而終止
  • 進(jìn)程主動(dòng)請(qǐng)求阻塞(如等待I/O)
2、當(dāng)前運(yùn)行的進(jìn)程被動(dòng)放棄處理機(jī)
  • 分給進(jìn)程的時(shí)間片用完
  • 有更緊急的事需要處理(如I/O中斷)
  • 有更高優(yōu)先級(jí)的進(jìn)程進(jìn)入就緒隊(duì)列
補(bǔ)充:不能進(jìn)行進(jìn)程調(diào)度與切換的情況
  • 在處理中斷的過程中。中斷處理過程復(fù)雜,與硬件密切相關(guān),很難做到在中斷處理過程中進(jìn)行進(jìn)程切換。
  • 進(jìn)程在操作系統(tǒng)內(nèi)核程序臨界區(qū)中。
  • 原語。原子操作不可中斷,要一氣呵成(如修改PCB中進(jìn)程狀態(tài)標(biāo)志,并把PCB放到相應(yīng)隊(duì)列)
  • 進(jìn)程調(diào)度的方式

    非搶占式

    只允許進(jìn)程主動(dòng)放棄處理機(jī)。在運(yùn)行過程中即便有更緊迫的任務(wù)到達(dá),當(dāng)前進(jìn)程依然會(huì)繼續(xù)使用處理機(jī),直到該進(jìn)程終止或主動(dòng)要求進(jìn)入阻塞態(tài)。

    搶占方式

    當(dāng)一個(gè)進(jìn)程正在處理機(jī)上執(zhí)行時(shí),如果有更重要的進(jìn)程需要使用處理機(jī),則立即暫停正在執(zhí)行的進(jìn)程,將處理機(jī)分配給更重要的那個(gè)進(jìn)程。

    調(diào)度算法的評(píng)價(jià)指標(biāo)

    由于早期的CPU造價(jià)極其昂貴,因此人們會(huì)希望讓CPU盡可能多地工作

    CPU利用率:指CPU “忙碌”的時(shí)間占總時(shí)間的比例。

    • 利用率 = 忙碌的時(shí)間 / 總時(shí)間

    系統(tǒng)吞吐量:單位時(shí)間內(nèi)完成作業(yè)的數(shù)量

    • 系統(tǒng)吞吐量 = 總共完成了多少道作業(yè) / 總共花了多少時(shí)間

    作業(yè)周轉(zhuǎn)時(shí)間:從作業(yè)被提交給系統(tǒng)開始,到作業(yè)完成為止的這段時(shí)間間隔

    它包括四個(gè)部分:作業(yè)在外存后備隊(duì)列上等待作業(yè)調(diào)度(高級(jí)調(diào)度)的時(shí)間、進(jìn)程在就緒隊(duì)列上等待進(jìn)程調(diào)度(低級(jí)調(diào)度)的時(shí)間、進(jìn)程在CPU上執(zhí)行的時(shí)間、進(jìn)程等待I/O操作完成的時(shí)間。

    對(duì)于用戶來說,更關(guān)心自己的單個(gè)作業(yè)的周轉(zhuǎn)時(shí)間;對(duì)于操作系統(tǒng)來說,更關(guān)心系統(tǒng)的整體表現(xiàn),
    因此更關(guān)心所有作業(yè)周轉(zhuǎn)時(shí)間的平均值

    • 作業(yè)周轉(zhuǎn)時(shí)間 = 作業(yè)完成時(shí)間 – 作業(yè)提交時(shí)間
    • 平均周轉(zhuǎn)時(shí)間 = 各作業(yè)周轉(zhuǎn)時(shí)間之和 / 作業(yè)數(shù)量
    • 帶權(quán)周轉(zhuǎn)時(shí)間 = 作業(yè)周轉(zhuǎn)時(shí)間 / 作業(yè)實(shí)際運(yùn)行的時(shí)間(必然 ≥ 1)
    • 平均帶權(quán)周轉(zhuǎn)時(shí)間 = 各作業(yè)帶權(quán)周轉(zhuǎn)時(shí)間之和 / 作業(yè)數(shù)

    等待時(shí)間:進(jìn)程/作業(yè)處于等待處理機(jī)狀態(tài)時(shí)間之和。等待時(shí)間越長,用戶滿意度越低。

    對(duì)于進(jìn)程來說,等待時(shí)間就是指進(jìn)程建立后等待被服務(wù)的時(shí)間之和。在等待I/O期間,進(jìn)程也是在被服務(wù)的,所以不計(jì)入等待時(shí)間。

    對(duì)于作業(yè)來說,不僅要考慮建立進(jìn)程后的等待時(shí)間,還要加上作業(yè)在外存后備隊(duì)列中等待的時(shí)間。

    調(diào)度算法其實(shí)只會(huì)影響作業(yè)/進(jìn)程的等待時(shí)間,而無法改變其被服務(wù)的時(shí)間。

    響應(yīng)時(shí)間:指從用戶提交請(qǐng)求到首次產(chǎn)生響應(yīng)所用的時(shí)間。

    對(duì)于計(jì)算機(jī)用戶來說,會(huì)希望自己的提交的請(qǐng)求(比如通過鍵盤輸入了一個(gè)調(diào)試命令)盡早地開始被系
    統(tǒng)服務(wù)、回應(yīng)。

    調(diào)度算法

    1、先來先服務(wù) FIFS(FirstCome First Serve)

  • 算法思想

    主要從“公平”的角度考慮

  • 算法規(guī)則

    按照作業(yè)/進(jìn)程到達(dá)的先后順序進(jìn)行服務(wù)

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    用于作業(yè)調(diào)度時(shí),考慮的是哪個(gè)作業(yè)先到達(dá)后備隊(duì)列

    用于進(jìn)程調(diào)度時(shí),考慮的是哪個(gè)進(jìn)程先到達(dá)就緒隊(duì)列

  • 搶占 or 非搶占式?

    非搶占式

  • 優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):公平、算法實(shí)現(xiàn)簡(jiǎn)單
    缺點(diǎn):對(duì)長作業(yè)有利,對(duì)短作業(yè)不利

  • 是否會(huì)導(dǎo)致饑餓

    不會(huì)

  • 2、短作業(yè)優(yōu)先(SJF, Shortest Job First)

  • 算法思想

    追求最少的平均等待時(shí)間,最少的平均周轉(zhuǎn)時(shí)間、最少的平均平均帶權(quán)周轉(zhuǎn)時(shí)間

  • 算法規(guī)則

    每次調(diào)度時(shí),選擇當(dāng)前已到達(dá)、且運(yùn)行時(shí)間最短的作業(yè)/進(jìn)程。

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    可用于作業(yè)調(diào)度 / 進(jìn)程調(diào)度。用于進(jìn)程調(diào)度時(shí):**短進(jìn)程優(yōu)先(SPF, Shortest Process First)**算法

  • 搶占 or 非搶占式?

    SJF / SPF 是非搶占式。搶占式版本:**最短剩余時(shí)間優(yōu)先(SRTN, Shortest Remaining Time Next)**算法

  • 優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):“最短的”平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間
    缺點(diǎn):不公平。對(duì)短作業(yè)有利,長作業(yè)不利。可能產(chǎn)生饑餓現(xiàn)象;作業(yè)/進(jìn)程的運(yùn)行時(shí)間由用戶提供的,不一定真實(shí),不一定真正做到短作業(yè)優(yōu)先

  • 是否會(huì)導(dǎo)致饑餓

    會(huì)。如果不斷有短作業(yè)到來,導(dǎo)致長作業(yè)饑餓 / 餓死

  • 注意幾個(gè)小細(xì)節(jié):

  • 如果題目中未特別說明,所提到的“短作業(yè)/進(jìn)程優(yōu)先算法”默認(rèn)是非搶占式

  • 很多書上都會(huì)說“SJF 調(diào)度算法的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間最少”,這個(gè)表述不嚴(yán)謹(jǐn)。之前例子表明,最短剩余時(shí)間優(yōu)先算法得到的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間還要更少。

    應(yīng)該加上一個(gè)條件“在所有進(jìn)程同時(shí)可運(yùn)行時(shí),采用SJF調(diào)度算法的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間最少”;或者“在所有進(jìn)程都幾乎同時(shí)到達(dá)時(shí),采用SJF調(diào)度算法的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間最少”;

    如不加上述前提條件,應(yīng)該說“搶占式的短作業(yè)/進(jìn)程優(yōu)先調(diào)度算法(最短剩余時(shí)間優(yōu)先, SRNT算法)的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間最少”

  • 雖然嚴(yán)格來說,SJF的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間并不一定最少,但相比于其他算法(如FCFS),SJF依然可以獲得較少的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間

  • 如果選擇題中遇到“SJF 算法的平均等待時(shí)間、平均周轉(zhuǎn)時(shí)間最少”的選項(xiàng),那最好判斷其他選項(xiàng)是不是有很明顯的錯(cuò)誤,如果沒有更合適的選項(xiàng),那也應(yīng)該選擇該選項(xiàng)

  • 3、高響應(yīng)比優(yōu)先(HRRN, Highest Response Ratio Next)

  • 算法思想

    要綜合考慮作業(yè)/進(jìn)程的等待時(shí)間和要求服務(wù)的時(shí)間

  • 算法規(guī)則

    在每次調(diào)度時(shí)先計(jì)算各個(gè)作業(yè)/進(jìn)程的響應(yīng)比,選擇響應(yīng)比最高的作業(yè)/進(jìn)程,上處理機(jī)。

    響應(yīng)比 = (等待時(shí)間+要求服務(wù)時(shí)間) / 要求服務(wù)時(shí)間

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    均可

  • 搶占 or 非搶占式?

    非搶占式。因此只有當(dāng)前運(yùn)行的作業(yè)/進(jìn)程主動(dòng)放棄處理機(jī)時(shí),才需要調(diào)度,才需要計(jì)算響應(yīng)比。

  • 優(yōu)點(diǎn)和缺點(diǎn)

    綜合考慮了等待時(shí)間和運(yùn)行時(shí)間(要求服務(wù)時(shí)間)。

    等待時(shí)間相同時(shí),要求服務(wù)時(shí)間短的優(yōu)先(SJF 的優(yōu)點(diǎn))。

    要求服務(wù)時(shí)間相同時(shí),等待時(shí)間長的優(yōu)先(FCFS 的優(yōu)點(diǎn))

    等待時(shí)間越來越久,響應(yīng)比會(huì)越來越大,從而避免了長作業(yè)饑餓的問題。

  • 是否會(huì)導(dǎo)致饑餓

    不會(huì)

  • 以下三種算法適合用于交互式系統(tǒng),更注重系統(tǒng)的響應(yīng)時(shí)間、公平性、平衡性等指標(biāo)。

    4、時(shí)間片輪轉(zhuǎn)(RR, Round-Robin)

  • 算法思想

    公平地、輪流地為各個(gè)進(jìn)程服務(wù),讓每個(gè)進(jìn)程在一定時(shí)間間隔內(nèi)都可以得到響應(yīng)

  • 算法規(guī)則

    按照各進(jìn)程到達(dá)就緒隊(duì)列的順序,輪流讓各個(gè)進(jìn)程執(zhí)行一個(gè)時(shí)間片(如100ms)。若進(jìn)程未在一個(gè)時(shí)間片內(nèi)執(zhí)行完,則剝奪處理機(jī),將進(jìn)程重新放到就緒隊(duì)列隊(duì)尾重新排隊(duì)。

    隨著分時(shí)操作系統(tǒng)的出現(xiàn)而出現(xiàn),更注重“響應(yīng)時(shí)間”。

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    進(jìn)程調(diào)度(只有作業(yè)放入內(nèi)存建立了相應(yīng)的進(jìn)程后,才能被分配處理機(jī)時(shí)間片)

  • 搶占 or 非搶占式?

    搶占式。

    由時(shí)鐘裝置發(fā)出時(shí)鐘中斷來通知CPU時(shí)間片已到。進(jìn)程未能在時(shí)間片內(nèi)運(yùn)行完,會(huì)被剝奪處理機(jī)使用權(quán)。

  • 優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):公平;響應(yīng)快,適用于分時(shí)操作系統(tǒng);
    缺點(diǎn):由于高頻率的進(jìn)程切換,因此有一定開銷;不區(qū)分任務(wù)的緊急程度。

  • 是否會(huì)導(dǎo)致饑餓

    不會(huì)

  • 5、優(yōu)先級(jí)調(diào)度算法

  • 算法思想

    隨著計(jì)算機(jī)的發(fā)展,特別是實(shí)時(shí)操作系統(tǒng)的出現(xiàn),越來越多的應(yīng)用場(chǎng)景需要根據(jù)任務(wù)的緊急程度來決定處理順序

  • 算法規(guī)則

    每個(gè)作業(yè)/進(jìn)程有各自的 優(yōu)先級(jí),調(diào)度時(shí)選擇 優(yōu)先級(jí)最高的作業(yè)/進(jìn)程

    通常來說,優(yōu)先級(jí)排序:

    系統(tǒng)進(jìn)程 > 用戶進(jìn)程
    前臺(tái)進(jìn)程 > 后臺(tái)進(jìn)程
    I/O密集型進(jìn)程 > CPU密集型進(jìn)程(計(jì)算型進(jìn)程)

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    均可。既可用于作業(yè)調(diào)度,也可用于進(jìn)程調(diào)度。甚至,還會(huì)用于在之后會(huì)學(xué)習(xí)的I/O調(diào)度中

  • 搶占 or 非搶占式?

    搶占式、非搶占式 都有

    非搶占式在 進(jìn)程主動(dòng)放棄處理機(jī) 時(shí)進(jìn)行調(diào)度即可;搶占式還需在 就緒隊(duì)列變化 時(shí),檢查是否會(huì)發(fā)生搶占。

  • 優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):用優(yōu)先級(jí)區(qū)分緊急程度、重要程度,可靈活調(diào)整,適用于實(shí)時(shí)操作系統(tǒng)
    缺點(diǎn):若不斷地有高優(yōu)先級(jí)進(jìn)程到來,則可能導(dǎo)致饑餓

  • 是否會(huì)導(dǎo)致饑餓

    會(huì)

  • 6、多級(jí)反饋隊(duì)列調(diào)度算法(UNIX使用)

  • 算法思想

    對(duì)其他調(diào)度算法的 折中 權(quán)衡

  • 算法規(guī)則

  • 設(shè)置多級(jí)就緒隊(duì)列,各級(jí)隊(duì)列優(yōu)先級(jí)從高到低,時(shí)間片從小到大

  • 新進(jìn)程到達(dá)時(shí)先進(jìn)入第1級(jí)隊(duì)列,按FCFS原則排隊(duì)等待被分配時(shí)間片,若用完時(shí)間片進(jìn)程還未結(jié)束,則進(jìn)程進(jìn)入下一級(jí)隊(duì)列隊(duì)尾。如果此時(shí)已經(jīng)是在最下級(jí)的隊(duì)列,則重新放回該隊(duì)列隊(duì)尾

  • 只有第 k 級(jí)隊(duì)列為空時(shí),才會(huì)為 k+1 級(jí)隊(duì)頭的進(jìn)程分配時(shí)間片

  • 作業(yè)調(diào)度 or 進(jìn)程調(diào)度?

    進(jìn)程調(diào)度

  • 搶占 or 非搶占式?

    搶占。在k 級(jí)隊(duì)列的進(jìn)程運(yùn)行過程中,若更上級(jí)的隊(duì)列(1 ~ k-1級(jí))中進(jìn)入了一個(gè)新進(jìn)程,則由于新進(jìn)程處于優(yōu)先級(jí)更高的隊(duì)列中,因此新進(jìn)程會(huì)搶占處理機(jī),原來運(yùn)行的進(jìn)程放回 k 級(jí)隊(duì)列隊(duì)尾。

  • 優(yōu)點(diǎn)和缺點(diǎn)

    對(duì)各類型進(jìn)程相對(duì)公平(FCFS的優(yōu)點(diǎn));每個(gè)新到達(dá)的進(jìn)程都可以很快就得到響應(yīng)(RR的優(yōu)點(diǎn));短進(jìn)程只用較少的時(shí)間就可完成(SPF的優(yōu)點(diǎn));不必實(shí)現(xiàn)估計(jì)進(jìn)程的運(yùn)行時(shí)間(避免用戶作假);可靈活地調(diào)整對(duì)各類進(jìn)程的偏好程度,比如CPU密集型進(jìn)程、I/O密集型進(jìn)程(拓展:可以將因I/O而阻塞的進(jìn)程重新放回原隊(duì)列,這樣I/O型進(jìn)程就可以保持較高優(yōu)先級(jí))

  • 是否會(huì)導(dǎo)致饑餓

    會(huì),考慮不斷有短時(shí)間的進(jìn)程到來的情況。

  • 總結(jié)

    以上是生活随笔為你收集整理的操作系统:第二章 进程管理2 - 处理机调度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。