1 前言
    實時系統可以定義為"一個能夠在事先指定或確定的時間內完成系統功能和對外部或內部、同步或異步事件作出響應的系統"。實時操作系統 (Realtime OS)是實時系統中使用的操作系統。實時操作系統的任務不只是要求完成每一個工作,并且要按照給定的時限按時完成每一個工作,所以實時操作系統必須能夠確保其任務對時">

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

Linux操作系統實時性分析及改進策略

1 前言
實時系統可以定義為"一個能夠在事先指定或確定的時間內完成系統功能和對外部或內部、同步或異步事件作出響應的系統"。實時操作系統 (Realtime OS)是實時系統中使用的操作系統。實時操作系統的任務不只是要求完成每一個工作,并且要按照給定的時限按時完成每一個工作,所以實時操作系統必須能夠確保其任務對時間的要求。
實時有硬實時和軟實時之分。硬實時和軟實時的區別就在于對外界的事件做出反應的時間。硬實時系統必須是及時對事件做出反應,絕對不能錯過事件處理的deadline情況。在硬實時系統中如果出現了這樣的情況就意味著巨大的損失和災難。比如說核電站中的堆芯溫度控制系統,如果沒有對堆芯過熱做出及時的處理,后果不堪想象。軟實時系統是指,如果在系統負荷較重的時候,允許發生錯過deadline的情況而且不會造成太大的危害。比如說程控電話系統允許在105個電話中有一個接不通。
現有的Linux是一個通用的操作系統,它是按照分時系統的目標設計的,進程調度強調平衡各進程之間的響應時間來保證公平的CPU時間占用。雖然采用了許多技術來加快系統運行和反應速度,但它本質上不是一個實時操作系統。為了保證其實時性,必須采用一定的策略加以改進。


