<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

RTlinux的介紹

作者: 時(shí)間:2012-08-15 來(lái)源:網(wǎng)絡(luò ) 收藏

1.RTLinux

本文引用地址:http://dyxdggzs.com/article/148599.htm

RTLinux是由美國新墨西哥州的fsmlabs(finite STate machine labs, 有限狀態(tài)機實(shí)驗室)公司開(kāi)發(fā)的、利用linux開(kāi)發(fā)的面向實(shí)時(shí)和嵌入式應用的操作系統。在rtlinux宣言中,這樣描述rtlinux : rtlinux is the hard realTIme variant of linux that makes it possible to control robots, data acquisitiON systems, manufacturing plants, and other time-seNSitive instruments and machines。

到目前為止,RT-Linux已經(jīng)成功地應用于航天飛機的空間數據采集、科學(xué)儀器測控和電影特技圖像處理等廣泛領(lǐng)域,在電信、工業(yè)自動(dòng)化和航空航天等實(shí)時(shí)領(lǐng)域也有成熟應用。隨著(zhù)信息技術(shù)的飛速發(fā)展,實(shí)時(shí)系統已經(jīng)滲透到日常生活的各個(gè)層面,包括傳統的數控領(lǐng)域、軍事、制造業(yè)和通信業(yè),甚至連潛力巨大的信息家電、媒體廣播系統和數字影像設備都對實(shí)時(shí)性提出了愈來(lái)愈高的要求。

RT-Linux開(kāi)發(fā)者并沒(méi)有針對實(shí)時(shí)操作系統的特性而重寫(xiě)Linux的內核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。將linux的內核代碼做一些修改,將linux本身的任務(wù)以及l(fā)inux內核本身作為一個(gè)優(yōu)先級很低的任務(wù),而實(shí)時(shí)任務(wù)作為優(yōu)先級最高的任務(wù)。即在實(shí)時(shí)任務(wù)存在的情況下運行實(shí)時(shí)任務(wù),否則才運行linux本身的任務(wù)。TRLinux能夠創(chuàng )建精確運行的符合POSIX.1b標準的實(shí)時(shí)進(jìn)程;并且作為一種遵循GPL v2協(xié)議的開(kāi)放軟件,可以達GPL v2協(xié)議許可范圍內自由地、免費地使用、修改和再發(fā)生。

它是Linux在實(shí)時(shí)性方面的擴展,采用已獲得專(zhuān)利的雙核技術(shù):一個(gè)微型的RTLinux內核把原始的Linux內核作為它在空閑時(shí)的一個(gè)線(xiàn)程來(lái)運行。這開(kāi)啟了在兩個(gè)不同的內核層面上DD實(shí)時(shí)的RTLinux內核和常用的,非實(shí)時(shí)的Linux內核DD運行不同程序的新方式。原始的Linux內核通過(guò)RTLinux內核訪(fǎng)問(wèn)硬件。這樣,所有硬件實(shí)際上都是由RTLinux來(lái)進(jìn)行管理的。目前,有兩種不同的RTLinux版本:RTLinux/Free(或者RTLinux/Open)和RTLinux/Pro. RTLinux/Pro是一個(gè)由FSMLabs開(kāi)發(fā)的完全商業(yè)版本的實(shí)時(shí)linux。RTLinux/Free是一個(gè)由社區開(kāi)發(fā)的開(kāi)源版本。

2.標準Linux影響實(shí)時(shí)性的機制

現有的Linux是一個(gè)通用的操作系統,雖然它采用了許多技術(shù)來(lái)提高系統的運行和反應速度,但它本質(zhì)上不是一個(gè)實(shí)時(shí)操作系統,應用于嵌入式環(huán)境中還存在諸多的不足。具體表現如下:

1.關(guān)中斷問(wèn)題

在系統調用中,為了保護臨界區資源,Linux處于內核臨界區時(shí),中斷會(huì )被系統屏蔽,這就意味著(zhù)如果當前進(jìn)程正處于臨界區,即使它的優(yōu)先級較低,也會(huì )延遲高優(yōu)先級的中斷請求。在實(shí)時(shí)應用中,這是一個(gè)十分嚴重的問(wèn)題。

2.進(jìn)程調度問(wèn)題

Linux采用標準的UNIX技術(shù)使得內核是不可搶占的。采用基于固定時(shí)間片的可變優(yōu)先級調度,不論進(jìn)程的優(yōu)先級多么低,Linux總會(huì )在某個(gè)時(shí)候分給該進(jìn)程一個(gè)時(shí)間片運行,即使同時(shí)有可以運行的高優(yōu)先級進(jìn)程,它也必須等待低優(yōu)先級進(jìn)程的時(shí)間片用完,這對一些要求高優(yōu)先級進(jìn)程立即搶占CPU的實(shí)時(shí)應用是不能滿(mǎn)足要求的。

