加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

一個(gè)基于優(yōu)先級(jí)協(xié)作式調(diào)度的嵌入式操作系統(tǒng)

12/02 15:29
833
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、QuarkTS簡(jiǎn)介

github鏈接:https://github.com/kmilo17pet/QuarkTS

開源協(xié)議:MIT license

QuarkTS是一款開源的嵌入式操作系統(tǒng),旨在為小型嵌入式應(yīng)用程序提供現(xiàn)代化的開發(fā)環(huán)境,幫助開發(fā)者構(gòu)建穩(wěn)定、可預(yù)測(cè)的事件驅(qū)動(dòng)型多任務(wù)軟件。其特點(diǎn)包括:

??優(yōu)先級(jí)協(xié)作式調(diào)度:任務(wù)自行管理生命周期,避免了搶占帶來的復(fù)雜性,減少了重入問題。

??時(shí)間控制:提供定時(shí)任務(wù)和軟件定時(shí)器,方便實(shí)現(xiàn)時(shí)間相關(guān)的操作。

??任務(wù)間通信機(jī)制:提供隊(duì)列、通知、事件標(biāo)志等機(jī)制,實(shí)現(xiàn)不同任務(wù)之間的有效通信。

??狀態(tài)機(jī)支持:提供分層狀態(tài)機(jī)支持,簡(jiǎn)化復(fù)雜邏輯的實(shí)現(xiàn)。

??協(xié)程:支持協(xié)程,提升代碼效率,簡(jiǎn)化并發(fā)編程。

??AT命令行接口:提供簡(jiǎn)潔的命令行接口,方便調(diào)試和交互。

??安全可靠:遵循MISRA C 2012和CERT編碼標(biāo)準(zhǔn),并進(jìn)行多項(xiàng)靜態(tài)分析檢查,確保代碼安全可靠。

二、優(yōu)先級(jí)協(xié)作式調(diào)度

優(yōu)先級(jí)協(xié)作式調(diào)度是一種任務(wù)調(diào)度策略,其中任務(wù)自行管理其生命周期,并在程序員指定的點(diǎn)進(jìn)行任務(wù)切換。這種調(diào)度方式避免了搶占式調(diào)度中常見的復(fù)雜性,如資源競(jìng)爭(zhēng)、死鎖和優(yōu)先級(jí)反轉(zhuǎn)等問題。

在優(yōu)先級(jí)協(xié)作式調(diào)度中,每個(gè)任務(wù)都有一個(gè)優(yōu)先級(jí),但任務(wù)不會(huì)因外部事件或時(shí)間片到期而被強(qiáng)制中斷。

相反,任務(wù)會(huì)在完成其當(dāng)前操作或到達(dá)程序員指定的切換點(diǎn)時(shí)主動(dòng)放棄CPU,并將控制權(quán)交給其他任務(wù)。這種方式使得任務(wù)間的切換更加可控和可預(yù)測(cè)。

特點(diǎn)

??減少重入問題:由于任務(wù)不會(huì)被其他任務(wù)隨意中斷,只在程序員允許的位置進(jìn)行切換,因此降低了并發(fā)編程中常見的重入問題。

??簡(jiǎn)化資源共享:任務(wù)間的資源競(jìng)爭(zhēng)問題更容易管理,因?yàn)槿蝿?wù)切換是可控的。

??避免死鎖:協(xié)作式調(diào)度避免了搶占式調(diào)度中常見的死鎖問題,因?yàn)槿蝿?wù)間的切換是確定的。

其它常見任務(wù)調(diào)度策略還有:

搶占式調(diào)度

搶占式調(diào)度是一種任務(wù)調(diào)度策略,其中任務(wù)可以因外部事件(如中斷)或時(shí)間片到期而被強(qiáng)制中斷,并由更高優(yōu)先級(jí)的任務(wù)接管CPU。

特點(diǎn)

??響應(yīng)速度快:高優(yōu)先級(jí)任務(wù)可以立即搶占CPU,從而確保系統(tǒng)對(duì)緊急事件的快速響應(yīng)。

