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

歡迎訪問 生活随笔!

生活随笔

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

windows

操作系统CPU调度算法

發(fā)布時間:2023/12/20 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统CPU调度算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

什么是調(diào)度算法

在操作系統(tǒng)中調(diào)度是指一種資源分配的過程,因而調(diào)度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對于不同的的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法

為什么需要調(diào)度算法

計算機(jī)系統(tǒng)中的CPU資源非常寶貴,為了充分利用其資源,讓多線程或者多進(jìn)程系統(tǒng)能夠多快好省地完成我們讓它做的各種任務(wù),就需要指定一定的規(guī)則去使用CPU。為此,可在內(nèi)存中可存放數(shù)目遠(yuǎn)大于計算機(jī)系統(tǒng)內(nèi)CPU個數(shù)的進(jìn)程,讓這些進(jìn)程在操作系統(tǒng)的進(jìn)程調(diào)度器的調(diào)度下,能夠讓進(jìn)程高效(高的吞吐量–throughput)、及時(低延遲–latency)、公平(fairness)地使用CPU。為此調(diào)度器可設(shè)計不同的調(diào)度算法來選擇進(jìn)程,這體現(xiàn)了進(jìn)程調(diào)度的策略,同時還需并進(jìn)一步通過進(jìn)程的上下文切換(context switch)來完成進(jìn)程切換,這體現(xiàn)了進(jìn)程調(diào)度的機(jī)制。

我們需要何時調(diào)度(調(diào)度的時機(jī))、是否能夠在內(nèi)核執(zhí)行的任意位置進(jìn)行調(diào)度(調(diào)度的方式)、如果完成進(jìn)程切換(上下文切換)、如果選擇“合適”的進(jìn)程執(zhí)行(調(diào)度策略/調(diào)度算法)、如果評價選擇的合理性(進(jìn)程調(diào)度的指標(biāo))。

