溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C# Windows CE特點(diǎn)之實(shí)時(shí)性的示例分析

發(fā)布時(shí)間:2021-12-01 11:03:40 來源:億速云 閱讀:138 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C# Windows CE特點(diǎn)之實(shí)時(shí)性的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C# Windows CE特點(diǎn)之實(shí)時(shí)性的示例分析”這篇文章吧。

C# Windows CE特點(diǎn)之實(shí)時(shí)性

C# Windows CE的***一條設(shè)計(jì)目標(biāo)是要支持實(shí)時(shí)系統(tǒng)的開發(fā)。在嵌入式編程中,實(shí)時(shí)性就是指在指定時(shí)間內(nèi)完成指定任務(wù)的能力,這些任務(wù)可能是計(jì)算某個(gè)值,記錄某次輸入,或者是向某個(gè)外部設(shè)備發(fā)送一條命令。很多系統(tǒng)要求無論負(fù)荷有多么重,系統(tǒng)都應(yīng)該能夠連續(xù)可靠地執(zhí)行這樣的一個(gè)任務(wù)(或者是一些任務(wù))。

從C# Windows CE 3.0開始,C# Windows CE開發(fā)團(tuán)隊(duì)就加入了一系列特性以支持實(shí)時(shí)系統(tǒng)的開發(fā)。其中包括支持256個(gè)線程優(yōu)先級(C# Windows CE一直都支持多線程編程)和嵌套的中斷請求。C# Windows CE對實(shí)時(shí)性的支持在C# Windows CE Platform Builder的文檔中定義如下:

◆保證高優(yōu)先級線程安排的上限,但僅對所有排隊(duì)線程中優(yōu)先級***的線程有效。

◆在執(zhí)行高優(yōu)先級中斷服務(wù)程序(ISR,interrupt service routine)時(shí)保證延時(shí)的上限。在內(nèi)核中專門設(shè)置了一些空間用于臨時(shí)關(guān)閉中斷服務(wù)。

◆確保對調(diào)度程序的控制,使其能順利地安排線程。

實(shí)時(shí)系統(tǒng)可以根據(jù)需求分為兩種,一種要求硬實(shí)時(shí),另一種則要求軟實(shí)時(shí)。軟實(shí)時(shí)需求的系統(tǒng)在沒有嚴(yán)重后果的情況下允許出現(xiàn)一些延時(shí),而硬實(shí)時(shí)需求的系統(tǒng)中則不能出現(xiàn)任何一點(diǎn)延時(shí)。

硬實(shí)時(shí)需求系統(tǒng)的例子如工廠里控制機(jī)器手臂動(dòng)作的系統(tǒng)。有時(shí)也許必須移開這個(gè)手臂才能讓生產(chǎn)線繼續(xù)向前流動(dòng),或者才能讓其它的機(jī)器進(jìn)入生產(chǎn)線開展工作,但是如果沒有及時(shí)移開它,結(jié)果可能會(huì)導(dǎo)致這個(gè)手臂、產(chǎn)品或者部分生產(chǎn)線被破壞。(我們假設(shè)這樣的事故會(huì)使整條生產(chǎn)線停下來,造成大量時(shí)間和成本的損失。)

盡管C# Windows CE提供很好的實(shí)時(shí)性支持,但.NET精簡框架卻不是一個(gè)理想的構(gòu)建實(shí)時(shí)組件的編程接口。這是因?yàn)檫\(yùn)行時(shí)引擎可能會(huì)出現(xiàn)各種時(shí)間間隔不等的延時(shí)。例如,在使用運(yùn)行時(shí)編譯執(zhí)行(JIT,just-in-time)編譯器(本章后面會(huì)有介紹)裝載代碼和將代碼編譯為本地機(jī)器代碼時(shí),都會(huì)出現(xiàn)延時(shí)。

托管代碼與非托管代碼

.NET精簡框架代碼有時(shí)也可作為托管代碼,但對應(yīng)用程序程序員來說,它最重要的特性是由運(yùn)行時(shí)來管理數(shù)據(jù),特別是已清除的數(shù)據(jù)。盡管代碼也可以被托管,但是必須確保其中沒有錯(cuò)誤的內(nèi)存指針。本書第3章將重點(diǎn)介紹這個(gè)問題。

相反,Windows API代碼有時(shí)也可作為非托管代碼。這是一種以.NET為中心處理問題的方法,盡管我們有時(shí)使用如本地代碼和Win32代碼之類不同的術(shù)語來指代它。

C# Windows CE遇到的問題,另外,當(dāng)垃圾回收器工作的時(shí)候也可能出現(xiàn)延時(shí),因?yàn)檫@時(shí)所有在托管代碼中運(yùn)行的線程都被凍結(jié)了,然而非托管代碼則不會(huì)。因此,.NET精簡框架托管代碼可以支持實(shí)時(shí)線程16,但是多數(shù)情況下實(shí)時(shí)線程是通過調(diào)用Win32的DLL在非托管代碼中實(shí)現(xiàn)的。當(dāng)然,以上只是一些基本原則,如果是一個(gè)很快的CPU,系統(tǒng)負(fù)荷也很輕,在托管代碼中運(yùn)行的線程也能提供足夠快的響應(yīng)以滿足這個(gè)系統(tǒng)實(shí)時(shí)性支持的要求。對于定時(shí)和性能的關(guān)系,我們需要“三思而后行”(measure twice and cut once),測量所需性能的次數(shù)往往跟錯(cuò)失實(shí)時(shí)性底限的程度成正比。

以上是“C# Windows CE特點(diǎn)之實(shí)時(shí)性的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI