常見的進程調度演算法

来源:http://www.cnblogs.com/Lynn-Zhang/archive/2016/06/16/5590931.html
-Advertisement-
Play Games

在OS中調度的是實質是一種資源分配。 調度演算法是指:根據系統資源分配策略所規定的資源分配演算法。對於不同的系統或系統目標,通常採用不同的調度演算法。 1.先來先服務和短作業(進程)優先調度演算法 1)先來先服務調度演算法 先來先服務(FCFS)調度演算法是一種最 簡單的調度演算法,該演算法既可用於作業調度,也可用 ...


在OS中調度的是實質是一種資源分配。

調度演算法是指:根據系統資源分配策略所規定的資源分配演算法。對於不同的系統或系統目標,通常採用不同的調度演算法。

1.先來先服務和短作業(進程)優先調度演算法

  1)先來先服務調度演算法 

  先來先服務(FCFS)調度演算法是一種最 簡單的調度演算法,該演算法既可用於作業調度,也可用於進程調度。當在作業調度中採用該演算法時,每次調度都是從後備作業隊列中選擇一個或多個最先進入該隊列的 作業,將它們調入記憶體,為它們分配資源、創建進程,然後放入就緒隊列。在進程調度中採用FCFS演算法時,則每次調度是從就緒隊列中選擇一個最先進入該隊列 的進程,為之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞後才放棄處理機。

  先來先服務演算法比較與利於長作業(進程),而不利於短作業(進程)。

  2)短作業(進程)優先調度演算法 

  短作業(進程)優 先調度演算法SJ(P)F,是指對短作業或短進程優先調度的演算法。它們可以分別用於作業調度和進程調度。短作業優先(SJF)的調度演算法是從後備隊列中選擇 一個或若幹個估計運行時間最短的作業,將它們調入記憶體運行。而短進程優先(SPF)調度演算法則是從就緒隊列中選出一個估計運行時間最短的進程,將處理機分 配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新調度。

2.高優先權優先調度演算法

   優先權調度演算法的類型 

  為了照顧緊迫型作業,使之在進入系統後便獲得優先處理,引入了最高優先權優先(FPF)調度演算法。此演算法常被用於批處理系統中,作為作業調度演算法,也作為多種操作系統中的進程調度演算法,還可用於實時系統中。當把該演算法用於作業調度時,系統將從後備隊列中選擇若幹個優先權最高的作業裝入記憶體。當用於進程調度時,該演算法是把處理機分配給就緒隊列中優先權最高的進程,這時,又可進一步把該演算法分成如下兩種。 

  1) 非搶占式優先權演算法 

  在這種方式 下,系統一旦把處理機分配給就緒隊列中優先權最高的進程後,該進程便一直執行下去,直至完成;或因發生某事件使該進程放棄處理機時,系統方可再將處理機重 新分配給另一優先權最高的進程。這種調度演算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。 

  2) 搶占式優先權調度演算法 

  在這種方式 下,系統同樣是把處理機分配給優先權最高的進程,使之執行。但在其執行期間,只要又出現了另一個其優先權更高的進程,進程調度程式就立即停止當前進程(原 優先權最高的進程)的執行,重新將處理機分配給新到的優先權最高的進程。因此,在採用這種調度演算法時,是每當系統中出現一個新的就緒進程i 時,就將其優先權Pi與正在執行的進程j 的優先權Pj進行比較。如果Pi≤Pj,原進程Pj便繼續執行;但如果是Pi>Pj,則立即停止Pj的執行,做進程切換,使i 進程投入執行。顯然,這種搶占式的優先權調度演算法能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對性能要求較高的批處理和分時系 統中。

  3)高響應比優先調度演算法 

  如果我們能為每個作業引入動態優先權,並使作業的優先順序隨著等待時間的增加而以速率a 提高,則長作業在等待一定的時間後,必然有機會分配到處理機。該優先權的變化規律可描述為:
操作系統
  由於等待時間與服務時間之和就是系統對該作業的響應時間,故該優先權又相當於響應比RP。據此,又可表示為:
