即時作業系統- 維基百科,自由的百科全書

文章推薦指數: 80 %
投票人數:10人

即時作業系統(Real-time operating system, RTOS),又稱實時作業系統,它會按照排序執行、管理系統資源,並為開發應用程式提供一致的基礎。

即時作業系統與一般的 ... 即時作業系統 維基百科,自由的百科全書 跳至導覽 跳至搜尋 即時作業系統(Real-timeoperatingsystem,RTOS),又稱實時作業系統,它會按照排序執行、管理系統資源,並為開發應用程式提供一致的基礎。

即時作業系統與一般的作業系統相比,最大的特色就是「即時性」[1],如果有一個任務需要執行,即時作業系統會馬上(在較短時間內)執行該任務,不會有較長的延時。

這種特性保證了各個任務的及時執行。

設計即時作業系統的首要目標不是高的吞吐量,而是保證任務在特定時間內完成,因此衡量一個即時作業系統堅固性的重要指標,是系統從接收一個任務,到完成該任務所需的時間,其時間的變化稱為抖動。

可以依抖動將即時作業系統分為兩種:硬即時作業系統及軟即時作業系統,硬即時作業系統比軟即時作業系統有更少的抖動: 硬即時作業系統必須使任務在確定的時間內完成。

軟即時作業系統能讓絕大多數任務在確定時間內完成。

[2] 即時作業系統與一般的作業系統有著不同的排程演算法。

普通的作業系統的排程器對於執行緒優先級等方面的處理更加靈活;而即時作業系統追求最小的中斷延時(英語:Interruptlatency)和執行緒切換延時。

[3] 通常都會有最基礎的核心,以及外加上去的模組,像是檔案系統、網路協定堆疊和應用、裝置驅動程式等模組。

RTOS的核心通常會有:排程器、物件、服務 目次 1設計理念 2任務調度 2.1排程算法 3RTOS舉例 3.1開放原始碼&免費 3.2開放原始碼 3.3非開放原始碼 4參考文獻 設計理念[編輯] 通常,即時作業系統分為兩大類: 事件驅動型。

當一個高優先級的任務需要執行時,系統會自動切換到這個任務。

這種根據優先級排程任務的方式稱為搶占式任務處理。

時間觸發型。

每個任務在各自設定好的的時間間隔內重複、輪流排程。

時間觸發型設計往往比較嚴格地排程任務,具有更好的多工處理能力。

多個任務被不停地輪流排程,在宏觀上,就相當於一個CPU同時執行多個任務。

在過去,CPU在切換任務時往往需要多個機器周期,在這段時間內,CPU不能處理其他任何任務。

例如,一個20MHz的摩托羅拉68000處理器(1980年代後期),在切換任務時需要花費20微秒。

(相比之下,一個100MHz的ARM架構的處理器(2008年之後的)只需要3微秒。

)[4][5]因此,早期的即時作業系統通過減少工作切換次數來避免消耗過多CPU時間。

任務排程[編輯] 在典型的設計中[來源請求],一個任務有以下三種狀態: 正在執行(Running,正在CPU中執行) 待命(Ready,等待執行) 阻塞(Blocked,任務暫停,等待一個事件的發生,例如接收一組資料) 由於CPU在某個時間只能執行一個任務,大部分任務,在大部分時間,處於阻塞或待命狀態。

可能會有大量專案在待命清單里等待執行,這取決於系統所需的任務數量以及排程器的類型。

通常情況下,對於簡單的時間觸發式排程器來說,待命任務清單的資料結構的設計要儘可能縮短最壞情況下,程式在排程器關鍵部分的執行時間,以防止其他任務一直在待命清單中,無法及時執行。

因此,在這種排程器中,應儘可能避免搶占式任務,甚至應該關閉排程器之外的所有中斷。

當然,待命任務清單的資料結構也應根據這個系統需要的最大任務數量做進一步的最佳化。

如果待命任務清單中的任務較多,雙向連結串列是一個比較好的選擇。

如果待命任務清單通常包含少量任務,但偶爾會出現較多工,任務應該根據優先級排序。

這樣一來,要尋找最高優先級的任務,就不必要在整個清單中一個一個地尋找。

而插入任務需要從清單中的第一個任務開始,向後尋找,直到找到比要插入的任務優先級低的任務,然後插入到該任務之前;如果沒有找到優先級更低的任務,就插入到任務清單末尾。

