<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Windows CE陷阱調度機制詳解

Windows CE陷阱調度機制詳解

作者: 時(shí)間:2012-06-26 來(lái)源:網(wǎng)絡(luò ) 收藏

一.什么是?

本文引用地址:http://dyxdggzs.com/article/148857.htm

一般來(lái)說(shuō),嵌入式操作系統主要由兩部分組成:運行在核心態(tài)的內核系統和運行在用戶(hù)態(tài)的環(huán)境子系統組成。因此, 系統被劃分為兩層:執行體和內核。而內核始終運行在核心態(tài)下,除了中斷服務(wù)例程(Interrupt Service Routine,ISR),正在運行的線(xiàn)程是不能搶先內核的。為此, 為執行體、內核、設備驅動(dòng)程序等核心態(tài)提供了一些基礎系統。

(1) 系統

Windows CE系統機制包括、執行體對象管理器、各種同步對象以及本地過(guò)程調用等。一般來(lái)說(shuō),可以分成兩種對象類(lèi)型:執行體對象和內核對象。內核以?xún)群藢ο蟮男问浇o執行體提供其它的同步機構,稱(chēng)為“程序對象”。包括進(jìn)程、線(xiàn)程、事件、信號量、互斥體、可等待的定時(shí)器、文件等同步對象。每個(gè)同步對象有兩種狀態(tài):“有信號”,“無(wú)信號”。內核還提供一組嚴格定義的、可預測的、使操作系統得以工作的基礎設施,這為執行體的高級組件提供了必須的低級功能接口。內核除了執行線(xiàn)程調度外,幾乎將所有的策略制定留給了執行體。同時(shí),Windows CE運行中的CPU 會(huì )支持兩個(gè)級別的權限,其中較高級別的權限稱(chēng)為內核態(tài),較低級別的權限稱(chēng)為用戶(hù)態(tài)。

(2)調度(Trap Dispatching)機制

Windows CE的基本機制之一是陷阱調度,屬于內核功能。包括中斷調度、延遲過(guò)程調用(DPC)、異步過(guò)程調用(APC)、異常調度、系統服務(wù)調度。

陷阱處理程序是Windows CE用來(lái)處理意外事件的硬件機制。當異?;蛑袛喟l(fā)生時(shí),硬件或軟件就能檢測到它們,并捕獲正在執行的線(xiàn)程,CPU會(huì )從用戶(hù)態(tài)切換到核心態(tài),將暫停正在處理的事情,把控制轉交給內核的陷阱處理程序。同時(shí),該模塊還能檢測異常和中斷的類(lèi)型,并將控制交給處理相應情況的代碼。因此,陷阱調度機制是當異?;蛘咧袛喟l(fā)生時(shí),能夠保存當前線(xiàn)程狀態(tài)并轉向相應處理的一種系統機制。

在Windows CE系統里,內核通過(guò)以下方式來(lái)分辨中斷和異常:中斷是一個(gè)異步事件(可以在任何時(shí)間產(chǎn)生),不管處理器在執行什么程序。典型的中斷由I/O設備、時(shí)鐘、定時(shí)器產(chǎn)生,必要時(shí)可以屏蔽中斷。而異常是一個(gè)同步事件,它是由正在執行的特定代碼產(chǎn)生的,重新執行相同的代碼會(huì )重復產(chǎn)生特定的異常。比如訪(fǎng)問(wèn)非法內存、除數為0等。系統把系統服務(wù)也作為異常來(lái)處理。

二.陷阱調度核心:中斷機制

在Windows CE陷阱調度中最重要之一是中斷機制。當陷阱處理程序被調用時(shí),將在記錄機器狀態(tài)時(shí)暫時(shí)禁用中斷,它會(huì )創(chuàng )建一個(gè)陷阱幀(Trap Frame)來(lái)保存被中斷線(xiàn)程運行現場(chǎng),并在合適的時(shí)候恢復線(xiàn)程執行時(shí)使用。陷阱幀通常是完整的線(xiàn)程描述表的子集。

(1)中斷調度

