ad20中怎么多選操作改層_在操作系統中CPU是怎么調度的

對于單處理器系統,每次只允許一個進程運行,任何其他進程必須等待,直到CPU空閑能被調度為止,多道程序的目的是在任何時候都有某些進程在運行,以使CPU使用率最大化。

fb20a24fd96c7c08a06d524132e00fc8.png

CPU-I/O區間周期

CPU的成功調度依賴于進程的如下屬性:進程執行由CPU 執行I/O等待周期

進程在這兩個狀態之間切換,進程執行從 CPU 區間開始,在這之后是 I/O 區間,接著是另一個 CPU 區間,然后是另一個I/O區間,如此進行下去,最終,最后的CPU 區間通過系統請求終止執行。

CPU調度程序

每當CPU空閑時,操作系統就必須從就緒隊列中選擇一個進程來執行,進程選擇由短期調度程序 或 CPU 調度程序執行,調度程序從內存中選擇一個能夠執行的進程,并為之分配CPU。

就緒隊列不必是先進先出(FIFO)隊列。正如研究各種調度算法時將看到的,就緒隊列可實現為FIFO隊列、優先隊列、樹或簡單的無序鏈表,不過,從概念上講,就緒隊列內的所有進程都要排隊以等待在CPU上運行,隊列中的記錄通常為進程控制塊。

調度算法(重要)

CPU 調度處理是從就緒隊列中選擇進程并為之分配CPU的問題。

先到先服務調度(FCFS)

先到先服務(first-come, first-served(FCFS))

采用這種方案,先請求CPU的進程先分配到CPU,FCFS 策略可以用FIFO隊列來實現。當一個進程進入到就緒隊列,其PCB鏈接到隊列的尾部,當CPU空閑時,CPU分配給位于隊列頭的進程,接著該運行進程從隊列中刪除。采用 FCFS策略的平均等待時間通常是比較長的

FCFS 調度算法是非搶占的,一旦CPU被分配給了一個進程,該進程就會保持CPU直到釋放CPU為止,即程序終止或是請求 I/O. FCFS 算法對于分布式系統(每個用戶需要定時地得到一定的CPU時間)是特別麻煩的。允許一個進程保持CPU 時間過長將是個嚴重的錯誤。

最短作業優先調度(SJF)

最短作業優先調度算法(shortest-job-first (SJF) scheduling algorithm)

這一算法將每個進程與其下一個CPU區間段相關聯,當CPU為空閑時,他會賦給具有最短CPU區間的進程。如果兩個進程具有相同長度,那么可以使用FCFS調度來處理。

SJF 調度算法可以證明為最佳的,這是因為對于給定的一組進程,SJF 算法的平均等待時間最小,通過將短進程移到長進程之前,短進程等待時間的減少大于長進程等待時間的增加,因而,平均等待時間減少了。

優先級調度

SJF 算法可以作為通用優先級調度算法的一個特例。每個進程都有一個優先級與其關聯。具有最高優先級的進程會分配到CPU,具有相同優先級的進程按FCFS順序。SJF算法屬于簡單優先級算法,其優先級(p)為下一個(預測的)CPU區間的倒數,CPU區間越大,則優先級越小,反之亦然。

優先級可通過內部或外部方式來定義,內部定義優先級使用一些測量數據以計算進程優先級。例如,時間極限,內存要求,打開文件的數量和平均I/O區間與平均CPU區間之比都可以用于計算優先級。

優先級調度算法的一個主要問題是無阻塞 或饑餓,可以運行但缺乏CPU的進程可以認為是阻塞的,它在等待CPU。

輪轉法調度(RR)

輪轉法(round-robin, RR)調度算法是專門為分時系統設計的,它類似于FCFS調度,但是增加了搶占以切換進程。定義一個較小時間單元,稱之為時間片, 時間片通常為 10 - 100 ms, 將就緒隊列作為循環隊列。CPU 調度程序循環就緒隊列,為每一個進程分配不超過一個時間片的CPU