2 影響Linux實時性能的主要因素
在Linux系統中,響應中斷的過程如下:設備產生一個中斷、中斷處理函數開始執行、喚醒任務并在運行隊列排隊、任務獲取CPU并開始執行、任務執行完畢。圖1為事件處理過程各個階段圖以及影響響應時間的因素(每個階段下面的字母A~J表示這個階段中影響響應時間的因素):
由圖中可以分析出導致Linux系統不能滿足實時系統短的響應時間和確定的執行行為的要求的主要因素有以下方面:
(1)Linux操作系統存在關中斷的機制。導致的結果是:如果低優先級的進程由于進入臨界區或者為了盡快完成任務而關閉了中斷,那么即使有高優先級實時進程的中斷發生系統也無法響應。這種情況在實時系統中是不允許發生的。
(2)Linux操作系統內核是禁止搶占的。一個進程一旦進入內核,它將運行直到系統調用結束或進程被阻塞。這時候一個高優先級的實時進程只能等待。這樣的設計是為了簡化任務調度,但對實時進程來說這樣的時間等待是不允許的。
(3)Linux使用的是基于優先級的任務調度策略。這種調度策略不能保證實時任務按時完成。Linux雖然給實時進程提供了較高的優先級,但是,并沒有加入時間限制。例如完成的最后期限、應在多長時間內完成、執行周期等等。例如,Linux的基于時間片的調度策略可能使得一個實時進程在一個時間片內未完成,其優先級將降低,從而可能造成到截止時間實時任務無法完成。
(4)其他方面
Linux利用交換空間讓進程運行在一個比實際內存大的虛擬內存空間中。當進程訪問的虛擬內存的內容在交換空間里時,Linux就要把在交換空間里的頁面交換到實際的內存中,而這段時間是不可預測的,這造成了實時響應時間的不確定性;
在Linux中,高優先級的進程不能搶占低優先級進程的資源。即如果高優先級的進程要使用低優先級進程正在使用的資源時,它必須等待低優先級的進程釋放資源,這樣容易產生優先級倒置;
另外,Linux的周期模式定時器頻率僅為100Hz,遠不能滿足多種實時應用的要求。
Linux之所以有以上問題,是因為它最主要的設計原則是最大限度的利用各種資源,力求最公平的調度各個進程,以獲得最大的整體性能,這也正是通用操作系統的設計原則。
3 Linux關中斷機制
Linux內核可以看成是一個不斷對請求進行響應的服務器,這些請求可能來自正在cpu上執行的進程,也可能來自正在執行中斷請求的外部設備。因此,內核的各個部分并不是嚴格按照順序依次執行的,而是采用交錯執行的方式。內核控制路徑是指內核用來處理系統調用、異常或中斷所執行的指令序列。在交錯執行內核控制路徑時,要避免可能帶來的數據混亂的危險,因此引入了臨界區的概念。臨界區是指一段代碼,在其他的內核控制路徑能夠進入臨界區前,進入臨界區的每一內核控制路徑都必須全部執行完這段代碼。
另外,在Linux操作系統中,大部分外部中斷都是開啟的,中斷處理一般由設備驅動程序來完成。由于通用操作系統中的用戶進程一般都沒有實時性要求,而中斷處理程序直接跟硬件設備交互,可能有實時性要求,因此中斷處理程序的優先級被設定為高于任何用戶進程。 但對于實時操作系統采用上述的中斷處理機制是不合適的。外部中斷是環境向實時操作系統進行的輸入,它的頻度是與環境變化的速率相關的,而與實時操作系統無關。如果外部中斷產生的頻度不可預測,則一個實時任務在運行時被中斷處理程序阻塞的時間開銷也是不可預測的,從而使任務的實時性得不到保證。因此,Linux內核的進程經常關閉中斷以盡快完成自己的任務。但同時也引入了問題:如果低優先級的進程關閉了中斷,那么即使有高優先級實時進程的中斷發生系統也無法響應。這種情況在實時系統中也是不允許發生的。
4、RTLinux的雙內核解決方案
4.1基本思想
針對Linux的關中斷機制,RTLinux提出了采用虛擬機技術模擬Linux關中斷的解決方法。基本思想如下:Linux不直接與中斷控制硬件進行聯系,而是在二者之間加入了一個中斷控制硬件的仿真層,這個仿真層只提供實時服務,它使得Linux在不能禁止中斷的同時,還能對Linux內核的同步需求提供支持。一旦中斷到來,就先由該仿真層處理,在仿真層完成了所有需要進行的實時處理后,才會交給Linux進行進一步的處理。如果Linux已經進行了禁止中斷的操作,則仿真層只是將該中斷標記為處于掛起狀態。當Linux進行了允許中斷的操作后,仿真層就會將控制切換到處于掛起狀態的、具有最高優先級中斷的中斷處理程序。
4.2工作原理
將Linux操作系統內核作為一個任務執行在一個小的實時操作系統之上。事實上,Linux是這個實時操作系統的空閑的任務,它僅在沒有實時任務運行的情況下執行。Linux作為一個任務本身不能禁止中斷。解決Linux禁止中斷的問題是通過在實時內核中模擬Linux中斷例程完成的。當Linux內核執行cli()禁止中斷時,一個軟中斷標志被設置。當一個中斷發生時,實時內核將捕獲中斷并根據這個標志和中斷掩碼來決定是否將該中斷交給Linux內核處理。因此,雖然允許Linux禁止中斷,但中斷對實時內核總是可見的。如果該中斷將引起一個實時任務的執行,則實時內核保存Linux的狀態并立即開始執行實時任務。如果不是實時中斷,中斷就被掛起,之后查看Linux對該中斷的操作狀態,如果Linux沒有禁止此中斷,就將該中斷交給Linux,由Linux執行相應的中斷處理函數。如果Linux禁止中斷,則在Linux重新開啟中斷時,實時內核處理所有掛起的中斷交由Linux執行相應的中斷處理函數。
4.3具體實現
對于軟中斷,RT-Linux在初始化模塊Init_module()中首先調用結構相關函數arch_takeover() 來覆蓋原來的關中斷相關的函數,主要有:使用rtl_soft_cli替換__cli;使用rtl_soft_sti替換__sti;使用rtl_soft_save_flags替換__save_flags_ptr;使用rtl_soft_restore_flags替換__restore_flags。
處理中斷時,使用rtl_intercept()來代替do_IRQ(),用來執行與一個中斷相關的所有中斷服務例程。這里主要做的修改是將實時中斷與普通Linux中斷分開處理。
1)它首先調用函數rtl_irq_controller_get_irq(regs)判斷是否獲取到中斷,
2)如果獲取到中斷,并且是實時irq請求,就調用dispatch_rtl_handler執行實時irq對應的中斷服務例程,然后,從中斷返回。
3)如果是非實時irq請求,就掛起irq請求G_PEND(irq),設置掛起標志表明有掛起的irq請求G_SET(g_pend_since_sti)。
若Linux開啟了中斷,就解除irq掛起狀態G_UNPEND(irq),調用函數dispatch_Linux_irq執行該irq對應中斷服務程序,之后從中斷返回。
當實時進程與普通進程進行通信時使用實時FIFO技術。當insmod將rtl_FIFO.o驅動程序插入Linux內核時,該驅動程序將自己注冊為RTLinux的一部分,并成為Linux驅動程序。一旦插入Linux內核,用戶空間進程和實時任務都可使用實時FIFO,如圖2所示。


