linux進程cpu時間片,能講一下在Linux系統中時間片是怎么分配的還有優先級的具體算法是...

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

圖?1?RT-Linux結構

RT?-Linux的關鍵技術是通過軟件來模擬硬件的中斷控制器。當Linux系統要封鎖CPU的中斷時時,RT-Linux中的實時子系統會截取到這個請求,把它記錄下來,而實際上并不真正封鎖硬件中斷,這樣就避免了由于封中斷所造成的系統在一段時間沒有響應的情況,從而提高了實時性。當有硬件中斷到來時,?RT-Linux截取該中斷,并判斷是否有實時子系統中的中斷例程來處理還是傳遞給普通的Linux內核進行處理。另外,普通Linux系統中的最小定時精度由系統中的實時時鐘的頻率決定,一般Linux系統將該時鐘設置為每秒來100個時鐘中斷,所以Linux系統中一般的定時精度為?10ms,即時鐘周期是10ms,而RT-Linux通過將系統的實時時鐘設置為單次觸發狀態,可以提供十幾個微秒級的調度粒度。

RT-Linux實時子系統中的任務調度可以采用RM、EDF等優先級驅動的算法,也可以采用其他調度算法。

RT?-Linux對于那些在重負荷下工作的專有系統來說,確實是一個不錯的選擇,但他僅僅提供了對于CPU資源的調度;并且實時系統和普通Linux系統關系不是十分密切,這樣的話,開發人員不能充分利用Linux系統中已經實現的功能,如協議棧等。所以RT-Linux適合與工業控制等實時任務功能簡單,并且有硬實時要求的環境中,但如果要應用與多媒體處理中還需要做大量的工作。

意大利的RTAI(?Real-Time?Application?Interface?)源于RT-Linux,它在設計思想上和RT-Linux完全相同。它當初設計目的是為了解決RT-Linux難于在不同Linux版本之間難于移植的問題,為此,RTAI在?Linux?上定義了一個實時硬件抽象層,實時任務通過這個抽象層提供的接口和Linux系統進行交互,這樣在給Linux內核中增加實時支持時可以盡可能少地修改?Linux的內核源代碼。

3.2.?Kurt-Linux

Kurt?-Linux由Kansas大學開發,它可以提供微秒級的實時精度[KurtWeb]?[Srinivasan]。不同于RT-Linux單獨實現一個實時內核的做法,Kurt?-Linux是在通用Linux系統的基礎上實現的,它也是第一個可以使用普通Linux系統調用的基于Linux的實時系統。

Kurt-Linux將系統分為三種狀態:正常態、實時態和混合態,在正常態時它采用普通的Linux的調度策略,在實時態只運行實時任務,在混合態實時和非實時任務都可以執行;實時態可以用于對于實時性要求比較嚴格的情況。

為了提高Linux系統的實時特性,必須提高系統所支持的時鐘精度。但如果僅僅簡單地提高時鐘頻率,會引起調度負載的增加,從而嚴重降低系統的性能。為了解決這個矛盾,?Kurt-Linux采用UTIME所使用的提高Linux系統中的時鐘精度的方法[UTIMEWeb]:它將時鐘芯片設置為單次觸發狀態(One?shot?mode),即每次給時鐘芯片設置一個超時時間,然后到該超時事件發生時在時鐘中斷處理程序中再次根據需要給時鐘芯片設置一個超時時間。它的基本思想是一個精確的定時意味著我們需要時鐘中斷在我們需要的一個比較精確的時間發生,但并非一定需要系統時鐘頻率達到此精度。它利用CPU的時鐘計數器TSC?(Time?Stamp?Counter)來提供精度可達CPU主頻的時間精度。

對于實時任務的調度,Kurt-Linux采用基于時間(TD)的靜態的實時CPU調度算法。實時任務在設計階段就需要明確地說明它們實時事件要發生的時間。這種調度算法對于那些循環執行的任務能夠取得較好的調度效果。

Kurt?-Linux相對于RT-Linux的一個優點就是可以使用Linux系統自身的系統調用,它本來被設計用于提供對硬實時的支持,但由于它在實現上只是簡單的將Linux調度器用一個簡單的時間驅動的調度器所取代,所以它的實時進程的調度很容易受到其它非實時任務的影響,從而在有的情況下會發生實時任務的截止期限不能滿足的情況,所以也被稱作嚴格實時系統(Firm?Real-time)。目前基于Kurt-Linux的應用有:ARTS(ATM?Reference?Traffic?System)、多媒體播放軟件等。另外Kurt-Linux所采用的這種方法需要頻繁地對時鐘芯片進行編程設置。

3.3.?RED-Linux