為了實現RR調度,將就緒隊列保存為進程的FIFO隊列,新進程增加到就緒隊列的尾部,CPU調度程序從就緒隊列中選擇第一個程序,設置定時器在一個時間片之后中斷,再分派該進程。

接下來將可能發生兩種情況,進程可能只需要小于時間片的CPU區間,對于這種情況,進程本身會自動釋放CPU,調度程序接著處理就緒隊列的下一個進程,否則,如果當前運行進程的CPU區間比時間片要長,定時器會中斷并產生操作系統中斷,然后進程上下文切換,將進程加入到就緒隊列的尾部,接著CPU調度程序會選擇就緒隊列中的下一個進程。

RR調度算法是可搶占的,對于RR調度算法,隊列中沒有進程被分超過一個時間片的CPU時間(除非它是唯一可運行的進程),如果進程的CPU區間超過了一個時間片,那么該進程會被搶占,而被放回就緒隊列。

RR算法的性能很大程度上依賴域時間片的大小,在極端情況下,如果時間片非常大,那么RR算法與FCFS算法一樣,如果時間片很小(如毫秒),那么RR算法稱為處理器共享,(從理論上來說)n個進程對于用戶都有它自己的處理器,速度為真正處理數度的 1/n。這種方法用在 Control Data Corporation(CDC)的硬件上,可以用一組硬件和10組寄存器實現 10 個外設處理器。硬件為一組寄存器執行一個指令,然后為下一組執行,這種循環不斷進行,形成10個慢處理器器而不是1個塊處理器。

多級隊列調度

多級隊列調度算法將就緒隊列分成多個獨立隊列,根據進程的屬性,如內存大小,進程優先級、進程類型、一個進程被永久地分配到一個隊列,每個隊列有自己的調度算法。這種算法的優點是低調度開銷,缺點是不夠靈活。

多級反饋隊列調度

多級反饋隊列調度算法,允許進程在隊列之間移動,主要思想是根據不同CPU區間的特點以區分進程,如果進程使用過多的CPU時間,那么它會被移到更低的優先級隊列。

多處理器調度

之前討論的是單處理器系統內的CPU 問題,如果有多個CPU,則負載分配成為可能,但調度問題也相應的變得更加復雜。與單處理器中的CPU調度算法一樣,沒有最好的解決方案。

多處理器調度的方法

在一個多處理器中,CPU調度的一種方法是讓一個處理器(主服務器)處理所有的調度決定、I/O處理以及其他系統活動,其他的處理器只執行用戶代碼。這種非對稱多處理方法更為簡單,因為只有一個處理器訪問系統數據結構,減輕了數據共享的需要。

另一種方法是使用對稱處理器方法,即每個處理器自我調度,所有進程可能處于一個共同的就緒隊列中,或每個處理器都有它自己的私有就緒隊列。無論如何,調度通過每個處理器檢查共同就緒隊列并選擇一個進程來執行。如果多處理器試圖訪問和更新一個共同數據結構,那么每個處理器必須編程:必須保證兩個處理器不能選擇同一個進程,且進程不會從隊列中丟失。

處理器親和性

考慮一下,當一個進程在一個特定處理器上運行時,緩存中會發生什么?進程最近訪問的數據進入處理器緩存,結果是進程所進行的連續內存訪問通常在緩存中得以滿足。現在可以考慮一下,如果進程移到其他處理器上時,會發生什么:被遷移的第一個處理器的緩存中的內容必須為無效,而將要遷移的第二個處理器的緩存需要重新構建。由于使緩存無效或重新構建的代價高,絕大多數SMP系統試圖避免將進程從一個處理器移至另一個處理器,而是努力使一個進程在同一個處理器上運行,這被稱為處理器親和性,即一個進程需要對其運行所在的處理器的親和性。