在尋找任務清單,準備插入任務的過程中,應該注意避免搶占。

長的關鍵部分應分為多個小的部分分別執行。

如果在尋找任務清單,要插入低優先級任務的時候,一個中斷發生使高優先級任務進入待命狀態,高優先級任務應該在低優先級任務被插入之前立刻被插入清單和執行。

在更先進的系統中,即時任務和許多非即時任務共享運算資源,這時候待命任務清單會變得很長。

在這種系統中,待命任務清單可能不適合用連結串列的結構。

排程演算法[編輯] 一些即時作業系統中常用的演算法: 合作式排程 搶占式排程 Rate-monotonicscheduling Round-robinscheduling Fixedprioritypre-emptivescheduling,animplementationofpreemptivetimeslicing Fixed-PrioritySchedulingwithDeferredPreemption Fixed-PriorityNon-preemptiveScheduling Criticalsectionpreemptivescheduling Statictimescheduling EarliestDeadlineFirstapproach Stochasticdigraphswithmulti-threadedgraphtraversal RTOS舉例[編輯] WinCE、VxWorks、μC/OS-Ⅱ等運用較廣。

Linux是作為通用作業系統開發的,其核心在即時處理能力上先天不足,部分網路開發社群將其經過改造能在一定程度上成為即時作業系統。