??資源競(jìng)爭(zhēng):由于任務(wù)可以被搶占,因此需要額外的同步機(jī)制來管理資源競(jìng)爭(zhēng)。

??復(fù)雜性高:搶占式調(diào)度增加了系統(tǒng)的復(fù)雜性,因?yàn)樾枰紤]任務(wù)切換的上下文保存和恢復(fù)、優(yōu)先級(jí)反轉(zhuǎn)等問題。

時(shí)間片調(diào)度

時(shí)間片調(diào)度是一種特殊的搶占式調(diào)度策略,其中每個(gè)任務(wù)被分配一個(gè)固定長(zhǎng)度的時(shí)間片。當(dāng)任務(wù)運(yùn)行完其時(shí)間片后,無論其是否完成,都會(huì)被強(qiáng)制中斷,并將控制權(quán)交給下一個(gè)就緒的任務(wù)。

特點(diǎn)

??公平性:通過為每個(gè)任務(wù)分配時(shí)間片,可以確保所有任務(wù)都有機(jī)會(huì)獲得CPU資源。

??上下文切換開銷:由于任務(wù)頻繁切換,因此需要額外的上下文保存和恢復(fù)開銷。

??適合多任務(wù)環(huán)境:時(shí)間片調(diào)度特別適用于需要同時(shí)處理多個(gè)任務(wù)的多用戶系統(tǒng)。

對(duì)比

優(yōu)先級(jí)協(xié)作式調(diào)度 搶占式調(diào)度 時(shí)間片調(diào)度
任務(wù)切換 程序員控制 外部事件或時(shí)間片到期 時(shí)間片到期
重入問題 減少 增加 增加
資源共享 簡(jiǎn)化 復(fù)雜 復(fù)雜
死鎖 避免 可能發(fā)生 可能發(fā)生
響應(yīng)速度 中等(取決于程序員的設(shè)計(jì)) 快(但受限于時(shí)間片長(zhǎng)度)
系統(tǒng)復(fù)雜性 中等(需要管理時(shí)間片和上下文切換)
公平性 不確定(取決于程序員的設(shè)計(jì)) 不確定(取決于優(yōu)先級(jí)分配)

優(yōu)先級(jí)協(xié)作式調(diào)度、搶占式調(diào)度和時(shí)間片調(diào)度各有優(yōu)缺點(diǎn)。

優(yōu)先級(jí)協(xié)作式調(diào)度適用于需要簡(jiǎn)化資源共享和避免死鎖的系統(tǒng),但響應(yīng)速度可能不如搶占式調(diào)度快。

搶占式調(diào)度適用于需要快速響應(yīng)緊急事件的系統(tǒng),但增加了系統(tǒng)的復(fù)雜性和資源競(jìng)爭(zhēng)問題。

時(shí)間片調(diào)度則提供了一種公平的CPU資源分配方式,適用于多任務(wù)環(huán)境,但會(huì)引入額外的上下文切換開銷。

三、QuarkTS應(yīng)用場(chǎng)景

QuarkTS 的設(shè)計(jì)目標(biāo)在于利用小巧、簡(jiǎn)單而又最重要的穩(wěn)健實(shí)現(xiàn)實(shí)現(xiàn)其聲明功能,使其適合資源受限的微控制器,在此全搶先實(shí)時(shí)操作系統(tǒng)顯得過度,且加入它們會(huì)為固件開發(fā)添加不必要的復(fù)雜度。

此外,借助狀態(tài)機(jī)支持、協(xié)程、時(shí)間控制以及進(jìn)程間通信原語(yǔ),QuarkTS 提供了現(xiàn)代化環(huán)境,用于構(gòu)建穩(wěn)定、可預(yù)測(cè)的事件驅(qū)動(dòng)型多任務(wù)嵌入式軟件。

它們的模塊化和可靠性使這款操作系統(tǒng)成為低功耗設(shè)備上一系列應(yīng)用高效開發(fā)的理想選擇,包括汽車控制系統(tǒng)、監(jiān)控及物聯(lián)網(wǎng)領(lǐng)域。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

本公眾號(hào)專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時(shí),公眾號(hào)內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!