負載平衡

負載平衡 設法將工作負載平均地分配到SMP系統中的所有處理器上,值得注意的是,負載平衡通常只是對那些擁有自己私有的可執行進程的處理器而言是必要的。在具有共同隊列的系統中,通常不需要負載平衡,因為一但處理器空閑,它立刻從共同隊列中取走一個可執行進程,但同樣值得注意的是,在絕大多數支持SMP中,每個處理器都具有一個可執行進程的私有隊列。

負載平衡常會抵消處理器的親和性的優點。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

edtext 從右邊開始輸入 安卓_轉換iOS和安卓的視頻至任何格式

有時候我們有一些視頻在我們的iOS和安卓設備里,不過我們想在更大的熒幕上觀看如電腦或電視機,或者要編輯這些視頻,怎么辦?別擔心,萬興優轉可以輕松轉換您設備里的視頻到任意格式。我們支持所有iOS和安卓設備&#xff0…

ansys變形太夸張_航母上的一顆鉚釘能換一輛奧迪?太奢侈了

局座張召忠曾在某軍事節目中說:“航母上的每一個鉚釘,能換一輛奧迪”,此話一出,立馬引起了網友們的激烈討論。要知道一輛奧迪汽車,怎么也要20萬元起步,航母上一顆小小的鉚釘竟然這么值錢?作為“…

c#url拼接方法名_C# 從1到Core委托與事件

委托與事件在C#1.0的時候就有了,隨著C#版本的不斷更新,有些寫法和功能也在不斷改變。本文溫故一下這些改變,以及在NET Core中關于事件的一點改變。一、C#1.0 從委托開始1. 基本方式什么是委托,就不說概念了,用例子說話…

linux禁止客戶端上傳文件_Linux下Shell腳本實現FTP自動上傳和下載文件

概述之前測試寫的一個腳本,主要是為了實現FTP自動上傳和下載文件。大家可以參考下:基礎環境配置[rootpxzxdm01 ~]# useradd -d /home/ftp1 ftp1 [rootpxzxdm01 ~]# passwd ftp1 (密碼123456)[rootpxzxdm01 ~]# usermod -s /sbin/nologin ftp1 (限定用戶f…

谷歌瀏覽器打開tif_谷歌打開后是搜狗瀏覽器??怎么辦

方法如下:右鍵點開谷歌圖標—屬性—文件所在位置—找到谷歌程序—右鍵建立新的快捷方式—打開新的快捷谷歌,好了谷歌設置里面的啟動 刪除搜狗瀏覽器的方法,親試沒用,如有其他方法,歡迎交流

python安裝requests模塊失敗_No module named quot;Cryptoquot;,如何安裝Python三方模塊Crypto...

前兩天公司公司老總讓我研究怎么用企業微信第三方應用進行官網對接,完成URL回調驗證問題。具體如何進行Python 的Django網站與企業微信第三方應用進行回調驗證的博客地址為:https://www.cnblogs.com/ws17345067708/p/10522472.html這里講講,如…

對數函數定義域和值域為r_對數函數

我們知道,指數函數 ,對于每一個確定值x,都有一個y值與它相對應。并且當x取不同值時,得到的函數值y也是不同的。也就是說指數函數的自變量與因變量是一一對應的。對于任意的,在R中都有唯一的數x滿足 。如果把y看做自變量&#xff0…

怎樣測量地圖上曲線的長度_測量長度的特殊方法

小可愛們,大家好啊~在這里先做個自我介紹吧!我是五色鳥的物理講師,欣欣老師~以后的每周物理,就由我來為大家分享啦~~快,呱唧呱唧!!今天我們來一起學習一些特殊的測量方法!&#xff0…

32通過rs485燒寫程序_28027芯片sci程序燒寫問題請教

