判斷所接收的信號為intmode=l時,則解析模塊2111通知初始化模塊2112對虛擬網(wǎng)卡402初始化;當(dāng)if ()語句判斷所接收的信號為int H1de=O時,則解析模塊2111通知初始化模塊2112對物理網(wǎng)卡401初始化。
[0068]還應(yīng)理解,初始化模塊2112,根據(jù)物理網(wǎng)卡401和虛擬網(wǎng)卡402的切換順序不同,分別實現(xiàn)對虛擬網(wǎng)卡402的初始化和物理網(wǎng)卡401的初始化。這種初始化的構(gòu)成方式有多種,下面將結(jié)合圖3和圖4對本發(fā)明實例的實現(xiàn)方式進行說明。
[0069]如圖4所示,圖3中的初始化模塊2112包括:
[0070]虛擬網(wǎng)卡初始化模塊21121,用于向管理操作系統(tǒng)100創(chuàng)建的虛擬網(wǎng)卡驅(qū)動后端130發(fā)送共享緩沖區(qū)120的地址信息,使所述虛擬網(wǎng)卡驅(qū)動后端130能夠根據(jù)所述地址信息調(diào)用物理網(wǎng)卡401所占用的共享緩沖區(qū)120 ;
[0071]物理網(wǎng)卡初始化模塊21122,用于根據(jù)所述共享緩沖區(qū)120的地址信息設(shè)置待切換物理網(wǎng)卡401的DMA控制器,使待切換物理網(wǎng)卡401的DMA控制器能夠調(diào)用虛擬網(wǎng)卡402所占用的共享緩沖區(qū)120。
[0072]下面將結(jié)合圖3和圖4對虛擬網(wǎng)卡初始化模塊21121工作方式和連接方式進行詳細說明。
[0073]首先,虛擬網(wǎng)卡初始化模塊21121,通過負載操作系統(tǒng)資源管理模塊212向管理操作系統(tǒng)資源管理模塊110詢問管理操作系統(tǒng)100是否完成虛擬網(wǎng)卡驅(qū)動后端130的創(chuàng)建工作。虛擬化驅(qū)動后端130的創(chuàng)建過程為:管理操作系統(tǒng)100在決定進行物理網(wǎng)卡401向虛擬網(wǎng)卡402切換后,在其內(nèi)部設(shè)置虛擬網(wǎng)卡驅(qū)動后端130,并使其與管理操作系統(tǒng)的網(wǎng)橋120相連。
[0074]其次,如果管理操作系統(tǒng)資源管理模塊110向虛擬網(wǎng)卡初始化模塊21121反饋虛擬網(wǎng)卡驅(qū)動后端130創(chuàng)建完成,虛擬網(wǎng)卡初始化模塊21121向虛擬網(wǎng)卡驅(qū)動后端130發(fā)送共享緩沖區(qū)的地址。應(yīng)注意,虛擬網(wǎng)卡初始化模塊21121和虛擬網(wǎng)卡驅(qū)動后端130的連接方式是:虛擬網(wǎng)卡初始化模塊21121與負載操作系統(tǒng)資源管理模塊212之間通過內(nèi)部通信機制連接;管理操作系統(tǒng)資源管理模塊110與虛擬網(wǎng)卡驅(qū)動后端130之間也通過內(nèi)部通信機制連接;管理操作系統(tǒng)資源管理模塊110和負載操作系統(tǒng)資源管理模塊212可以通過現(xiàn)有的IPI技術(shù)實現(xiàn)??傊诒景l(fā)明實例中,模塊間通信方式均是現(xiàn)有技術(shù),在本實例中不再作詳細的規(guī)定和說明。
[0075]最后,虛擬網(wǎng)卡驅(qū)動后端130在接收到共享緩沖區(qū)120的地址信息后,將映射共享緩沖區(qū)120的頁表,以便虛擬網(wǎng)卡402在啟動后能使處理器直接通過虛擬網(wǎng)卡驅(qū)動后端130調(diào)用和讀取物理網(wǎng)卡401所占用的共享緩沖區(qū)120信息。
[0076]舉例,虛擬網(wǎng)卡初始化模塊21121向虛擬網(wǎng)卡驅(qū)動后端130發(fā)送共享緩沖區(qū)的地址,根據(jù)共享緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)不同,所傳輸?shù)牡刂纷兞恳膊煌?。。例如,?dāng)共享緩沖區(qū)120的接收和發(fā)送數(shù)據(jù)結(jié)構(gòu)采用兩個環(huán)形鏈表形式,那么共享緩沖區(qū)的地址可以用8個全局變量來表示。所述這8個全局變量已經(jīng)在上文圖2對共享緩沖區(qū)120的描述中進行了具體介紹,此處不再贅述。虛擬網(wǎng)卡驅(qū)動后端130在接收到這些地址信息后,可以通過內(nèi)存映射函數(shù)如Win32環(huán)境下的CreateFileMapping函數(shù),將地址信息映射到對應(yīng)的物理內(nèi)存地址上。這樣,虛擬網(wǎng)卡在正式啟動后,處理器就可以直接通過虛擬網(wǎng)卡驅(qū)動后端130調(diào)用和讀取到物理網(wǎng)卡所占用的共享緩沖區(qū)信息。
[0077]總之,本發(fā)明的實施例通過建立虛擬網(wǎng)卡的后端并映射共享緩沖區(qū)的地址使虛擬網(wǎng)卡在啟動后能夠直接讀取共享緩沖區(qū)內(nèi)的信息,從而保證了共享內(nèi)存的數(shù)據(jù)不會因為物理網(wǎng)卡到虛擬網(wǎng)卡的切換而丟失。
[0078]應(yīng)注意,虛擬網(wǎng)卡驅(qū)動后端130映射共享緩沖區(qū)120的頁表完成后,所述雙模式網(wǎng)卡驅(qū)動110中的初始化模塊220就結(jié)束了虛擬網(wǎng)卡初始化過程。應(yīng)注意,虛擬網(wǎng)卡驅(qū)動后端130僅映射共享緩沖區(qū)頁表而不應(yīng)打開虛擬網(wǎng)卡驅(qū)動后端130的運行,以免管理操作系統(tǒng)的虛擬網(wǎng)卡驅(qū)動后端130和負載操作系統(tǒng)的物理網(wǎng)卡401同時對共享緩沖區(qū)120進行讀取而造成共享緩沖區(qū)120內(nèi)部數(shù)據(jù)的混亂。
[0079]同樣,下面將結(jié)合圖3和圖4對物理網(wǎng)卡初始化模塊21122工作方式和連接方式進行詳細說明。
[0080]首先,物理網(wǎng)卡初始化模塊21122向管理操作系統(tǒng)資源管理模塊110詢問待切換物理網(wǎng)卡401的配置信息,如物理網(wǎng)卡的媒體訪問控制地址(MAC地址),接口參數(shù)等配置信肩、O
[0081]其次,在接收到物理網(wǎng)卡401的配置信息后,物理網(wǎng)卡初始化模塊21122在其內(nèi)部啟動與物理網(wǎng)卡配置信息相匹配的物理網(wǎng)卡初始化函數(shù)。應(yīng)注意,與通常的物理網(wǎng)卡驅(qū)動啟動物理網(wǎng)卡方式不同,該物理網(wǎng)卡初始化函數(shù)不是操作系統(tǒng)根據(jù)配置信息創(chuàng)建的,而是物理網(wǎng)卡初始化模塊21122在本身已有的物理網(wǎng)卡初始化函數(shù)中根據(jù)物理網(wǎng)卡配置信息匹配選擇的。
[0082]最后,該初始化函數(shù)設(shè)置物理網(wǎng)卡中的DMA寄存器器,使該寄存器能夠調(diào)用虛擬網(wǎng)卡402所占用的共享緩沖區(qū)120。具體而言,在這一步驟中,物理網(wǎng)卡初始化函數(shù)通過虛擬網(wǎng)卡驅(qū)動前端獲得正在傳輸數(shù)據(jù)的共享緩沖區(qū)120地址。該地址根據(jù)共享緩沖區(qū)120的數(shù)據(jù)結(jié)構(gòu)不同而不同,例如當(dāng)共享緩沖區(qū)120的接收和發(fā)送數(shù)據(jù)結(jié)構(gòu)采用兩個環(huán)形鏈表形式,那么共享緩沖區(qū)的地址可以用8個全局變量來表示。所述這8個全局變量已經(jīng)在上文圖2對共享緩沖區(qū)120的描述中進行了具體介紹,此處不再贅述。物理網(wǎng)卡初始化函數(shù)在接收到這些地址信息后,設(shè)置DMA控制器的寄存器指向共享緩沖區(qū)的內(nèi)存起始地址,之后再設(shè)置其它一些必要的工作參數(shù)。這樣,物理卡在正式啟動后,處理器就可以直接通過物理網(wǎng)卡驅(qū)動調(diào)用和讀取到虛擬網(wǎng)卡所占用的共享緩沖區(qū)信息。
[0083]總之,本發(fā)明的實施例通過物理網(wǎng)卡初始化模塊21122選擇相應(yīng)的物理網(wǎng)卡初始化函數(shù),并利用該函數(shù)建立物理網(wǎng)卡與共享內(nèi)存的直接調(diào)用關(guān)系,使物理網(wǎng)卡401在啟動后能夠直接讀取共享緩沖區(qū)120內(nèi)的信息,保證了共享內(nèi)存的數(shù)據(jù)不會因為虛擬網(wǎng)卡到物理網(wǎng)卡的切換而丟失。
[0084]應(yīng)注意,物理網(wǎng)卡的DMA寄存器指向雙模式網(wǎng)卡使用的收發(fā)緩沖區(qū)的物理地址后,物理網(wǎng)卡初始化模塊21122對物理網(wǎng)卡的初始化過程完畢。應(yīng)注意,物理網(wǎng)卡的DMA寄存器指向共享緩沖區(qū)120的物理地址即可,而不應(yīng)打開物理網(wǎng)卡驅(qū)動的運行,以免該物理網(wǎng)卡401和負載操作系統(tǒng)正在運行的虛擬網(wǎng)卡402同時對共享緩沖區(qū)120進行讀取而造成共享緩沖區(qū)120內(nèi)部數(shù)據(jù)的混亂。
[0085]在解析模塊210和初始化模塊220完成對切換信號的解析和對源網(wǎng)卡和目標網(wǎng)卡的初始化后,源網(wǎng)卡繼續(xù)工作的同時目標網(wǎng)卡已經(jīng)指向了源網(wǎng)卡對應(yīng)的物理內(nèi)存緩沖區(qū)。如進一步實現(xiàn)源網(wǎng)卡到目標網(wǎng)卡的完整切換,則需要在雙模式網(wǎng)卡驅(qū)動的初始化模塊220完成工作后,停止源網(wǎng)卡驅(qū)動并啟動目標網(wǎng)卡驅(qū)動。這種雙模式網(wǎng)卡驅(qū)動停止源網(wǎng)卡驅(qū)動并啟動目標網(wǎng)卡驅(qū)動的方式有多種,下面將結(jié)合圖5對雙模式網(wǎng)卡驅(qū)動110停止源網(wǎng)卡驅(qū)動并啟動目標網(wǎng)卡驅(qū)動的實現(xiàn)進行說明。
[0086]如圖5所示,雙模式網(wǎng)卡驅(qū)動211還包括:
[0087]執(zhí)行模塊2113,用于:
[0088]當(dāng)所述解析模塊210確定源網(wǎng)卡410的類型為物理網(wǎng)卡401且所述目標網(wǎng)卡420的類型為虛擬網(wǎng)卡402且所述初始化模塊2112完成初始化后,關(guān)閉物理網(wǎng)卡驅(qū)動并啟動虛擬網(wǎng)卡驅(qū)動前端和后端130 ;
[0089]當(dāng)所述解析模塊210確定所述源網(wǎng)卡的類型為虛擬網(wǎng)卡402且所述目標網(wǎng)卡的類型為物理網(wǎng)卡401且所述初始化模塊110完成初始化后,關(guān)閉虛擬網(wǎng)卡驅(qū)動前端和后端130并開啟物理網(wǎng)卡驅(qū)動。
[0090]應(yīng)理解,解析模塊2111在接收到初始化模塊所發(fā)出的初始化完成信息后,執(zhí)行模塊2113將根據(jù)物理網(wǎng)卡和虛擬網(wǎng)卡切換順序的不同而調(diào)用不同的執(zhí)行函數(shù)以關(guān)閉源網(wǎng)卡并開啟目標網(wǎng)卡。
[0091]具體而言,所述執(zhí)行模塊一般包括控制函數(shù)和接收發(fā)操作函數(shù)組成??刂坪瘮?shù)可以采用mod函數(shù),該函數(shù)接收來自于初始化模塊2112發(fā)送的整形變量int mode。在物理網(wǎng)卡切換為虛擬網(wǎng)卡的情況下,mod函數(shù)在接收到整形變量int mode后,停止虛擬網(wǎng)卡接收和發(fā)送操作函數(shù)(如shared_memory_rx, shared_memory_rx)并調(diào)用物理網(wǎng)卡接收和發(fā)送操作函數(shù)(如pnet_rx,pnet_tx);在虛擬網(wǎng)卡切換為物理網(wǎng)卡的情況下,mod函數(shù)停止物理網(wǎng)卡接收和發(fā)送操作函數(shù)(如pnet_rx, pnet_tx)并調(diào)用虛擬網(wǎng)卡接收和發(fā)送操作函數(shù)(如shared_memory_rx, shared_memory_rx)。雙模式網(wǎng)卡執(zhí)行模塊2113利用mod函數(shù)對操作函數(shù)進行調(diào)用,控制相應(yīng)物理網(wǎng)卡驅(qū)動和虛擬網(wǎng)卡驅(qū)動的開啟和關(guān)閉。應(yīng)注意,在虛擬網(wǎng)卡接收和發(fā)送操作函數(shù)控制虛擬網(wǎng)卡驅(qū)動中,該函數(shù)不僅要控制負載操作系統(tǒng)中虛擬網(wǎng)卡驅(qū)動前端的開啟和關(guān)閉,同時該函數(shù)要將切換信號傳遞給管理操作系統(tǒng)控制的虛擬網(wǎng)卡驅(qū)動后端130,以便后端開啟或關(guān)閉其自身操作函數(shù)。在執(zhí)行模塊2113開啟和關(guān)閉相應(yīng)網(wǎng)卡驅(qū)動后,整個源網(wǎng)卡向目標網(wǎng)卡的切換過程就執(zhí)行完畢。其中,當(dāng)源網(wǎng)卡和目標網(wǎng)卡分別為物理網(wǎng)卡401和虛擬網(wǎng)卡402時,在切換完成后,物理網(wǎng)卡401停止對共享緩沖區(qū)120的讀寫;虛擬網(wǎng)驅(qū)動前后端開啟對共享緩沖區(qū)120的讀寫。反之,當(dāng)源網(wǎng)卡和目標網(wǎng)卡分別為虛擬網(wǎng)卡402和物理網(wǎng)卡401時,在切換完成后,虛擬網(wǎng)前后端停止對共享緩沖區(qū)120的讀寫;物理網(wǎng)卡開啟對共享緩沖區(qū)120的讀寫。
[0092]上文中結(jié)合圖2至圖5,從系統(tǒng)的角度介紹了多操作系統(tǒng)中源網(wǎng)卡與目標網(wǎng)卡的切換系統(tǒng),下面將結(jié)合圖6至圖9,從切換方法入手介紹多操作系統(tǒng)中源網(wǎng)卡與目標網(wǎng)卡的切換方法。
[0093]圖6示出了根據(jù)本發(fā)明實施例的多操作系統(tǒng)中源網(wǎng)卡與目標網(wǎng)卡的切換方法的示意性流程圖,該方法包括:
[0094]S610,多操作系統(tǒng)中負載操作系統(tǒng)200的雙模式網(wǎng)卡驅(qū)動211根據(jù)多操作系統(tǒng)中管理操作系統(tǒng)100發(fā)送的網(wǎng)卡切換信號將目標網(wǎng)卡420進行初始化,使目標網(wǎng)卡420能夠使用源網(wǎng)卡410占用的共享緩沖區(qū)120 ;
[0095]S620,目標網(wǎng)卡420初始化完成后,雙模式網(wǎng)