一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

采用VXD技術(shù)實(shí)現實(shí)的通信

時(shí)間:2024-07-08 05:35:37 理工畢業(yè)論文 我要投稿
  • 相關(guān)推薦

采用VXD技術(shù)實(shí)現實(shí)的通信

摘要:討論Windows虛擬設備驅動(dòng)(VXD)技術(shù),并采用此項技術(shù)示范性地做出應用于PC串口實(shí)時(shí)通信的虛擬驅動(dòng)程序,找到一種可以在PC中實(shí)現實(shí)時(shí)通信的途徑。

引言

在微軟的視窗操作系統中,系統內核掌管所有的應用程序,通過(guò)獨特的任務(wù)調度算法實(shí)現CPU的分時(shí)多任務(wù)處理方式。多任務(wù)處理對大多數用戶(hù)可能是件好事,但是對那些想把實(shí)時(shí)通信建立在Windows操作系統上的特殊用戶(hù)來(lái)說(shuō),操作界面的圖形化并不比MS-DOS的單任務(wù)更具吸引力。在視窗操作系統里可以進(jìn)行實(shí)時(shí)通信和控制碼?答案是:VXD技術(shù)可以幫我們在獲取友好的人機界面的同時(shí)還擁有很強的實(shí)時(shí)性。

1 VXD技術(shù)解析

VXD技術(shù)可追溯到Windows3.1,它的引入就是要讓操作系統實(shí)現多工以及硬件資源的共享。為了支持多個(gè)MS-DOS任務(wù)同時(shí)執行,Windows98讓每個(gè)MS-DOS應用程序在各自的虛擬機(VM)上運行,各自互不相干;而所有的Widnows應用程序卻都在一個(gè)虛擬機上運行。圖1所示的結構框圖很好地說(shuō)明了Windows98的整體架構。

圖1中,由眾多的VXD組成系統級代碼處于最底層。其中,處于中心地位的是一名為VMM32的VXD,它負責協(xié)調和管理所有的VXDs。其它VXDs則通過(guò)消息機制(這個(gè)消息機制由VMM32.VXD來(lái)維護)彼此聯(lián)系。由所有VXDs開(kāi)放出的服務(wù)接口(API)組成了一個(gè)服務(wù)網(wǎng),它們彼此通過(guò)合作的方式,提供Windows98的系統底層驅動(dòng)服務(wù)。

從以上Windows98系統架構可以看出,要想在視窗平臺下獲取很強的實(shí)時(shí)性,僅靠提升應用程序線(xiàn)程優(yōu)先級的方法是不夠的。因為Win32應用程序代碼屬于Ring3級,而VXD代碼則屬于Ring0級;采用VXD撰寫(xiě)的實(shí)時(shí)通信程序可以完全不受代碼限制,可以直接對硬件進(jìn)行操作。VXD的這個(gè)特點(diǎn)正是實(shí)時(shí)通信建立所必須的。

設計實(shí)時(shí)通信的VXD前,先解釋以下幾個(gè)問(wèn)題:

①VMM32使用VPICD.VXD虛擬化每個(gè)硬件和軟件中斷。VMM32為每個(gè)虛擬機(VM)維護一個(gè)IDT結構,當中斷發(fā)生時(shí),CPU先保護中斷現場(chǎng),然后經(jīng)由當前VM的IDT把這個(gè)中斷引導至相應的中斷處理程式。

中斷的虛擬化,使我們有機會(huì )給每個(gè)中斷提供新的中斷處理函數,并可以讓多個(gè)硬件共享同一個(gè)中斷號。VPICD.VXD為我們提供這些服務(wù)。

