RT-Thread系统简介
前言
RT-Thread是一款國(guó)產(chǎn)的實(shí)時(shí)操作系統(tǒng),我們首先從實(shí)時(shí)操作系統(tǒng)開(kāi)始進(jìn)行介紹,再展開(kāi)RT-Thread操作系統(tǒng)。
實(shí)時(shí)操作系統(tǒng)介紹
實(shí)時(shí)操作系統(tǒng)誕生背景
為了解決兩個(gè)問(wèn)題:
- 一個(gè)是早期的CPU任務(wù)切換的開(kāi)銷太大,實(shí)時(shí)調(diào)度器可以避免任務(wù)頻繁切換導(dǎo)致CPU時(shí)間的浪費(fèi);
- 另一個(gè)是在一些特殊的應(yīng)用場(chǎng)景中,必須要保證重要的任務(wù)優(yōu)先被執(zhí)行。
定義
實(shí)時(shí)操作系統(tǒng)(RTOS)又稱,即時(shí)操作系統(tǒng),它會(huì)按照排序運(yùn)行、管理系統(tǒng)資源,并為開(kāi)發(fā)應(yīng)用程序提供一致的基礎(chǔ)。
實(shí)時(shí)操作系統(tǒng)與一般的操作系統(tǒng)相比,最大的特色就是**“實(shí)時(shí)性”**,如果有一個(gè)任務(wù)需要執(zhí)行,實(shí)時(shí)操作系統(tǒng)會(huì)在較短時(shí)間內(nèi)執(zhí)行該任務(wù),不會(huì)有較長(zhǎng)的延時(shí),以此保證了各個(gè)任務(wù)的及時(shí)執(zhí)行。
實(shí)時(shí)操作系統(tǒng)中都要包含一個(gè)實(shí)時(shí)任務(wù)調(diào)度器,這個(gè)任務(wù)調(diào)度器與其他操作系統(tǒng)的最大不同是強(qiáng)調(diào):嚴(yán)格按照優(yōu)先級(jí)來(lái)分配CPU時(shí)間,并且時(shí)間片輪轉(zhuǎn)不是實(shí)時(shí)調(diào)度器的一個(gè)必選項(xiàng)。
設(shè)計(jì)思路
- 實(shí)時(shí)的消息、事件處理機(jī)制。常見(jiàn)操作系統(tǒng)中,消息隊(duì)列都是按照FIFO的方式進(jìn)行調(diào)度,但實(shí)時(shí)操作系統(tǒng)會(huì)提供基于優(yōu)先級(jí)的處理方式:依據(jù)優(yōu)先級(jí)來(lái)決定優(yōu)先接收信息。
- 提供內(nèi)核級(jí)的優(yōu)先級(jí)反轉(zhuǎn)處理方式。對(duì)于類似信號(hào)量一類的API,都能提供抑止優(yōu)先級(jí)翻轉(zhuǎn)的機(jī)制,防止操作系統(tǒng)死鎖。
- 減少粗粒度的鎖和長(zhǎng)期關(guān)中斷的使用。“鎖”主要是指自旋鎖一類會(huì)影響中斷的鎖,也包括任何關(guān)中斷的操作。RTOS通常不允許長(zhǎng)期關(guān)中斷。
- 系統(tǒng)級(jí)的服務(wù)也要保證實(shí)時(shí)性。實(shí)時(shí)操作系統(tǒng)中允許高優(yōu)先級(jí)的任務(wù)優(yōu)先寫(xiě)入數(shù)據(jù),在文件系統(tǒng)提供服務(wù)的整個(gè)過(guò)程中,高優(yōu)先級(jí)的請(qǐng)求被優(yōu)先處理,這種高優(yōu)先級(jí)策略直到操作完成。
- 避免提供實(shí)時(shí)性不確定的API。多數(shù)實(shí)時(shí)操作系統(tǒng)都不支持虛擬內(nèi)存(page file/swap area),因?yàn)槿表?yè)中斷(page fault)會(huì)導(dǎo)致任務(wù)調(diào)度的不確定性增加。實(shí)時(shí)操作系統(tǒng)很多都支持分頁(yè),但很少會(huì)使用虛擬內(nèi)存,因?yàn)橐淮稳表?yè)中斷的開(kāi)銷十分巨大(通常都是毫秒級(jí)),波及的代碼很多,導(dǎo)致用戶程序執(zhí)行的不確定性增加。
- 提供針對(duì)實(shí)時(shí)系統(tǒng)調(diào)度的專用API。
- 降低系統(tǒng)抖動(dòng)。因?yàn)殛P(guān)中斷等原因,操作系統(tǒng)的調(diào)度器不會(huì)太精確的產(chǎn)生周期性的調(diào)度。但優(yōu)秀的實(shí)時(shí)操作系統(tǒng)能把調(diào)度器的抖動(dòng)降低到微妙甚至百納秒一級(jí)。
- 針對(duì)實(shí)時(shí)性設(shè)計(jì)的SMP和虛擬化技術(shù)。實(shí)時(shí)操作系統(tǒng)的虛擬化能從hypervisor層面上提供虛擬機(jī)級(jí)別的實(shí)時(shí)調(diào)度,虛擬機(jī)上可以是另外一個(gè)實(shí)時(shí)系統(tǒng),也可以是一個(gè)非實(shí)時(shí)系統(tǒng)。
RT-Thread系統(tǒng)
概述
它是一個(gè)嵌入式實(shí)時(shí)多線程操作系統(tǒng),基本屬性之一是支持多任務(wù)。事實(shí)上一個(gè)處理器核心在某時(shí)刻只能運(yùn)行一個(gè)任務(wù),由于每次對(duì)一個(gè)任務(wù)的執(zhí)行時(shí)間很短、任務(wù)與任務(wù)之間通過(guò)任務(wù)調(diào)度器進(jìn)行快速的切換,給人造成多個(gè)任務(wù)在同一時(shí)刻同時(shí)運(yùn)行的錯(cuò)覺(jué)。
RT-Threa系統(tǒng)中,任務(wù)通過(guò)線程實(shí)現(xiàn)的,RT-Thread中的線程調(diào)度器也就是以上提到的任務(wù)調(diào)度器。
架構(gòu)
物聯(lián)網(wǎng)操作系統(tǒng)是指以操作系統(tǒng)內(nèi)核(RTOS\Linux等)為基礎(chǔ),包括如文件系統(tǒng)、圖形庫(kù)等較為完整的中間件組件,具備低功耗、安全、通信協(xié)議支持和云端連接能力的軟件平臺(tái)。
RT-Thread與其他很多RTOS主要區(qū)別之一是:它不僅僅是一個(gè)實(shí)時(shí)內(nèi)核,還具備豐富的中間層組件,如下圖所示。
- 內(nèi)核層:RT-Thread內(nèi)核,是RT-Thread的核心部分,包括了內(nèi)核系統(tǒng)中對(duì)象的實(shí)現(xiàn),例如多線程及其調(diào)度、信號(hào)量、郵箱、消息隊(duì)列、內(nèi)存管理、定時(shí)器等;libcpu/BSP(芯片移植相關(guān)文件/板級(jí)支持包)與硬件密切相關(guān),由外設(shè)驅(qū)動(dòng)和CPU移植構(gòu)成。
- 組件與服務(wù)層:組件是基于RT-Thread內(nèi)核之上的上層軟件,例如虛擬文件系統(tǒng)、FinSH命令行界面、網(wǎng)絡(luò)框架、設(shè)備框架等。采用模塊化設(shè)計(jì),做到組件內(nèi)部高內(nèi)聚,組件之間低耦合。
- RT-Thread軟件包:運(yùn)行于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上,面向不同應(yīng)用領(lǐng)域的通用軟件組件,由描述信息、源代碼或庫(kù)文件組成。
- 物聯(lián)網(wǎng)相關(guān)的軟件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
- 腳本語(yǔ)言相關(guān)的軟件包:目前支持 JerryScript、MicroPython。
- 多媒體相關(guān)的軟件包:Openmv、mupdf。
- 工具類軟件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
- 系統(tǒng)相關(guān)的軟件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
- 外設(shè)庫(kù)與驅(qū)動(dòng)類軟件包:RealTek RTL8710BN SDK。
總結(jié)
以上是生活随笔為你收集整理的RT-Thread系统简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: css中两行图片整齐排布,css 标题一
- 下一篇: 基于SSM公寓房屋租赁系统(附论文)