linux中时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
圖?1?RT-Linux結(jié)構(gòu)
RT?-Linux的關(guān)鍵技術(shù)是通過軟件來模擬硬件的中斷控制器。當(dāng)Linux系統(tǒng)要封鎖CPU的中斷時(shí)時(shí),RT-Linux中的實(shí)時(shí)子系統(tǒng)會(huì)截取到這個(gè)請(qǐng)求,把它記錄下來,而實(shí)際上并不真正封鎖硬件中斷,這樣就避免了由于封中斷所造成的系統(tǒng)在一段時(shí)間沒有響應(yīng)的情況,從而提高了實(shí)時(shí)性。當(dāng)有硬件中斷到來時(shí),?RT-Linux截取該中斷,并判斷是否有實(shí)時(shí)子系統(tǒng)中的中斷例程來處理還是傳遞給普通的Linux內(nèi)核進(jìn)行處理。另外,普通Linux系統(tǒng)中的最小定時(shí)精度由系統(tǒng)中的實(shí)時(shí)時(shí)鐘的頻率決定,一般Linux系統(tǒng)將該時(shí)鐘設(shè)置為每秒來100個(gè)時(shí)鐘中斷,所以Linux系統(tǒng)中一般的定時(shí)精度為?10ms,即時(shí)鐘周期是10ms,而RT-Linux通過將系統(tǒng)的實(shí)時(shí)時(shí)鐘設(shè)置為單次觸發(fā)狀態(tài),可以提供十幾個(gè)微秒級(jí)的調(diào)度粒度。
RT-Linux實(shí)時(shí)子系統(tǒng)中的任務(wù)調(diào)度可以采用RM、EDF等優(yōu)先級(jí)驅(qū)動(dòng)的算法,也可以采用其他調(diào)度算法。
RT?-Linux對(duì)于那些在重負(fù)荷下工作的專有系統(tǒng)來說,確實(shí)是一個(gè)不錯(cuò)的選擇,但他僅僅提供了對(duì)于CPU資源的調(diào)度;并且實(shí)時(shí)系統(tǒng)和普通Linux系統(tǒng)關(guān)系不是十分密切,這樣的話,開發(fā)人員不能充分利用Linux系統(tǒng)中已經(jīng)實(shí)現(xiàn)的功能,如協(xié)議棧等。所以RT-Linux適合與工業(yè)控制等實(shí)時(shí)任務(wù)功能簡單,并且有硬實(shí)時(shí)要求的環(huán)境中,但如果要應(yīng)用與多媒體處理中還需要做大量的工作。
意大利的RTAI(?Real-Time?Application?Interface?)源于RT-Linux,它在設(shè)計(jì)思想上和RT-Linux完全相同。它當(dāng)初設(shè)計(jì)目的是為了解決RT-Linux難于在不同Linux版本之間難于移植的問題,為此,RTAI在?Linux?上定義了一個(gè)實(shí)時(shí)硬件抽象層,實(shí)時(shí)任務(wù)通過這個(gè)抽象層提供的接口和Linux系統(tǒng)進(jìn)行交互,這樣在給Linux內(nèi)核中增加實(shí)時(shí)支持時(shí)可以盡可能少地修改?Linux的內(nèi)核源代碼。
3.2.?Kurt-Linux
Kurt?-Linux由Kansas大學(xué)開發(fā),它可以提供微秒級(jí)的實(shí)時(shí)精度[KurtWeb]?[Srinivasan]。不同于RT-Linux單獨(dú)實(shí)現(xiàn)一個(gè)實(shí)時(shí)內(nèi)核的做法,Kurt?-Linux是在通用Linux系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的,它也是第一個(gè)可以使用普通Linux系統(tǒng)調(diào)用的基于Linux的實(shí)時(shí)系統(tǒng)。
Kurt-Linux將系統(tǒng)分為三種狀態(tài):正常態(tài)、實(shí)時(shí)態(tài)和混合態(tài),在正常態(tài)時(shí)它采用普通的Linux的調(diào)度策略,在實(shí)時(shí)態(tài)只運(yùn)行實(shí)時(shí)任務(wù),在混合態(tài)實(shí)時(shí)和非實(shí)時(shí)任務(wù)都可以執(zhí)行;實(shí)時(shí)態(tài)可以用于對(duì)于實(shí)時(shí)性要求比較嚴(yán)格的情況。
為了提高Linux系統(tǒng)的實(shí)時(shí)特性,必須提高系統(tǒng)所支持的時(shí)鐘精度。但如果僅僅簡單地提高時(shí)鐘頻率,會(huì)引起調(diào)度負(fù)載的增加,從而嚴(yán)重降低系統(tǒng)的性能。為了解決這個(gè)矛盾,?Kurt-Linux采用UTIME所使用的提高Linux系統(tǒng)中的時(shí)鐘精度的方法[UTIMEWeb]:它將時(shí)鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(One?shot?mode),即每次給時(shí)鐘芯片設(shè)置一個(gè)超時(shí)時(shí)間,然后到該超時(shí)事件發(fā)生時(shí)在時(shí)鐘中斷處理程序中再次根據(jù)需要給時(shí)鐘芯片設(shè)置一個(gè)超時(shí)時(shí)間。它的基本思想是一個(gè)精確的定時(shí)意味著我們需要時(shí)鐘中斷在我們需要的一個(gè)比較精確的時(shí)間發(fā)生,但并非一定需要系統(tǒng)時(shí)鐘頻率達(dá)到此精度。它利用CPU的時(shí)鐘計(jì)數(shù)器TSC?(Time?Stamp?Counter)來提供精度可達(dá)CPU主頻的時(shí)間精度。
對(duì)于實(shí)時(shí)任務(wù)的調(diào)度,Kurt-Linux采用基于時(shí)間(TD)的靜態(tài)的實(shí)時(shí)CPU調(diào)度算法。實(shí)時(shí)任務(wù)在設(shè)計(jì)階段就需要明確地說明它們實(shí)時(shí)事件要發(fā)生的時(shí)間。這種調(diào)度算法對(duì)于那些循環(huán)執(zhí)行的任務(wù)能夠取得較好的調(diào)度效果。
Kurt?-Linux相對(duì)于RT-Linux的一個(gè)優(yōu)點(diǎn)就是可以使用Linux系統(tǒng)自身的系統(tǒng)調(diào)用,它本來被設(shè)計(jì)用于提供對(duì)硬實(shí)時(shí)的支持,但由于它在實(shí)現(xiàn)上只是簡單的將Linux調(diào)度器用一個(gè)簡單的時(shí)間驅(qū)動(dòng)的調(diào)度器所取代,所以它的實(shí)時(shí)進(jìn)程的調(diào)度很容易受到其它非實(shí)時(shí)任務(wù)的影響,從而在有的情況下會(huì)發(fā)生實(shí)時(shí)任務(wù)的截止期限不能滿足的情況,所以也被稱作嚴(yán)格實(shí)時(shí)系統(tǒng)(Firm?Real-time)。目前基于Kurt-Linux的應(yīng)用有:ARTS(ATM?Reference?Traffic?System)、多媒體播放軟件等。另外Kurt-Linux所采用的這種方法需要頻繁地對(duì)時(shí)鐘芯片進(jìn)行編程設(shè)置。
3.3.?RED-Linux
RED?-Linux是加州大學(xué)Irvine分校開發(fā)的實(shí)時(shí)Linux系統(tǒng)[REDWeb][?Wang99],它將對(duì)實(shí)時(shí)調(diào)度的支持和Linux很好地實(shí)現(xiàn)在同一個(gè)操作系統(tǒng)內(nèi)核中。它同時(shí)支持三種類型的調(diào)度算法,即:Time-Driven、?Priority-Dirven、Share-Driven。
為了提高系統(tǒng)的調(diào)度粒度,RED-Linux從RT-Linux那兒借鑒了軟件模擬中斷管理器的機(jī)制,并且提高了時(shí)鐘中斷頻率。當(dāng)有硬件中斷到來時(shí),RED-Linux的中斷模擬程序僅僅是簡單地將到來的中斷放到一個(gè)隊(duì)列中進(jìn)行排隊(duì),并不執(zhí)行真正的中斷處理程序。
另外為了解決Linux進(jìn)程在內(nèi)核態(tài)不能被搶占的問題,?RED-Linux在Linux內(nèi)核的很多函數(shù)中插入了搶占點(diǎn)原語,使得進(jìn)程在內(nèi)核態(tài)時(shí),也可以在一定程度上被搶占。通過這種方法提高了內(nèi)核的實(shí)時(shí)特性。
RED-Linux的設(shè)計(jì)目標(biāo)就是提供一個(gè)可以支持各種調(diào)度算法的通用的調(diào)度框架,該系統(tǒng)給每個(gè)任務(wù)增加了如下幾項(xiàng)屬性,并將它們作為進(jìn)程調(diào)度的依據(jù):
Priority:作業(yè)的優(yōu)先級(jí);
Start-Time:作業(yè)的開始時(shí)間;
Finish-Time:作業(yè)的結(jié)束時(shí)間;
Budget:作業(yè)在運(yùn)行期間所要使用的資源的多少;
通過調(diào)整這些屬性的取值及調(diào)度程序按照什么樣的優(yōu)先順序來使用這些屬性值,幾乎可以實(shí)現(xiàn)所有的調(diào)度算法。這樣的話,可以將三種不同的調(diào)度算法無縫、統(tǒng)一地結(jié)合到了一起�
總結(jié)
以上是生活随笔為你收集整理的linux中时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可消费消息数量_战疫情!CKafka助力
- 下一篇: pycham窗口显示多个编辑页面