欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

RTOS的調度原理是什么

RTOS的調度原理是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

10年積累的網(wǎng)站設計、成都做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有璧山免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

        我們這一系列的微信推送,僅僅是為了可以幫助大家快速地對操作系統(tǒng)有一個感性層面上的認識。當然,讓人更好地記住一樣復雜的東西,就是尋找另一樣簡單的東西來解釋它。但是,這種方式的解釋,是完全不符合教育應該有的嚴謹邏輯的。因此,讓我們來收回這種非科學的論證,轉而用科學的方法論來表述我們需要闡述的東西。

(一) 自己寫一個調度算法

        在很久很久以前,我大抵記得那是我大二學生時期,我就開始自己動手寫過一個調度算法。其實現(xiàn)的功能非常簡單,就是使兩個“任務”分時地去交替執(zhí)行,并且,利用定時器去決定這兩個任務運行的時間。當時滿心歡喜地想告訴全世界,自己完成了一個“內核”的框架。

        現(xiàn)在想來,上述的這個行為真的是非常可笑的無知滿足。因為這個算法的實現(xiàn)非常簡單。簡單闡述一下其原理,就是建立兩個指向函數(shù)的指針變量,然后建立兩個函數(shù),并且用上述兩個變量指向它們。定時器開始定時,假設周期為10ms,那么每隔10ms只要去切換著兩個變量就可以了。這樣子,如果宏觀性上面,你就能看到兩個任務是在同時運行了。

        再來分析一下上述的東西,聽著特別簡單,但是經(jīng)不住仔細推敲,它們肯定是不符合操作系統(tǒng)的任何特征的。首先,如果你的每個任務執(zhí)行的時間小于10ms還好,萬一超過了其分時分配的運行時間(10ms)而強行使用定時器去切換,那當前沒運行完的數(shù)據(jù)完全就丟失了,沒有任何拯救的余地。其次,它的任務沒法被動態(tài)地建立,回收。還有很多很多的缺點。這是我大三恍然大悟的東西。因此,到現(xiàn)在我也不喜歡使用在主函數(shù)里面利用定時器產(chǎn)生計數(shù)值,根據(jù)計數(shù)值去切換運行函數(shù)的方式。為什么?因為你裸機編程的時候,特別是在某個函數(shù)里面有大量的通訊等待操作時,你無法保證每個函數(shù)的運行時間正好小于等于你設定的時間。因此總會出現(xiàn),有些任務根本執(zhí)行不到這一現(xiàn)象。

       但是不幸的是,后來工作之后,發(fā)現(xiàn)很多電子工程師都是這樣去處理他的程序流向的。

(二) 操作系統(tǒng)調度算法的原理

        我開始研究操作系統(tǒng),也是那時候在自信滿滿地用了我自己的“內核”做了幾個項目之后,直到有一次做一個長距離Modbus高速通信,由于這個函數(shù)里面有一個做CRC檢驗失敗等待重傳的函數(shù)。而由于選用了高速的數(shù)據(jù)流,加上距離比較長,因此高頻信號的畸變比較嚴重,導致了誤碼率很高。因此這個函數(shù)頻繁被調用,但是后來發(fā)現(xiàn),這個函數(shù)幾乎不能被完整運行下來。分析了好久的原因,最后發(fā)現(xiàn),原來這個函數(shù)執(zhí)行的時間遠遠超過了我分配給它的運行時間了,因此,沒等它執(zhí)行完成,我的調度算法強制將其中斷了。并且由于沒有數(shù)據(jù)的保存機制,導致了整個函數(shù)只能執(zhí)行一半就被銷毀了。后來工作之后,也遇到過別的工程師這么做,勸其修改,還是不聽,最后導致了嚴重的錯誤。從那以后,我寧愿while(1)到底,也不愿使用這樣的方式了。

       而一個成熟的操作系統(tǒng)內核,它的調度算法是會在中斷當前任務之后,將數(shù)據(jù)保存下來的。

       我們稱當前運行的任務為“運行態(tài)”,而沒有被運行的任務,我們稱為“非運行狀態(tài)”。但是關于“非運行狀態(tài)”,這只是一個籠統(tǒng)的名稱而已,這里面包含了眾多的子狀態(tài)。我們以后來詳細說明一下“非運行狀態(tài)”的具體細分。在這里注明一下,我們課程的邏輯當中,為了簡化操作系統(tǒng)模型,因此把所有具體的非運行狀態(tài)進行集合化,在一些高級的操作系統(tǒng)當中,這個問題有待討論。

       以最基本的分時操作系統(tǒng)來說,這里假設所有任務的優(yōu)先級都是統(tǒng)一的,時間一到就會自動輪詢。當時間到來時,運行態(tài)任務沒有被執(zhí)行完的數(shù)據(jù),操作系統(tǒng)都會有一個機制,將這些數(shù)據(jù)進行保存,可以是壓入堆棧。具體操作的過程,就是將寄存器里面的數(shù)據(jù)進行保存,有點類似于中斷函數(shù)的調用。接著把可以回收的內存進行回收。然后,為下一個需要執(zhí)行的任務分配內存,最后再去執(zhí)行下一個需要執(zhí)行的任務。而當時間又輪到了第一次沒有執(zhí)行完的任務之后,又會重新為其分配內存,然后把之前的數(shù)據(jù)取出來,繼續(xù)執(zhí)行。整個籠統(tǒng)的過程就是這樣。

關于RTOS的調度原理是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

分享題目:RTOS的調度原理是什么
網(wǎng)站路徑:http://chinadenli.net/article18/ihdodp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器微信小程序網(wǎng)站導航網(wǎng)站設計網(wǎng)站設計公司企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管