RED?-Linux是加州大學Irvine分校開發的實時Linux系統[REDWeb][?Wang99],它將對實時調度的支持和Linux很好地實現在同一個操作系統內核中。它同時支持三種類型的調度算法,即:Time-Driven、?Priority-Dirven、Share-Driven。

為了提高系統的調度粒度,RED-Linux從RT-Linux那兒借鑒了軟件模擬中斷管理器的機制,并且提高了時鐘中斷頻率。當有硬件中斷到來時,RED-Linux的中斷模擬程序僅僅是簡單地將到來的中斷放到一個隊列中進行排隊,并不執行真正的中斷處理程序。

另外為了解決Linux進程在內核態不能被搶占的問題,?RED-Linux在Linux內核的很多函數中插入了搶占點原語,使得進程在內核態時,也可以在一定程度上被搶占。通過這種方法提高了內核的實時特性。

RED-Linux的設計目標就是提供一個可以支持各種調度算法的通用的調度框架,該系統給每個任務增加了如下幾項屬性,并將它們作為進程調度的依據:

Priority:作業的優先級;

Start-Time:作業的開始時間;

Finish-Time:作業的結束時間;

Budget:作業在運行期間所要使用的資源的多少;

通過調整這些屬性的取值及調度程序按照什么樣的優先順序來使用這些屬性值,幾乎可以實現所有的調度算法。這樣的話,可以將三種不同的調度算法無縫、統一地結合到了一起�

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

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

相關文章

linux中進行遠程服務器連機可以采用telnet,端口號為,使用telnet測試指定端口的連通性...

原標題:使用telnet測試指定端口的連通性telnet 是一個閹割版的 ssh ,它數據不加密,數據容易被盜竊,也容易受中間人攻擊,所以默認情況下 telnet 端口是必須要被關閉的。telnet為用戶提供了在本地計算機上完成遠程主機工…

linux xd命令,看Linux文件的內容:用cat,less,more,head,tail,nl,od,xxd,gv,xdvi命令

使用命令在Linux系統中查看文件的內容是Linux管理員的基本技能之一,在Linux中,有許多應用程序以不同的方式顯示文件內容。您可以使用cat、less、more、head、tail、nl、od、xxd、gv、xdvi命令來查看文本文件或任何其他文件。為了對此進行測試&#xff0c…

linux遠程拷貝免手動輸入密碼,scp遠程拷貝避免輸入密碼

使用scp遠程拷貝文件到指定服務器上,在客戶端生成密鑰放在需要驗證的服務器上,這樣再次連接后直接登陸,避免輸入密碼。設定場景我們需要將tomcat服務器(client1)192.168.30.20 上的catalina.out日志文件,每天使用指定用戶拷貝到日…

玩轉linux文件描述符和重定向,玩轉Linux文件描述符和重定向

本文介紹linux中文件描述符與重定向的相關知識,文件描述符是與文件輸入、輸出相關聯的整數,它們用來跟蹤已打開的文件。有需要的朋友參考下。原文出處:linux下的文件描述符是與文件輸入、輸出相關聯的整數。它們用來跟蹤已打開的文件。最常見…

linux哪個指令可以設定使用者的密碼,linux期末考試練習題 2

一、單項選擇題1、下面不是對Linux操作系統特點描述的是()A、良好的可移植性B、單用戶C、多用戶D、設備獨立性2、查看創建目錄命令mkdir的幫助文檔可以使用()A、mkdir -hB、man mkdirC、help mkdirD、info mkdir3、用標準的輸出重定向(>)像”>file01”能使文件file01的數…

linux腳本格式模板,Linux Shell 常見的命令行格式簡明總結

#在后臺執行 cmd 指令cmd &#命令序列. 在同一行執行多個命令cmd1 ; cmd2#在當前 shell 中以一組的形式執行多個命令{ cmd1 ; cmd2 ; }#在子 shell 中以一組的形式執行多個命令(cmd1 ; cmd2)#管道. 以 cmd1 的執行輸出作為 cmd2 的輸入cmd1 | cmd2#命令替換. 以 cmd2 的執行…

linux怎么用命令打開wine,Linux系統運維:10分鐘教你如何使用Wine在Linux下玩魔獸世界...

本文主要向大家介紹了Linux系統運維的如何使用Wine在Linux下玩魔獸世界,通過具體的步驟向大家展現,希望對大家學習Linux系統運維有所幫助。目標:在 Linux 中運行魔獸世界發行版:適用于幾乎所有的 Linux 發行版。要求:具…

linux中如何查看某個端口是否被占用,LINUX中如何查看某個端口是否被占用

