搜尋
首頁運維linux運維處理機調度的詳細介紹

處理機調度的詳細介紹

Jul 18, 2017 am 09:35 AM
作業系統

處理機的調度

標籤(空格分隔): 進程調度調度演算法作業系統


基本概念

## 定義

:作業系統管理了系統的有限資源,當有多個進程(或多個進程發出的請求)要使用這些資源時,因為資源的有限性,必須按照一定的原則選擇進程(請求)來佔用資源, 我們稱之為調度。

其目的是控制資源使用者的數量,選取資源使用者許可佔用資源或佔用資源。處理機調度的三個層次:

  • 進階調度:作業調度, 調度物件為作業.

  • 中階調度:記憶體調度(實質是記憶體的對換功能)

  • 低階調度:進程調度, 調度物件為行程或核心級執行緒

##作業調度的演算法也適用於行程排程

服務時間
\(T_s\)

: 系統為作業或行程提供服務的時間週轉時間\(T_i \)
: 作業或程序被提交給系統到作業或進程完成為止的時間間隔.通常包括:

作業在外存後備隊列上等待調度的時間.
進程在就緒佇列上等待進程調度的時間.

進程在cpu上執行的時間.
進程等待I/O操作完成的時間.

平均週轉時間:

\[T = \frac{\sum_{i=1}^n T_i}{n}\]
頻寬週轉時間: 作業的周轉時間與為它提供服務的時間之比
\[W_i = \frac{T_i}{T_s}\]
平均帶權週轉時間:
\[W = \frac{\sum_ {i=1}^n \frac{T_i}{T_s}}{n}\]
#調度時機、切換與過程

行程排程與切換程式是作業系統內核程式。當請求調度的事件發生後,才可能會執行進程調度程序,當調度了新的就緒進程後,才會去進行進程間的切換。理論上這三件事情應該順序執行,但在實際設計中,在作業系統核心程式運行時,如果某時發生了引起進程調度的因素,並不一定能夠馬上進行調度與切換。

現代作業系統中,無法進行行程的調度與切換的情況有以下幾種情況:

    在處理中斷的過程中:中斷處理過程複雜,在實作上很難做到進程切換,中斷處理是系統工作的一部分,邏輯上不屬於某一進程,不應被剝奪處理機資源。
  1. 進程在作業系統核心程式臨界區中:進入臨界區後,需要獨佔式地存取共享數據,理論上必須加鎖,以防止其他並行程式進入,在解鎖前不應切換到其他進程運行,以加快該共享資料的釋放。
  2. 其他需要完全屏蔽中斷的原子操作過程中:如加鎖、解鎖、中斷現場保護、恢復等原子操作。在原子過程中,連中斷都要屏蔽,更不應該進行進程調度與切換。
  3. 如果在上述過程中發生了引起調度的條件,並不能馬上進行調度和切換,應置系統的請求調度標誌,直到上述過程結束後才進行相應的調度與切換。

應該進行進程調度與切換的情況有:

    當發生引起調度條件,且當前進程無法繼續運行時,可以馬上進行調度與切換。如果作業系統只在這種情況下進行進程調度,就是非剝奪調度。
  1. 當中斷處理結束或自陷處理結束後,返回被中斷程序的用戶態程序執行現場前,若置上請求調度標誌,即可馬上進行進程調度與切換。如果作業系統支援這種情況下的運行調度程序,就實現了剝奪方式的調度。
  2. 進程切換往往在調度完成後立刻發生,它要求保存原進程當前切換點的現場訊息,恢復被調度進程的現場資訊。現場切換時,作業系統核心會將原始進程的現場資訊推入到當前進程的核心堆疊來保存它們,並更新堆疊指標。核心完成從新進程的核心堆疊中裝入新進程的現場資訊、更新目前運行進程空間指標、重置PC暫存器等相關工作之後,開始執行新的進程。

調度的方式

    非搶佔方式
  • 一旦處理機分配給某進程後, 就一直讓它運行下去, 決不會因為時鐘中斷或任何其他原因取搶佔目前正在運行進程的處理機, 直至該進程完成, 或發生某事件而被阻塞時, 才把處理機分配給其他進程.


  • 搶佔方式
  • 系統允許調度程序根據某種原則, 取暫停某個正在執行的進程, 將已分配個該進程的處理機重新分配給另一進程.

    "搶佔"時應遵循一定的原則:

    • 優先權原則
    • 短行程優先原則
    • 時間片原則

典型的調度演算法

先來先服務調度演算法(first-come first-served ):

即FCFS調度演算法, 既可用於作業調度, 也可用於進程調度.系統按照作業到達的先後次序(優先考慮在就緒佇列中等待時間最長的作業)進行排程.
缺點:未考慮作業的緊迫程度, 只能順序運行

#短作業(行程)優先的排程演算法(short job first):

為短作業而設立, 因為作業系統中大多為短作業.系統在作業運行時, 選出運行時間最短的作業將其調入記憶體.

  1. #SJF(不可搶佔):演算法以作業的長短(作業需要運行的時間)來計算優先權, 作業越短, 其優先權越高.

  2. SPF(可搶佔):同上, 但是當有作業優先權較高時, 便可以搶佔資源優先執行.

缺點:

  • 必須預知作業的運行時間

  • 對作業程不利

  • 無法實現人機互動

  • 沒有考慮到作業的緊迫程度

優先調度演算法(priority-scheduling algorithm):

PSA演算法基於作業的緊迫程度, 由外部賦予作業對應的優先權, 根據作業優先權進行調度.

高響應閉優先調度演算法(highest request ratio next):

# HRRN演算法即考慮了作業的等待時間, 又考慮了作業運行時間. 為沒有作業引入一個動態優先級:

##優先權= (等待時間+要求服務時間) / 要求服務時間

可縮寫為:

R = 回應時間/ 要求服務時間

特點:

  1. 作業等待時間相同, 則要求服務時間越短, 優先權越高越, 類似於SJF演算法, 有利於短作業

  2. 作業要求服務時間相同時, 則作業等待時間約長, 優先權越高, 類似於FCFS演算法, 有利於長作業

  3. 對於長作業(要求服務時間長), 隨著等待的時間足夠長,也可獲得較高的優先權. 不會一直等下去.

時間片輪轉調度演算法(RR)

原理: 系統根據FCFS策略將所有的就緒進程排成一個就緒隊列, 並設定每隔一段時間產生依次中斷, 激活系統中的進程調度程序, 完成依次調度, 將cpu分配給新的隊首進程(或新到達的緊迫進程).

進程切換

  1. 若一個時間片尚未用完, 正在運行的進程便已完成, 則立即激活調度程序, 將其從執行隊列中刪除, 在調度就緒佇列的隊首進程運行, 並啟動一個新的時間片.

  2. 在一個時間片用完時, 計時中斷處理程序被激活, 如果進程尚未運行完畢, 則調度程式將它送到就緒佇列末尾, 並調度就緒佇列的隊首進程運行, 並啟動新時間片.

##注意

:時間片選取過小, 則將頻繁的執行進程調度和進程長下文切換, 增加系統開銷; 時間片選取過長, 則RR算法退化為FCFS算法, 無法滿足短作業和交互式用戶需求. 時間片應選取略大於依次典型的交互所需要的時間, 是大多數進程在一個時間片內完成.多級反饋隊列調度算法(multileved feedback queue):

    設置多個就緒佇列, 並為每個佇列賦予不同的優先權, 優先權越高的佇列其時間片越小.優先權最高的佇列最先進入待調度的佇列
  1. 佇列之間採用FCFS調度演算法.只有高優先權佇列中的全部行程完成時才調度下一佇列
  2. 佇列內的程序依照輪換演算法調度.新行程進入記憶體後首先進入優先權最高的佇列
  3. 在低優先權佇列運行時, 若有新行程到達, 那麼在運行完這個時間片後,CPU馬上分配給新到達的作業(搶佔式)。

實時系統中的進程調度演算法