調(diào)度算法要達(dá)成的目標(biāo)

  • 周轉(zhuǎn)時間短:從作業(yè)提交給系統(tǒng)開始,到作業(yè)完成為止的這段時間的間隔要盡量小。
  • 響應(yīng)時間快:從用戶提交一個請求開始直至系統(tǒng)首次產(chǎn)生響應(yīng)時間為止的一段時間要盡量小。
  • 截止時間的保證:某個任務(wù)必須開始執(zhí)行的最遲時間,或必須完成的最遲時間。截止時間是評價實(shí)時系統(tǒng)的重要指標(biāo)。
  • 系統(tǒng)吞吐量高:單位時間內(nèi)完成的作業(yè)數(shù)量。系統(tǒng)的吞吐量是評價系統(tǒng)性能的重要標(biāo)準(zhǔn)之一。調(diào)度算法影響系統(tǒng)的吞吐量
  • CPU利用率高:CPU 是計算機(jī)系統(tǒng)中影響時間性能的最重要的硬件資源。在多任務(wù)系統(tǒng),進(jìn)程調(diào)度算法對 CPU 的利用率有很大影響。因此,在選擇和設(shè)計進(jìn)程調(diào)度算法時應(yīng)該考慮使 CPU 利用率盡可能高。
  • 調(diào)度算法的類別

    主要分為以下幾類:

    • 先來先服務(wù)調(diào)度算法
    • 短進(jìn)程優(yōu)先調(diào)度算法
    • 優(yōu)先權(quán)調(diào)度算法
    • 時間片輪轉(zhuǎn)調(diào)度算法
    • 多級隊列調(diào)度**、**多級反饋隊列調(diào)度

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

    這里需要注意,存在兩種進(jìn)程搶占處理器的調(diào)度方式:

    • 可搶占式(可剝奪式,preemptive):就緒隊列中一旦有某進(jìn)程的優(yōu)先級高于當(dāng)前正在執(zhí)行的進(jìn)程的優(yōu)先級時,操作系統(tǒng)便立即進(jìn)行進(jìn)程調(diào)度,完成進(jìn)程切換。

    • 不可搶占式(不可剝奪式non_preemptive):即使在就緒隊列存在有某進(jìn)程優(yōu)先級高于當(dāng)前正在執(zhí)行的進(jìn)程的優(yōu)先級時,當(dāng)前進(jìn)程仍將占用處理機(jī)執(zhí)行,直到該進(jìn)程自己進(jìn)入阻塞狀態(tài),或時間片用完,或在執(zhí)行完系統(tǒng)調(diào)用后準(zhǔn)備返回用戶進(jìn)程前的時刻,才重新發(fā)生調(diào)度讓出處理機(jī)。

    常見的調(diào)度算法

    FCFS 先來先服務(wù)優(yōu)先調(diào)度算法(FCFS, First Come First Serve)

    先來先服務(wù)(FCFS)調(diào)度算法是一種最簡單的調(diào)度算法,該算法既可用于作業(yè)調(diào)度,
    也可用于進(jìn)程調(diào)度。FCFS算法比較有利于長作業(yè)(進(jìn)程),而不利于短作業(yè)(進(jìn)程)。由此可知,本算法適合于CPU繁忙型作業(yè),
    而不利于I/O繁忙型的作業(yè)(進(jìn)程)。這里和python的全局解釋器進(jìn)程鎖的用法一樣,適合I/O密集型。

    短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法(SJF, Shortest Job First)

    短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法是指對短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法,該算法既可用于作業(yè)調(diào)度,
    也可用于進(jìn)程調(diào)度。但其對長作業(yè)不利;不能保證緊迫性作業(yè)(進(jìn)程)被及時處理;作業(yè)的長短只是被估算出來的。

    最高優(yōu)先權(quán)調(diào)度算法(Priority Scheduling)

    為了照顧緊迫性作業(yè),使之進(jìn)入系統(tǒng)后便獲得優(yōu)先處理,引入了最高優(yōu)先權(quán)優(yōu)先(FPF)調(diào)度算法。
    此算法常被用在批處理系統(tǒng)中,作為作業(yè)調(diào)度算法,也作為多種操作系統(tǒng)中的進(jìn)程調(diào)度,還可以用于實(shí)時系統(tǒng)中。當(dāng)其用于作業(yè)調(diào)度,
    將后備隊列中若干個優(yōu)先權(quán)最高的作業(yè)裝入內(nèi)存。當(dāng)其用于進(jìn)程調(diào)度時,把處理機(jī)分配給就緒隊列中優(yōu)先權(quán)最高的進(jìn)程,此時, 又可以進(jìn)一步把該算法分成以下兩種:
    (1)非搶占式優(yōu)先權(quán)算法;
    (2)搶占式優(yōu)先權(quán)調(diào)度算法(高性能計算機(jī)操作系統(tǒng));

    對于最高優(yōu)先權(quán)優(yōu)先調(diào)度算法,其核心在于:它是使用靜態(tài)優(yōu)先權(quán)還是動態(tài)優(yōu)先權(quán), 以及如何確定進(jìn)程的優(yōu)先權(quán)。
    動態(tài)優(yōu)先權(quán):高響應(yīng)比優(yōu)先調(diào)度算法為了彌補(bǔ)短作業(yè)優(yōu)先算法的不足,我們引入動態(tài)優(yōu)先權(quán),使作業(yè)的優(yōu)先等級隨著等待時間的增加而以速率a提高。
    該優(yōu)先權(quán)變化規(guī)律可描述為:優(yōu)先權(quán)=(等待時間+要求服務(wù)時間)/要求服務(wù)時間;即 =(響應(yīng)時間)/要求服務(wù)時間。

    時間片輪轉(zhuǎn)法(RR, Round Robin)

    時間片輪轉(zhuǎn)法一般用于進(jìn)程調(diào)度,每次調(diào)度,把CPU分配隊首進(jìn)程,并令其執(zhí)行一個時間片。
    當(dāng)執(zhí)行的時間片用完時,由一個記時器發(fā)出一個時鐘中斷請求,該進(jìn)程被停止,并被送往就緒隊列末尾;依次循環(huán)。

    多級反饋隊列調(diào)度算法(multilevel feedback queue scheduling)

    多級反饋隊列調(diào)度算法,不必事先知道各種進(jìn)程所需要執(zhí)行的時間,它是目前被公認(rèn)的一種較好的進(jìn)程調(diào)度算法。 其實(shí)施過程如下:

  • 設(shè)置多個就緒隊列,并為各個隊列賦予不同的優(yōu)先級。在優(yōu)先權(quán)越高的隊列中, 為每個進(jìn)程所規(guī)定的執(zhí)行時間片就越小。
  • 當(dāng)一個新進(jìn)程進(jìn)入內(nèi)存后,首先放入第一隊列的末尾,按FCFS原則排隊等候調(diào)度。
    如果他能在一個時間片中完成,便可撤離;如果未完成,就轉(zhuǎn)入第二隊列的末尾,再同樣等待調(diào)度……
    如此下去,當(dāng)一個長作業(yè)(進(jìn)程)從第一隊列依次將到第n隊列(最后隊列)后,便按第n隊列時間片輪轉(zhuǎn)運(yùn)行。
  • 僅當(dāng)?shù)谝魂犃锌臻e時,調(diào)度程序才調(diào)度第二隊列中的進(jìn)程運(yùn)行;僅當(dāng)?shù)?到第( i-1 )隊列空時,
    才會調(diào)度第i隊列中的進(jìn)程運(yùn)行,并執(zhí)行相應(yīng)的時間片輪轉(zhuǎn)。
  • 如果處理機(jī)正在處理第i隊列中某進(jìn)程,又有新進(jìn)程進(jìn)入優(yōu)先權(quán)較高的隊列,
    則此新隊列搶占正在運(yùn)行的處理機(jī),并把正在運(yùn)行的進(jìn)程放在第i隊列的隊尾。
  • 總結(jié)

    以上是生活随笔為你收集整理的操作系统CPU调度算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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