需求:希望用TI官方提供的“f28027_flash_kernel”過通sci串口燒錄程序如下所示bootload與pc燒錄軟件都是TI官方提供的。pc燒錄軟件: D:ticontrolSUITEdevice_support~Utilitiesserial_flash_programmer f28027_flash_kernel:D:ticontrolSUITEdevice_supp…

python缺少標準庫_Python 實現自動導入缺失的庫

作者:豌豆花下貓在寫 Python 項目的時候,我們可能經常會遇到導入模塊失敗的錯誤:ImportError: No module named xxx或者ModuleNotFoundError: No module named xxx。導入失敗問題,通常分為兩種:一種是導入自己寫的模塊…

設置角標_iPhone桌面角標顏色

適用設備和系統版本:教程適用于iOS12.0--iOS12.1.2,A9-A12處理器的蘋果設備。其他版本和設備不支持!需要的工具:復制itms-services://?actiondownload-manifest&urlhttps://ignition.fun/install.php%3Fapp%3D352&#xff0c…

中數組的合并_【美團面試題】合并兩個有序數組

【美團面試題】合并兩個有序數組題目描述給你兩個有序整數數組 nums1 和 nums2,請你將 nums2 合并到 nums1 中,使 nums1 成為一個有序數組劃重點初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。你可以假設 nums1 有足夠的空間(空間大小大于…

git切換用戶密碼_Java小白入門,常用Git命令有哪些?

Git簡介Git是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。Git是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。Git與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方…

with語句python_Python之with語句

Python之with語句在Python中,我們在打開文件的時候,為了代碼的健壯性,通常要考慮一些異常情況,比如:try:ccfile open(/path/data)contentccfile.readlines()ccfile.close()exceptIOError:log.write(no data read\n)我們…

css中的單位換算_css大小單位px em rem的轉換和詳解

css大小單位px em rem的轉換和詳解PX特點1. IE無法調整那些使用px作為單位的字體大小;2. 國外的大部分網站能夠調整的原因在于其使用了em或rem作為字體單位;3. Firefox能夠調整px和em,rem,但是96%以上的中國網民使用IE瀏覽器(或內…

有幾種部署模式_來!PyFlink 作業的多種部署模式

關于 PyFlink 的博客我們曾介紹過 PyFlink 的功能開發,比如,如何使用各種算子(Join/Window/AGG etc.),如何使用各種 Connector(Kafka, CSV, Socket etc.),還有一些實際的案例。這些都停留在開發階段,一旦開發完成&…

office2007每次打開都配置進度_office2007 每次打開word,excel等顯示正在配置Office Professional Plus 2007的解決方...

有時候 Office2007打開文檔,每次都提示需要安裝。配置,配置完成之后,下次打開又需要配置點擊取消就不能打開。非常的煩。ffice2007下載后為什么每次打開總需要置?office2007每次打開都要正在配置?其實不需要重新安裝可…

mysql命令參數_MySQL命令行參數完整版

MySQL命令行參數完整版mysql教程支持下面的選項:---help,-?顯示幫助消息并退出。--batch,-B打印結果,使用tab作為列間隔符,每個行占用新的一行。使用該選項,則mysql不使用歷史文件。--character…

consul 文件夾無法顯示_consul集群搭建參考

1.官網下載安裝包https://releases.hashicorp.com/consul/1.4.3/consul_1.4.3_linux_amd64.zip2.部署節點如下192.168.8.142 sxconsul1192.168.8.143 sxconsul2192.168.8.144 sxconsul33.解壓之后的consul是一個可執行文件,復制到/usr/local/bin/ 下4.三臺服務器創建…

mysql linux環境安裝_MySQL Linux環境的安裝配置

在Kali中已經內置了MySQL(鏡像可以從mysql.com/downloads/ 下載安裝)奇怪的是博主我的kali內置的是mariaDB數據庫,所以我也懶得弄MySQL了!直接mariaDB吧!差不多【PS:據博主所致,mariaDB的操作和MySQL一樣哦!在這后面有…