②VMM有兩個(gè)調度器,用以在多個(gè)線(xiàn)程和VMs之間實(shí)現搶占式多工。主調度器負責選定下一個(gè)將被執行的線(xiàn)程。這個(gè)選擇可以是一個(gè),也可以是多個(gè)。然后,主調度器把選擇結果送給所謂的時(shí)間片調度器,并由后者完成各個(gè)應用程序間的時(shí)間片分配。調度器也時(shí)應用程序經(jīng)由呼叫Win32線(xiàn)程優(yōu)先調整API(如SetThreadPriority和SetPriorityClass等)做出回應。當中斷發(fā)生時(shí),VMM32自動(dòng)提升中斷處理函數所在VM之優(yōu)先級,保證中斷處理函數能及時(shí)被執行。

③VXD和Win32應用程序可直接通信。Win32應用程序可通過(guò)一個(gè)系統API(DevicelOControl(…))來(lái)呼叫位于底層的VXD為其服務(wù)。在呼叫VXD前,首先必須調用CreatFile(…)這個(gè)API加載該VXD(如果該VXD是一個(gè)靜態(tài)VXD,則不用加載)。所有的呼叫動(dòng)作其實(shí)都通過(guò)VMM32完成。VXD也可以通過(guò)消息方式和位于上層的Win32應用程序通信。She11.VXD為所有希望以消息機制和Win32應用程序通信的VXD提供了這一服務(wù)。

以上是編寫(xiě)一個(gè)串口通信驅動(dòng)需要的系統層面知識。對于Windows底層的了解。

2 用VXD實(shí)現一個(gè)實(shí)時(shí)串口通信驅動(dòng)

接下來(lái)用VXD技術(shù)實(shí)現一個(gè)實(shí)時(shí)串行通信的驅動(dòng)。這個(gè)VXD是一個(gè)動(dòng)態(tài)(Dynamic)VXD,當它的服務(wù)被呼叫時(shí),VMM32會(huì )動(dòng)態(tài)加載這個(gè)VXD。作者采用的工具是C 98DDK。當然也可以使用其它的工具,如MASM6.11(或更高版本)、VtoolsD。用C搭配DDK完成VXD構建的好處是,可以使用C語(yǔ)言完成絕大部分的程序,程序比較容易閱讀和維護。

用C來(lái)實(shí)現一個(gè)VXD驅動(dòng),需要準備如下條件:一個(gè).ASM的匯編語(yǔ)言接口文件(在其中定義VXD要處理的系統消息和輸出API),一個(gè).C的函數實(shí)現文件(在其中完成自己函數實(shí)體),一個(gè).DEF的定義文件(在其中定義VXD中各個(gè)段的別名并匯成一個(gè)DDB)和一個(gè).MAK檔(用來(lái)編譯并連接生成VXD,可有可無(wú))。在這里,僅給出用C實(shí)現的函數檔。至于其它的文件,可以從本文所列的參考書(shū)目或其它文獻中找到相關(guān)文檔的說(shuō)明。

這個(gè)串口通信驅動(dòng)程序的功能是:實(shí)時(shí)送出一個(gè)Byte的數據,實(shí)時(shí)接收一個(gè)Byte的數據。作為演示之用,并沒(méi)有加入其它代碼。該VXD驅動(dòng)主要由如下3個(gè)系統消息(由VMM32來(lái)維護和管理)處理函數組成,其代碼如下:

(1)OnSysDynamicDeviceInit()函數

BOOL OnSysDynamicDeviceInit()

{ //OnSysDynamicDeviceInit

irqhandle=VPICD_Virtualize_IRQ((DWORD)(

【采用VXD技術(shù)實(shí)現實(shí)的通信】相關(guān)文章:

超高壓采用超長(cháng)站距光纖通信技術(shù)03-20

通信技術(shù)論文11-21

網(wǎng)絡(luò )通信技術(shù)的作用03-30

通信技術(shù)與計算機技術(shù)融合技術(shù)11-20

通信技術(shù)論文(15篇)06-04

通信技術(shù)論文15篇06-04

光纖通信技術(shù)的發(fā)展初探12-08

交通信息采集技術(shù)論文02-12

現代光纖通信技術(shù)論文11-10

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看