999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux系統中進程調度分析

2010-12-31 00:00:00
商場現代化 2010年12期

[摘要]Linux是一個多用戶多任務的操作系統,Linux中實現了對多個進程公平、高效的調度,并不是采用單一的調度策略,而是幾種調度策略有機地綜合應用。

[關鍵詞] 進程調度 優先級 時間片輪轉 實時進程

在任何一種操作系統中,進程調度一直是一個核心問題,進程調度策略的選擇對整個系統性能有至關重要的影響,一個好的調度算法應該考慮很多方面:公平、有效、響應時間、周轉時間、系統吞吐量等等,但這些因素之間又是相互矛盾的,最終的取舍根據系統要達到的目標而定,本文以Linux操作系統為例,分析其進程調度策略,以期對進程調度過程有更深層次的認識。

一、 Linux的進程調度

Linux支持多進程,進程控制塊PCB(Process Control Block)是系統中最為重要的數據結構之一,用來存放進程所必需的各種信息,PCB用結構task-struct來表示,包括進程的類型、進程狀態、優先級、時鐘信息等,Linux系統中,進程調度操作由schedule()函數執行,這是一個只在內核態運行的函數,函數代碼為所有進程共享。

二、 Linux進程調度時機

Linux的進程調度時機與現代操作系統中的調度時機基本一致,為了判斷是否可以執行內核的進程調度程序來調度進程,Linux中設置了進程調度標志need-resched,當標志為1時,可執行調度程序.通常,Linux調度時機分以下兩種情況:(1)主動調度:指顯式調用schedule()函數明確釋放CPU,引起新一輪調度.一般發生在當前進程狀態改變,如:進程終止、進程睡眠、進程對某些信號處理過程中等,(2)被動調度:指不顯示調用schedule()函數,只是PCB中的need-resched進程調度標志,該域置位為1將引起新的進程調度,而每當中斷處理和系統調用返回時,核心調度程序都會主動查詢need-resched的狀態(若置位,則主動調用schedule()函數),一般發生在新的進程產生時、某個進程優先級改變時、某個進程等待的資源可用被喚醒時、當前進程時間片用完等。

三、Linux進程調度策略

一般來說,不同用途的操作系統的調度策略是不同的,Linux進程調度是將優先級調度、時間片輪轉法調度、先進先出調度綜合起來應用,Linux系統中,不同類型的進程調度策略也不一樣。

1. 與進程調度相關的數據結構

每個進程都是一個動態的個體,其生命周期依次定義的數據結構為:TASK-RUNNING,TASK-INTERRUPTIBLE,TASK-UNINTERRUPTIBLE,TASK-ZOMBIE和TASK-STOPPED,一個進程在其生存期間,狀態會發生多次變化,與其數據結構相對應的即是Linux進程的狀態,分別是:運行態、等待態、暫停態和僵死態。

2. 進程狀態及其轉換過程的描述

進程創建時的狀態為不可打斷睡眠,在do-fork()結束前被父進程喚醒后,變為執行狀態,處于執行狀態的進程被移到run-queue就緒任務隊列中等待調度,適當時候由schedule()按調度算法選中,獲得CPU,若采用輪轉法,即時,由時鐘中斷觸發timer-interrupt(),其內部調用schedule(),引起新一輪調度,當前進程的狀態仍處于執行狀態,因而把當前進程掛到ruil-queue隊尾。

獲得CPU且正在運行的進程若申請不到某資源,則調用sleep-on()或interruptible-sleep-on()睡眠,其task-struct進程控制塊掛到相應資源的wait-queue等待隊列,如果調用sleep-on(),則其狀態變為不可打斷睡眠,如果調用interruptible-sleep-on(),則其狀態變為可打斷睡眠,Sleep-on()或interruptible-sleep-on()將調用schedule()函數把睡眠進程釋放.

3.進程分類和相應的進程調度策略

Linux系統中,為了高效地調度進程,將進程分成兩類:實時進程和普通進程(又稱非實時進程或一般進程),實時進程的優先級要高于其他進程,如果一個實時進程處于可執行狀態,它將先得到執行,實時進程又有兩種策略:時間片輪轉和先進先出,在時間片輪轉策略中,每個可執行實時進程輪流執行一個時間片,而先進先出策略每個進程按各自在運行隊列中的順序執行且順序不能變化。

