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

主站蜘蛛池模板: 一级毛片中文字幕| 综合色在线| 国产欧美日韩资源在线观看| 99在线视频精品| 欧美另类精品一区二区三区| 久久精品嫩草研究院| 精品视频91| 在线观看无码av免费不卡网站| 国产美女自慰在线观看| 91精品专区| 素人激情视频福利| 国产精品久线在线观看| 91黄视频在线观看| 日本一区中文字幕最新在线| 日韩欧美国产另类| 亚洲成网777777国产精品| 久久亚洲AⅤ无码精品午夜麻豆| 亚洲伦理一区二区| 国产主播在线观看| 亚洲国产欧美自拍| 国产精品无码在线看| 亚洲精品图区| 亚洲国产精品一区二区高清无码久久| 亚洲一级毛片免费看| 91麻豆国产视频| 久久香蕉国产线看观看精品蕉| 亚洲日本中文字幕天堂网| 成年人免费国产视频| 55夜色66夜色国产精品视频| 国产乱人视频免费观看| 亚洲国产av无码综合原创国产| 久久久无码人妻精品无码| 国产屁屁影院| 国产欧美精品一区aⅴ影院| 国产精品黑色丝袜的老师| 欧美色香蕉| 一区二区三区成人| 国产网友愉拍精品视频| 色妺妺在线视频喷水| 在线精品亚洲国产| 国产麻豆永久视频| 国产精品一区在线观看你懂的| 日韩在线播放中文字幕| 激情成人综合网| 激情综合网激情综合| 国产精品九九视频| 不卡的在线视频免费观看| 亚洲成a人片7777| 91精品国产一区自在线拍| 99久久精品国产麻豆婷婷| a级毛片视频免费观看| 国产三级国产精品国产普男人 | 亚洲日本一本dvd高清| 深爱婷婷激情网| 久久综合伊人 六十路| 91欧美亚洲国产五月天| 亚洲第一福利视频导航| 欧美三级日韩三级| 亚洲一区毛片| 国产免费网址| 久久久久人妻精品一区三寸蜜桃| 亚洲丝袜第一页| 99中文字幕亚洲一区二区| 欧美a级完整在线观看| a毛片免费观看| 精品国产Av电影无码久久久 | 亚洲国产精品日韩专区AV| 欧美五月婷婷| 精品国产黑色丝袜高跟鞋 | 久久久四虎成人永久免费网站| 国产拍在线| 尤物在线观看乱码| 青草视频在线观看国产| 国产精品白浆无码流出在线看| 亚洲黄色成人| 国产永久免费视频m3u8| 国产杨幂丝袜av在线播放| 日韩在线2020专区| 亚洲人成高清| 亚洲国产成人综合精品2020| 亚洲第一区在线| 国产成人精品亚洲日本对白优播|