3.時(shí)鐘問(wèn)題

Linux為了提高系統的平均吞吐率,將時(shí)鐘中斷的最小間隔設置為10ms,這對于一個(gè)周期性的實(shí)時(shí)任務(wù),間隔要求小于10ms時(shí),就不能滿(mǎn)足實(shí)時(shí)任務(wù)的需要。如果要把時(shí)鐘 的間隔改小以滿(mǎn)足周期性的實(shí)時(shí)任務(wù)的需要,由于Linux的進(jìn)程切換比較費時(shí),時(shí)鐘中斷越頻繁,而花在中斷處理上的時(shí)間就越多,系統的大部分時(shí)間是調用進(jìn)程調度程序進(jìn)行進(jìn)程調度而不能進(jìn)行正常的處理。

3.RTLinux的特點(diǎn)

在Linux 操作系統中,調度算法(其于最大吞吐量準則)、設備驅動(dòng)、不可中斷的系統調用、中斷屏蔽以及虛擬內存的使用等因素,都會(huì )導致系統在時(shí)間上的不可預測性,決定了Linux操作系統不能處理硬實(shí)時(shí)任務(wù)。RTLinux為避免這些問(wèn)題,在Linux內核與硬件之間增加了一個(gè)虛擬層(通常稱(chēng)作虛擬機),構筑了一個(gè)小的、時(shí)間上可預測的、與Linux內核分開(kāi)的實(shí)時(shí)內核,使得在其中運行的實(shí)時(shí)進(jìn)程滿(mǎn)足硬實(shí)時(shí)性。并且RTLinux和Linux構成一個(gè)完備的整體,能夠完成既包括實(shí)時(shí)部分又包括非實(shí)時(shí)部分的復雜任務(wù)。

4.RTLinux的實(shí)現機理

RT-Linux對Linux內核進(jìn)行改造,將Linux內核工作環(huán)境做了一些變化,如圖1所示:

圖1 RTLinux對Linux內核改變

RTLinux有兩種中斷:硬中斷和軟中斷。軟中斷是常規Linux內核中斷。它的優(yōu)點(diǎn)在于可無(wú)限制地使用Linux內核調用。硬中斷是安裝實(shí)時(shí)Linux的前提。依賴(lài)于不同的系統,實(shí)時(shí)Linux下硬中斷的延遲是15μs。

它在Linux內核的下層實(shí)現了一個(gè)簡(jiǎn)單的實(shí)時(shí)內核,而Linux本身作為這個(gè)實(shí)時(shí)內核的優(yōu)先級最低的任務(wù),所有的實(shí)時(shí)任務(wù)的優(yōu)先級都高于Linux系統本身的以及Linux系統下的一般任務(wù)。RTLinux的體系結構如圖2所示。

圖2 RTLinux的體系結構

RTLinux的設計思想是:應用硬件的實(shí)時(shí)約束將實(shí)時(shí)程序分割成短小簡(jiǎn)單的部分,較大部分承擔較復雜的任務(wù)。根據這一原則,將應用程序分為硬實(shí)時(shí)和軟實(shí)時(shí)(即程序)2個(gè)部分。

硬實(shí)時(shí)的實(shí)現:

硬件實(shí)時(shí)部分被作為實(shí)時(shí)任務(wù)來(lái)執行,并從外部設備拷貝數據到一個(gè)叫做實(shí)時(shí)有名管道(RTFIFO)的特殊I/O端口;程序主要部分作為標準Linux進(jìn)程來(lái)執行。它將從RTFIFO中讀取數據,然后顯示并存儲到文件中,實(shí)時(shí)部分將被寫(xiě)入內核。設計實(shí)時(shí)有名管道是為了使實(shí)時(shí)任務(wù)在讀和寫(xiě)數據時(shí)不被阻塞。圖3所示的是RTFIFO結構圖。

圖3 RT-FIFO結構圖

RTLinux將標準Linux內核作為簡(jiǎn)單實(shí)時(shí)操作系統(RTOS)(或叫子內核)里優(yōu)先權最低的線(xiàn)程來(lái)運行,從而避開(kāi)了Linux內核性能的問(wèn)題。 從圖3可以看出,RTLinux擁有兩個(gè)內核。這就意味著(zhù)有兩組單獨的API,一個(gè)用于Linux環(huán)境,另一個(gè)用于實(shí)時(shí)環(huán)境。此外,為保證實(shí)時(shí)進(jìn)程與非實(shí)時(shí)Linux進(jìn)程不順序進(jìn)行數據交換,RTLinux引入了RT-FIFO隊列。RT-FIFO被Linux視為字符設備,最多可達150個(gè),分別命名為/der/rtf0、/dev/rtf1……/dev/rtf63。最大的RT-FIFO數量在系統內核編譯時(shí)設定。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 介紹 RTlinux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>