操作系統
  由上式可以看出: 

  (1) 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該演算法有利於短作業。

   (2) 當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。 

  (3) 對於長作業,作業的優先順序可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先順序便可升到很高,從而也可獲得處理機。簡言之,該演算法既照顧了短作 業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該演算法實現了一種較好的折衷。當然,在利用該演算法時,每要進行調度之前,都須先做響 應比的計算,這會增加系統開銷。

3.基於時間片的輪轉調度演算法

  1)時間片輪轉法 

  在早期的時間 片輪轉法中,系統將所有的就緒進程按先來先服務的原則排成一個隊列,每次調度時,把CPU 分配給隊首進程,並令其執行一個時間片。時間片的大小從幾ms 到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程式便據此信號來停止該進程的執行,並將它送往就緒隊列的末尾;然後,再把處理機 分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程在一給定的時間內均能獲得一時間片的處理機執行時間。換言 之,系統能在給定的時間內響應所有用戶的請求。

  2)多級反饋隊列調度演算法 

  前面介紹的各種用作進程調度的演算法都有一 定的局限性。如短進程優先的調度演算法,僅照顧了短進程而忽略了長進程,而且如果並未指明進程的長度,則短進程優先和基於進程長度的搶占式調度演算法都將無法 使用。而多級反饋隊列調度演算法則不必事先知道各種進程所需的執行時間,而且還可以滿足各種類型進程的需要,因而它是目前被公認的一種較好的進程調度演算法。 在採用多級反饋隊列調度演算法的系統中,調度演算法的實施過程如下所述。

   (1) 應設置多個就緒隊列,併為各個隊列賦予不同的優先順序。第一個隊列的優先順序最高,第二個隊列次之,其餘各隊列的優先權逐個降低。該演算法賦予各個隊列中進程執 行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……, 第i+1個隊列的時間片要比第i個隊列的時間片長一倍。 

   (2) 當一個新進程進入記憶體後,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如 果它在一個時間片結束時尚未完成,調度程式便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片後仍未 完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列後,在第n 隊列便採取按時間片輪轉的方式運行。

   (3) 僅當第一隊列空閑時,調度程式才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為 某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調度程式把正在運行 的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主鍵、超鍵、候選鍵、外鍵定義;三種約束;ER圖舉例;資料庫相關鏈接 ...
  • ...
  • 簡介 在上篇文章中我們談到了查詢優化器和執行計劃緩存的關係,以及其二者之間的衝突。本篇文章中,我們會主要闡述執行計劃緩存常見的問題以及一些解決辦法。 將執行緩存考慮在內時的流程 上篇文章中提到了查詢優化器解析語句的過程,當將計劃緩存考慮在內時,首先需要查看計劃緩存中是否已經有語句的緩存,如果沒有,才 ...
  • 第13章 可擴展性設計之 MySQL Replication 前言: MySQL Replication 是 MySQL 非常有特色的一個功能,他能夠將一個 MySQL Server 的 Instance 中的數據完整的複製到另外一個 MySQL Server 的 Instance 中。雖然複製過程 ...
  • 安裝SQL Server2016正式版 今天終於有時間安裝SQL Server2016正式版,下載那個安裝包都用了一個星期 安裝包可以從這裡下載: http://www.itellyou.cn/ https://msdn.microsoft.com/zh-cn/subscriptions/downl ...
  • 環境:SQL Server2012 SP3 企業版,開發伺服器,並沒有什麼負載,全庫索引統一Rebuild過 經反覆執行驗證過, 不算太複雜的SQL(存儲過程中代入參數摳出來的SQL代碼) 預設情況下,執行完成需要3秒鐘 非要用紅色圈中子查詢中的表(是一個相關子查詢)去驅動其他表, 添加OPTION ...
  • 1. 配置防火牆 正確配置防火牆的過濾規則,否則會造成NFS文件系統的掛載失敗,NIS賬戶認證的失敗,mpirun遠程任務實例投放的失敗。一般情況下,計算集群是在內部區域網中使用,所以可以不用太顧及安全問題,直接關閉掉所有節點伺服器的防火牆即可。 相關命令如下: 2. 配置集群區域網ip與主機名的映 ...
  • 一、nginx的簡單介紹 nginx 結構上分為3大模塊: 1.核心模塊(HTTP模塊、EVENT模塊和MAIL模塊) 2.基礎模塊(HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊) 3.第三方模塊(GI模塊、HTTP Proxy模塊 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...