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

義馬ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
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)先級(jí)(C# Windows CE一直都支持多線程編程)和嵌套的中斷請(qǐng)求。C# Windows CE對(duì)實(shí)時(shí)性的支持在C# Windows CE Platform Builder的文檔中定義如下:
◆保證高優(yōu)先級(jí)線程安排的上限,但僅對(duì)所有排隊(duì)線程中優(yōu)先級(jí)***的線程有效。
◆在執(zhí)行高優(yōu)先級(jí)中斷服務(wù)程序(ISR,interrupt service routine)時(shí)保證延時(shí)的上限。在內(nèi)核中專門設(shè)置了一些空間用于臨時(shí)關(guān)閉中斷服務(wù)。
◆確保對(duì)調(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精簡(jiǎn)框架卻不是一個(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精簡(jiǎn)框架代碼有時(shí)也可作為托管代碼,但對(duì)應(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精簡(jiǎn)框架托管代碼可以支持實(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í)性支持的要求。對(duì)于定時(shí)和性能的關(guān)系,我們需要“三思而后行”(measure twice and cut once),測(cè)量所需性能的次數(shù)往往跟錯(cuò)失實(shí)時(shí)性底限的程度成正比。
C# Windows CE特點(diǎn)之實(shí)時(shí)性的相關(guān)內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# Windows CE特點(diǎn)之實(shí)時(shí)性有所幫助。
網(wǎng)頁標(biāo)題:C#WindowsCE特點(diǎn)之實(shí)時(shí)性
網(wǎng)頁地址:http://m.fisionsoft.com.cn/article/djjoppc.html


咨詢
建站咨詢