任何硬實時任務都是在RTLinux的控制下運行的,該任務一般可執行周期性任務、處理中斷并與I/O設備驅動程序通信,以采集或輸出模擬和數字信息。當實時任務需要告訴用戶進程有一個事件將發生時,它便將這一消息送給實時FIFO。每一個FIFO都是在一個方向上傳送數據:從實時任務到用戶空間,或反之。因此,雙向通信需要使用兩個FIFO。
下面說明實時FIFO的使用方法:
1)FIFO是在init_module()時調用rtf_create()創建的,在cleanup_module()中調用rtf_destroy()撤銷。
2)在創建FIFO時,可以調用rtf_create_handler()注冊該實時FIFO的處理程序。每次Linux進程讀或寫該FIFO時,rtl_FIFO驅動程序都要調用該處理程序。
3)對FIFO的寫入和讀出是通過函數rtf_put()和rtf_get()來實現的。任何讀出或寫入實時任務一側的操作都是非模塊操作,因此rtf_put()和rtf_get()都立即返回,而不管FIFO狀態是什么。
如上例數據采集,可以注冊一個FIFO。當有中斷表明數據到來時,該中斷服務例程可以調用rtf_put()將數據寫入FIFO,而Linux進程就可以使用rtf_get()從FIFO中讀出數據進行處理。
5、結束語
RTLinux的雙內核解決方案還可以結合實時內核與非實時OS內核的綜合優勢,實時進程與普通Linux進程之間使用實時FIFO傳遞信息。即可以提高實時系統的可用性,也可以節省計算資源,同時將實時系統的一部分任務劃分出來,降低了實時內核需要處理的復雜度,提高了實時的計算效率。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          **欧美大码日韩| 91亚洲精品久久久蜜桃| 日韩一区二区三区在线观看 | 成人免费看黄yyy456| 偷偷要91色婷婷| 亚洲久本草在线中文字幕| 亚洲国产精品激情在线观看| 精品动漫一区二区三区在线观看| 欧美伊人久久大香线蕉综合69 | 麻豆91在线播放| 中文字幕高清不卡| 欧美三级视频在线| 日韩激情中文字幕| 亚洲第一二三四区| 亚洲线精品一区二区三区八戒| 日韩一区二区三区免费观看| 欧美亚洲国产一区二区三区| 麻豆久久一区二区| 毛片av中文字幕一区二区| 亚洲伊人伊色伊影伊综合网| 亚洲欧美aⅴ...| 亚洲高清免费观看| 性久久久久久久| 中文字幕成人在线观看| 97国产一区二区| 欧美视频第二页| 色综合中文字幕| 欧美日韩一级黄| 欧美一级午夜免费电影| 色综合一个色综合| 国产一区二区三区观看| 国产福利一区二区| 豆国产96在线|亚洲| 色国产精品一区在线观看| 亚洲一区二区三区四区不卡| www.亚洲在线| 欧美成人一区二区| 国产精品灌醉下药二区| 久久九九久精品国产免费直播| 亚洲第一久久影院| 91性感美女视频| 91精品国产综合久久福利 | 国产精品美女久久久久久久| 国产精品久久久久一区| 水蜜桃久久夜色精品一区的特点| 麻豆成人综合网| 视频一区在线视频| 日韩国产一二三区| 国产成人一区在线| 欧美写真视频网站| 日本美女视频一区二区| 日欧美一区二区| 欧美国产一区在线| heyzo一本久久综合| 7777精品伊人久久久大香线蕉超级流畅| 久久综合色天天久久综合图片| 一区二区三区四区不卡视频| 麻豆精品国产传媒mv男同| 欧美成人女星排名| 麻豆精品在线播放| 国产农村妇女毛片精品久久麻豆| 成人欧美一区二区三区黑人麻豆| 日韩精品福利网| 欧美mv日韩mv国产网站app| 亚洲国产成人tv| 91美女片黄在线观看91美女| 久久精品男人天堂av| 成人在线视频首页| 精品一区二区在线观看| 亚洲精品国产一区二区精华液| 在线成人小视频| 91黄色免费版| 国产成人av网站| 欧美国产一区二区在线观看| 极品美女销魂一区二区三区免费| 久久天堂av综合合色蜜桃网| 成人在线视频一区| 国产人久久人人人人爽| 国产精品一区二区久久不卡| 欧美国产视频在线| 欧美精选一区二区| 三级久久三级久久久| 亚洲人成人一区二区在线观看 | 欧美激情一区在线| 成人高清视频免费观看| 国产亚洲一区二区三区四区 | 在线观看国产一区二区| 99综合电影在线视频| 国产一区视频在线看| 麻豆精品国产91久久久久久| 免费欧美在线视频| 天堂成人免费av电影一区| 亚洲主播在线观看| 精品一区二区三区久久久| 成人动漫一区二区| 国产专区欧美精品| 韩国午夜理伦三级不卡影院| 亚洲人成人一区二区在线观看| 欧美日韩国产a| 一本久久a久久精品亚洲| 亚洲国产乱码最新视频| 国产在线日韩欧美| 成人做爰69片免费看网站| 99re亚洲国产精品| 美女在线一区二区| 国产成人高清视频| 一本色道久久加勒比精品| 99这里只有精品| 成人av免费在线播放| 午夜精品在线看| 亚洲狠狠丁香婷婷综合久久久| 丝袜亚洲精品中文字幕一区| 久久久久国产精品麻豆| 亚洲国产精品久久久男人的天堂| 精品一区二区三区欧美| 亚洲另类中文字| 久久人人爽爽爽人久久久| 美女在线观看视频一区二区| 欧美不卡一区二区三区| 欧美精品一区二区久久久| 欧美精品免费视频| 一区二区三区在线影院| 国产一区二区不卡| 91精品国产美女浴室洗澡无遮挡| 欧美午夜理伦三级在线观看| 欧美电影免费观看完整版| 久久久不卡网国产精品二区| 亚洲不卡在线观看| 99精品久久99久久久久| 欧美放荡的少妇| 欧美日韩一区高清| 久久久精品国产99久久精品芒果 | 丁香婷婷深情五月亚洲| 欧美剧在线免费观看网站| 亚洲电影激情视频网站| 99国产精品久久| 国产婷婷色一区二区三区在线| 狠狠色丁香婷综合久久| 在线不卡中文字幕播放| 天天综合天天综合色| 成人精品gif动图一区| 一级特黄大欧美久久久| 成人av电影在线观看| 欧美成人vr18sexvr| 欧美成人bangbros| 成人精品在线视频观看| 国产婷婷一区二区| 99国产欧美久久久精品| 国产欧美精品一区二区三区四区| 久久se这里有精品| 欧美一区永久视频免费观看| 免费av成人在线| 久久综合久久久久88| 色国产综合视频| 亚洲理论在线观看| 国产精品女同一区二区三区| 国产一区二区三区久久悠悠色av| 国产亚洲精品福利| 国产成人综合在线观看| 欧美国产精品v| 91免费在线视频观看| 久久精品视频在线看| 国产精品网站导航| 国产精品国产三级国产普通话三级 | 激情伊人五月天久久综合| 国产丝袜美腿一区二区三区| 7777精品伊人久久久大香线蕉最新版 | 久久久www成人免费无遮挡大片| 国产经典欧美精品| 日韩精品欧美精品| ㊣最新国产の精品bt伙计久久| 日韩一区二区不卡| 欧美在线观看禁18| 欧美一区二区三区视频在线 | 精品国产乱码久久久久久牛牛 | 国产三区在线成人av| 91麻豆精品国产91| 91精品久久久久久久91蜜桃| 91国产精品成人| 欧美一区二区高清| 精品国产网站在线观看| 国产亚洲短视频| 一区二区三区蜜桃网| 亚洲观看高清完整版在线观看| 一区二区三区在线视频播放| 日本不卡一二三| 成人a区在线观看| 欧美久久一二区| 久久五月婷婷丁香社区| 亚洲欧洲日韩女同| 久久久亚洲午夜电影| 亚洲欧洲一区二区在线播放| 亚洲一区二区三区爽爽爽爽爽| 九一久久久久久| 欧美性大战xxxxx久久久| 成人欧美一区二区三区白人| 久久国产精品色| 欧美日韩国产免费| 亚洲资源在线观看| 白白色 亚洲乱淫|