不同的CPU中斷機制是不一樣的,Windows CE的中斷調度程序會(huì )將硬件中斷級映射到由操作系統識別的中斷請求級別(Interrupt ReQuest Level,IRQL)的標準集上。這與線(xiàn)程的調度優(yōu)先級是完全不同的含義,調度優(yōu)先級是線(xiàn)程的屬性,而IRQL則是中斷源的屬性。因此,每個(gè)CPU都具有一個(gè)IRQL設置,其值隨著(zhù)操作系統代碼的執行而改變。內核定義了一組可移植的IRQL,如果CPU具有與中斷相關(guān)的特性,則可以增加IRQL。IRQL按優(yōu)先級排列中斷,并進(jìn)行中斷服務(wù),較高優(yōu)先級的中斷服務(wù)可以搶占較低優(yōu)先級的中斷服務(wù)。

一般來(lái)說(shuō),IRQL從高往低到設備都是為硬件中斷保留,而DPC和APC級中斷是內核和設備驅動(dòng)器產(chǎn)生的軟件中斷。低優(yōu)先級(也稱(chēng)作被動(dòng)級)實(shí)際上并不是真正的中斷級,在該級上執行的是普通線(xiàn)程,并允許發(fā)生所有的中斷。IRQL設置決定了每個(gè)處理器可以接收的中斷。當核心態(tài)線(xiàn)程運行時(shí),可以提高或降低處理器的IRQL來(lái)屏蔽一些事件。

如果中斷源的IRQL高于當前中斷設置,則中斷可以中斷該處理器;如果中斷源的IRQL等于或低于當前中斷設置,則中斷將被封鎖或“屏蔽”,直到一個(gè)正在執行的線(xiàn)程降低了IRQL。當產(chǎn)生中斷時(shí),陷阱處理程序能提高處理器的IRQL直到與中斷源所指定的IRQL相同,這可以保證服務(wù)于該中斷的處理器不會(huì )被同級或較低級的中斷搶先。被屏蔽的中斷將被另一個(gè)處理器處理或阻擋,直到IRQL降低。因為改變處理器的IRQL對操作系統具有如此重要的影響,所以它只能在核心態(tài)下改變。

(2)硬件中斷

最典型的硬件中斷是由I/O設備產(chǎn)生的,當這些設備需要服務(wù)時(shí),必須通知處理器。中斷驅動(dòng)的設備允許操作系統通過(guò)將指令執行與I/O操作重疊進(jìn)行,以獲得處理器的最大利用率。處理器啟動(dòng)發(fā)往設備的I/O傳送或來(lái)自設備的I/O傳送,然后在設備完成傳送時(shí)執行其它線(xiàn)程。當設備執行完后,中斷處理器就能獲得服務(wù)。定點(diǎn)設備、打印機、鍵盤(pán)、磁盤(pán)驅動(dòng)器以及網(wǎng)卡通常都是中斷驅動(dòng)的。

大多數硬件中斷允許設備驅動(dòng)程序注冊其設備的ISR,包含內核所需的設備ISR與中斷特定級相聯(lián)系的所有信息,包括ISR的地址、設備中斷的IRQL以及與ISR相聯(lián)系的內核入口。當中斷對象被初始化后,稱(chēng)為調度代碼的一些匯編語(yǔ)言代碼指令就會(huì )被存儲在對象中。當中斷發(fā)生時(shí),這些代碼會(huì )調用真正的中斷調度程序,并傳遞一個(gè)指向中斷對象的指針。中斷對象包含了第二個(gè)調度程序例程所需要的信息,以便定位和正確地調用設備驅動(dòng)程序提供的ISR。需要兩步過(guò)程的原因是自硬件完成初始調度后,沒(méi)有方法可以在初始調度上傳遞一個(gè)指向中斷對象的指針。

(3)軟件中斷

軟件也可以產(chǎn)生中斷,包括:?jiǎn)?dòng)線(xiàn)程調度、處理定時(shí)器到時(shí)、在特定線(xiàn)程的描述表中異步執行一個(gè)過(guò)程,以及支持異步I/O操作等。例如,內核可以發(fā)布啟動(dòng)線(xiàn)程調度的軟件中斷,內核也可以禁用中斷以使處理器不被中斷,但這種情況很少出現,只在處理中斷或調度異常的關(guān)鍵時(shí)刻才這樣做。軟件中斷由中斷調度程序的子模塊響應,它確定中斷源并將控制轉交給處理中斷的外部例程(ISR),或轉交給響應中斷的內核例程。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 機制 詳解 調度 陷阱 CE Windows

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>