[6] 開放原始碼&免費[編輯] Raw-OS[1](頁面存檔備份,存於網際網路檔案館) CoOS[2] 開放原始碼[編輯] SylixOS[3](頁面存檔備份,存於網際網路檔案館) RT-Thread[4](頁面存檔備份,存於網際網路檔案館) eCos Fiasco.OC[5](頁面存檔備份,存於網際網路檔案館) FreeRTOS[6](頁面存檔備份,存於網際網路檔案館) Phoenix-RTOS Nut/OS[7](頁面存檔備份,存於網際網路檔案館) Prex RTAI RTEMS RTLinux SHaRK[8](頁面存檔備份,存於網際網路檔案館) TRONProject Xenomai[9] CoOS[10] OneOS[11](頁面存檔備份,存於網際網路檔案館) ChibiOS 非開放原始碼[編輯] ArdenceRTX BeOS ChorusOS DNIX DMERT e-Tkernel HOPENOS embOS(Segger) INTEGRITY ITRON LynxOS MERT MicroC/OS-II MQXRTOS[12](頁面存檔備份,存於網際網路檔案館) Nucleus OS-9 OSE OSEK/VDX OSEKtime PDOS PharLapETS PikeOS Portos pSOS QNX RMX RSX-11 RT-11 RTOS-UH RTXC SalvoRTOS[13](頁面存檔備份,存於網際網路檔案館) SINTRANIII SymbianOS ThreadX VRTX VxWorks WindowsCE µnOS UNIX-RTR REX HP-1000/RTE[14] 參考文獻[編輯] ^ResponseTimeandJitter.[2013-08-16].(原始內容存檔於2014-04-14).  ^Tanenbaum,Andrew.ModernOperatingSystems.UpperSaddleRiver,NJ:Pearson/PrenticeHall.2008:160.ISBN 978-0-13-600663-3.  ^RTOSConcepts.[2013-08-16].(原始內容存檔於2013-04-06).  ^Contextswitchingtime.SeggerMicrocontrollerSystems.[2009-12-20].(原始內容存檔於2011-07-16).  ^RTOSperformancecomparisononemb4fun.de.[2013-08-16].(原始內容存檔於2013-01-11).  ^KarimYaghmour;JonMasters,GiladBen-Yossef&PhilippeGerum.BuildingEmbeddedLinuxSystems.O』ReillyMedia,Inc. :354.ISBN 978-0-596-52968-0. 引文使用過時參數coauthors(幫助) 閱論編即時作業系統(RTOS) 即時作業系統比較 開放原始碼 MynewtOS(英語:ApacheMynewtOS) BeRTOS(英語:BeRTOS) ChibiOS/RT Contiki Composite Djyos ECOS ERIKAEnterprise(英語:ERIKAEnterprise) FreeRTOS Fuchsia FunkOS(英語:FunkOS) Nano-RK(英語:Nano-RK) NuttX Oneos QP RIOT RTAI(英語:RTAI) RTEMS RTLinux RT-Thread seL4(英語:seL4) TalonDSPRTOS(英語:TalonDSPRTOS) TI-RTOS(英語:TI-RTOS) TinyOS TockOS TRON WombatOS(英語:WombatOS) Xenomai Zephyr 專有軟體 4690OS(英語:4690OperatingSystem) DioneOS(英語:DioneOS) INTEGRITY JunosOS(英語:JunosOS) LynxOS µC/OS-II(英語:Micro-ControllerOperatingSystems) MQX(英語:MQX) MultiuserDOS(英語:MultiuserDOS) NucleusRTOS OpenComRTOS(英語:OpenComRTOS) OSE(英語:OperatingSystemEmbedded) OS-9(英語:OS-9) OS2000(英語:OS2000) PikeOS(英語:PikeOS) QNX REXOS(英語:REXOS) ScreenOS(英語:ScreenOS) L4微核心系列 ThreadX TPF(英語:TransactionProcessingFacility) VRTX VxWorks WindowsEmbeddedCompact SylixOS 歷史上的 DNIX(英語:DNIX) DSOS(英語:DSOS) EROS(英語:EROS(microkernel)) CoyotOS(英語:CoyotOS) FlexOS(英語:FlexOS) MERT/UNIX-RT(英語:Multi-EnvironmentReal-Time) pSOS(英語:pSOS(real-timeoperatingsystem)) RMX RSX-11 RT-11(英語:RT-11) SintranIII(英語:SintranIII) Symbian THEOS(英語:THEOS) UNOS(英語:UNOS(operatingsystem)) 分類:即時作業系統 閱論編嵌入式系統一般術語 微控制器 ASIC/FPGA/SoC 單板機 引導程式 交叉編譯器 板級支援包 嵌入式作業系統 嵌入式軟體(英語:Embeddedsoftware) 嵌入式資料庫(英語:Embeddeddatabase) 嵌入式hypervisor(英語:Embeddedhypervisor) 記憶體占用(英語:Memoryfootprint) IoT 消費電子產品 最小硬體系統 韌體及掌控 封閉平台 設計式缺陷 殘廢軟體 廠商鎖定(英語:Vendorlock-in) 第三方韌體(英語:Customfirmware) 第三方路由器韌體專案 自製(電動遊戲)(英語:Homebrew(videogames)) 消費電子產品破解(英語:Hackingofconsumerelectronics) Rooting(安卓) iOS越獄 軟體庫 uClibc EmbeddedGLIBC musl dietlibc 軟體開發工具 BusyBox Buildroot BitBake OpenEmbedded Yocto計劃 U-Boot Almquistshell Stand-aloneshell(英語:Stand-aloneshell) 嵌入式作業系統 嵌入式Linux 行動裝置Linux(英語:Linuxformobiledevices) 輕量級Linux發行版 WindowsIoT/WinCE 即時作業系統 程式語言 組合語言 嵌入式C語言 MISRAC nesC(英語:nesC) Ada EmbeddedJava(英語:EmbeddedJava) CAPL 輕量級瀏覽器比較(英語:Comparisonoflightweightwebbrowsers) 開源計算硬體(英語:Open-sourcecomputinghardware) 開源機器人(英語:Open-sourcerobotics) 取自「https://zh.wikipedia.org/w/index.php?title=实时操作系统&oldid=71303968」 分類:​作業系統實時作業系統嵌入式作業系統作業系統技術隱藏分類:​含有過時參數的引用的頁面含有英語的條目有未列明來源語句的條目 導覽選單 個人工具 沒有登入討論貢獻建立帳號登入 命名空間 條目討論 臺灣正體 不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體 查看 閱讀編輯檢視歷史 更多 搜尋 導航 首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科 說明 說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科 工具 連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目 列印/匯出 下載為PDF可列印版 其他專案 維基共享資源 其他語言 العربيةБеларускаяБългарскиBosanskiCatalàČeštinaDanskDeutschEnglishEspañolEestiفارسیSuomiFrançaisहिन्दीՀայերենItaliano日本語Қазақша한국어LietuviųNederlandsNorsknynorskNorskbokmålPolskiPortuguêsRomânăРусскийසිංහලSimpleEnglishSvenskaதமிழ்ไทยTürkçeУкраїнськаTiếngViệt 編輯連結



請為這篇文章評分?