在Linux中,進程調度策略共定義了3種:

Linux系統中的每個進程用task-struct結構來描述,進程調度的依據是task-struct結構中的policy、priority、counter和rt-priority,PCB中設置Policy數據項,其值用于反映針對不同類型的進程而采用的調度策略。SCHED- RR和SCHED-FIFO用于實時進程,分別表示輪轉調度策略和先進先出調度策略;SCHED-OTHER表示普通進程,也按照輪轉調度策略處理。這三類調度策略均基于優先級.PCB中設置Priority數據項,其值為普通進程的調度優先級.普通進程的可用時間片的初始值即為該值,該值通過系統調用是可以改變的。

PCB中設置rt-priority數據項,其值是實時進程專用的調度優先級,實時進程的可用時間片的初始值即為該值,該優先級也可以用系統調用來修改,PCB中設置counter數據項,用于進程可用時間片時值的計數,初始值為rt-priority或Priority,進程啟動后該值隨時鐘周期遞減。

通過對Linux進程調度策略的簡單分析,可以看出多進程的管理是一種非常復雜的并發程序設計,每個進程的狀態不僅由其自身決定,而且還要受諸多外在因素的影響,而在此基礎上的進程調度,為了保證操作系統的穩定性、提高效率和增加靈活性,還必須采用很多方法,這些都是值得我們去研究和探討的。

參考文獻:

[1]劉振鵬李亞平王煜:操作系統[M].北京:中國鐵道出版社,2003

[2]趙明富李太福陳鴻雁:Linux嵌入式系統的實時性分析[J].電腦知識與技術,2003,29(18):53—55

主站蜘蛛池模板: 国产女人综合久久精品视| 亚洲性日韩精品一区二区| 日韩国产精品无码一区二区三区| 免费国产一级 片内射老| 亚洲成aⅴ人片在线影院八| 一级全免费视频播放| 99久久成人国产精品免费| 就去吻亚洲精品国产欧美| 国产a在视频线精品视频下载| 9丨情侣偷在线精品国产| 国产在线观看91精品| 91探花国产综合在线精品| 91 九色视频丝袜| 欧美性天天| AV色爱天堂网| 她的性爱视频| 热久久国产| 久夜色精品国产噜噜| 亚洲精品国产成人7777| 欧美国产日韩在线播放| 久久网欧美| 午夜福利在线观看成人| 日韩123欧美字幕| 乱人伦中文视频在线观看免费| 国产91成人| av大片在线无码免费| 欧美一级高清片欧美国产欧美| 亚洲成a人片| 高清欧美性猛交XXXX黑人猛交 | 日韩国产亚洲一区二区在线观看| 色男人的天堂久久综合| 99视频在线看| 国产激爽大片在线播放| 亚洲无码高清一区二区| 久久特级毛片| 国产日产欧美精品| 亚洲中文字幕日产无码2021| 欧美综合中文字幕久久| 国产人成在线视频| 网久久综合| 狠狠操夜夜爽| 国产美女精品人人做人人爽| 国产亚洲欧美在线专区| 99re免费视频| 三上悠亚精品二区在线观看| 国产无码高清视频不卡| 亚洲无码电影| 久久综合色播五月男人的天堂| 国产第四页| 国产成人亚洲毛片| 欧美精品在线视频观看| 久久 午夜福利 张柏芝| 国产一区二区三区夜色| 一区二区三区成人| 99伊人精品| 91福利在线观看视频| 日本久久久久久免费网络| 91色爱欧美精品www| 国产综合亚洲欧洲区精品无码| 久久综合伊人77777| 欧美成人影院亚洲综合图| 一本综合久久| 97视频免费看| 亚洲天堂视频在线观看| 国产91精品最新在线播放| 欧美日韩另类在线| 999国内精品视频免费| 人妻丰满熟妇αv无码| 久久综合一个色综合网| 亚州AV秘 一区二区三区| 亚洲视频a| 国产黑丝视频在线观看| 三级国产在线观看| 狠狠色丁香婷婷| 欧美精品三级在线| 国产成人免费手机在线观看视频| 天天摸天天操免费播放小视频| 欧美午夜视频| 欧美日韩在线第一页| 97无码免费人妻超级碰碰碰| 欧美成人精品一级在线观看| 91久久天天躁狠狠躁夜夜|