實時系統是指系統能及時響應外部事件的請求並及時處理這些請求.基於這一特性, 實時系統在工業(武器)控制, 多媒體等系統中常見.
實時系統中通分為存在一個截止時間, 硬實時任務(HRT)要求在開始截止時間前必須執行, 在結束截止時間前必須結束. 軟實時任務同上, 但不嚴​​格.
在實時系統中有兩類演算法值得注意:最早截止時間優先演算法(Earliest Deadline First)和最低鬆弛度優先演算法(Least Laxity First).兩類演算法都可用搶佔式和非搶佔式調度, 但後者常用於搶佔式調度.
在m個週期性的實時調度中, 每個實時任務的處理時間\(C_i\), 週期時間\(P_i\), 在但處理機的情況下, 需要滿足條件:$\sum_{i=1}^m\frac{C_i}{P_i} \(小於1; 多處理機條件下, 必須滿足條件\)\sum_{i=1}^m\frac{C_i}{P_i} $小於N, N為處理機數.

最早截止時間優先演算法(EDF)

此演算法在即時系統中根據任務的截止時間決定其優先權.

  1. 非搶佔式

  2. 搶佔式

最低鬆弛度優先演算法(LLF)

在該法中根據任務的緊急程度(鬆弛程度)賦予其優先權, 越緊急的任務優先級越高.

任務的鬆弛程度= 必須完成時間- 其本身運行時間- 當前時間

系統的任務按照鬆弛度排成一個就緒佇列, 鬆弛度低的任務排在佇列前面, 即調度程序優先執行.

以上是處理機調度的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux:基本命令和操作Linux:基本命令和操作Apr 24, 2025 am 12:20 AM

Linux中不可或缺的命令包括:1.ls:列出目錄內容;2.cd:改變工作目錄;3.mkdir:創建新目錄;4.rm:刪除文件或目錄;5.cp:複製文件或目錄;6.mv:移動或重命名文件或目錄。這些命令通過與內核交互執行操作,幫助用戶高效管理文件和系統。

Linux操作:管理文件,目錄和權限Linux操作:管理文件,目錄和權限Apr 23, 2025 am 12:19 AM

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

Linux中的維護模式是什麼?解釋了Linux中的維護模式是什麼?解釋了Apr 22, 2025 am 12:06 AM

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux:深入研究其基本部分Linux:深入研究其基本部分Apr 21, 2025 am 12:03 AM

Linux的核心組件包括內核、文件系統、Shell、用戶空間與內核空間、設備驅動程序以及性能優化和最佳實踐。 1)內核是系統的核心,管理硬件、內存和進程。 2)文件系統組織數據,支持多種類型如ext4、Btrfs和XFS。 3)Shell是用戶與系統交互的命令中心,支持腳本編寫。 4)用戶空間與內核空間分離,確保系統穩定性。 5)設備驅動程序連接硬件與操作系統。 6)性能優化包括調整系統配置和遵循最佳實踐。

Linux體系結構:揭示5個基本組件Linux體系結構:揭示5個基本組件Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

Linux操作:利用維護模式Linux操作:利用維護模式Apr 19, 2025 am 12:08 AM

Linux的維護模式可以通過GRUB菜單進入,具體步驟為:1)在GRUB菜單中選擇內核並按'e'編輯,2)在'linux'行末添加'single'或'1',3)按Ctrl X啟動。維護模式提供了一個安全環境,適用於系統修復、重置密碼和系統升級等任務。

Linux:如何進入恢復模式(和維護)Linux:如何進入恢復模式(和維護)Apr 18, 2025 am 12:05 AM

進入Linux恢復模式的步驟是:1.重啟系統並按特定鍵進入GRUB菜單;2.選擇帶有(recoverymode)的選項;3.在恢復模式菜單中選擇操作,如fsck或root。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。

Linux的基本要素:為初學者解釋Linux的基本要素:為初學者解釋Apr 17, 2025 am 12:08 AM

Linux的核心組件包括內核、文件系統、Shell和常用工具。 1.內核管理硬件資源並提供基本服務。 2.文件系統組織和存儲數據。 3.Shell是用戶與系統交互的接口。 4.常用工具幫助完成日常任務。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。