之前查詢端口是否被占用一直搞不明白,問了好多人,終于搞懂了,現在總結下:1.netstat -anp |grep 端口號如下,我以3306為例,netstat -anp |grep 3306(此處備注下,我是以普通用戶操作&#…

linux實現自己的write函數,Linux 內核源碼閱讀 - write 系統調用的實現

最近在看write系統調用的實現,雖然還有一下細節不是很清楚,但是大致的實現機理還是有一定的理解了。總結如下:這里假設最普通的情況,不考慮Direct IO 的情況。從全家的高度看,要往一個文件中寫入內容,需要一…

linux7.0使用教程,CentOS7.0使用手冊精編.pdf

CentOS7.0 手冊第一部分:顯卡驅動安裝篇 (針對單顯卡而言)或許CentOS7.0 版本是遇到的裝顯卡驅動最煩的一個,相比Ubuntu 、CentOS7.0 之前版本(如:CentOS6.5、CentOS6.4 )而言,操作步驟如下:由于筆者我的顯卡是華碩圣騎…

linux中s權限大小寫的區別,Linux中的權限

1.文件與目錄權限1)UID與GIDUIDUID是一個數值,是Linux系統中唯一的用戶標識,用于區別不同的用戶。在系統內部管理進程和文件保護時使用UID字段。在Linux系統中,注冊名和UID都可以用于標識用戶,只不過對于系統來說UID更為重要&…

linux中shell自動對齊代碼,linux – Shell編程 – 如何printf像表一樣對齊我的輸出?...

如何printf像表格一樣對齊我的輸出?Title AuthorBaokyBook Baoky2Use basename commandUse basename command .. Baoky我的部分代碼是這樣的titlelength${#title};首先我獲得標題長度,然后我就像這樣打印titlespaceexpr 60 - titlelength;printf "%s %${titles…

linux的安裝組和管理組的區別嗎,Linux用戶和組管理

Linux用戶和組管理安裝上下文:進程以其發起者的身份運行;進程對文件的訪問權限,取決于發起此進程的用戶的權限;系統用戶:為了能夠讓那后臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用…

在linux下vcd光盤提取,linux下抓取Vcd的視頻文件[Linux安全]

贊助商鏈接本文“linux下抓取Vcd的視頻文件[Linux安全]”是由七道奇為您精心收集,來源于網絡轉載,文章版權歸文章作者所有,本站不對其觀點以及內容做任何評價,請讀者自行判斷,以下是其具體內容:LP的瑜伽碟需…

Linux清mysql磁盤,mysql與linux ~ 磁盤分析與調優

一 簡介 談談磁盤IO的問題二 目的:如何進行IO性能問題的排查二 linux角度一 機械硬盤基本定義尋道時間,表示磁頭在不同磁道之間移動的時間(最耗時)。旋轉延遲,表示在磁道找到時,中軸帶動盤面旋轉到合適的扇區開頭處。傳輸時間,表…

arm與linux的些許問題,《ARM與Linux些許問題》第一章:ARM工作模式

早期的ARM核有狀態(ARM或Thumb)切換(通過BX等指令修改CPSR寄存器(當前程序狀態寄存器,存放條件碼標志,中斷禁止位,當前處理器模式以及其他狀態和控制信息)中T的控制位完成程序狀態的切換),現在ARM都只使用Thumb狀態了。所以&#…

c語言給定一個字符串匹配,使用C語言解決字符串匹配問題的方法

最常想到的方法是使用KMP字符串匹配算法&#xff1a;#include #include #include int get_nextval(char *pattern,int next[]){//get the next value of the patternint i 0,j -1;next[0] -1;int patlen strlen(pattern);while ( i < patlen - 1){if ( j -1 || pattern…

c語言比較大小 誰大選誰,C語言比較優先級

滿意答案wanggq2222018.03.14采納率&#xff1a;42% 等級&#xff1a;7已幫助&#xff1a;57人#pragma once#include#include#include #includeusing namespace std;typedef struct SymKeyVal{string key;int val;};static SymKeyVal KeyValTable[]{{"",0},{"…

c語言ip地址嗎,C語言:判斷IP地址是否合法

int is_valid_ip(const char *ip){int section 0; //每一節的十進制值int dot 0; //幾個點分隔符int last -1; //每一節中上一個字符while(*ip){if(*ip .){dot;if(dot > 3){return 0;}if(section > 0 && section <255){section 0;}else{retur…

10100的素數c語言程序,C語言基礎題目及代碼.doc

/*讀入一個自然數n&#xff0c;計算其各位數字之和&#xff0c;用漢語拼音寫出和的每一位數字。輸入格式&#xff1a;每個測試輸入包含1個測試用例&#xff0c;即給出自然數n的值。這里保證n小于10100。輸出格式&#xff1a;在一行內輸出n的各位數字之和的每一位&#xff0c;拼…