專利名稱:互操作系統(tǒng)的設計方法
技術領域:
本發(fā)明屬于計算機操作系統(tǒng)技術領域,尤其是涉及不同操作系統(tǒng)上運行的應用軟件在一個操作系統(tǒng)上進行互操作的設計方法。
背景技術:
目前計算機普遍安裝的操作系統(tǒng)是Windows操作系統(tǒng)和Linux操作系統(tǒng)。盡管Windows操作系統(tǒng)的使用比Linux操作系統(tǒng)普遍,但是由于Linux操作系統(tǒng)為開源代碼,因此在Linux操作系統(tǒng)上開發(fā)的應用軟件越來越多,安裝Linux操作系統(tǒng)也在逐漸增多。由于在Windows上開發(fā)的應用軟件與在Linux上開發(fā)的應用軟件的格式和構架不同,因此在Windows操作系統(tǒng)上不能運行Linux上的軟件,同樣Linux操作系統(tǒng)上也不能運行Windows上的應用軟件。
人們希望在計算機中只安裝一個操作系統(tǒng)就能夠運行在Windows和Linux不同操作系統(tǒng)上運行的應用軟件,為此人們做了大量的研究工作。由于Windows操作系統(tǒng)不開放源代碼,因此人們寄希望于在Linux操作系統(tǒng)上能夠運行Windows操作系統(tǒng)上的應用軟件。出于這種目的,人們基于Linux操作系統(tǒng)做了大量的研究工作,目前有許多開發(fā)者試圖在Linux操作系統(tǒng)上運行Windows的應用軟件,或開發(fā)Windows和Linux可以互相操作的系統(tǒng)。例如Wine、Ndis Wrapper、KWin32、React OS等基于不同思想在不使用Windows操作系統(tǒng)同樣可以運行Windows操作系統(tǒng)上的應用軟件,這些工作都取得了較大的成效,目前兩種最流行的操作系統(tǒng)Windows和Linux之間的互操作已成為人們關注的熱點。最近微軟與Novell公司的合作就是希望將來Windows上能夠運行Linux應用軟件,或Linux上能夠運行Windows應用軟件。對這兩種操作系統(tǒng)對象互操作的研究推動了互操作系統(tǒng)研究的發(fā)展。由于Windows操作系統(tǒng)不是開源的,所以我們無法對Windows操作系統(tǒng)本身進行修改以實現(xiàn)與Linux操作系統(tǒng)對象的互操作,因而只能在Linux操作系統(tǒng)上做研究工作,這種設計思路簡單而快捷。但是無論是對Linux內(nèi)核進行修改,還是在Linux操作系統(tǒng)上增加互操作組件,都會產(chǎn)生一些局限性,而且有些問題是致命的。例如,操作系統(tǒng)的內(nèi)核差異、體系結構差異、以及異地操作系統(tǒng)對象在本地操作系統(tǒng)環(huán)境運行的穩(wěn)定性等問題的解決都受到了原操作系統(tǒng)框架的限制,所以有必要對互操作系統(tǒng)的整體架構和各個模塊重新進行設計。本發(fā)明的方法實現(xiàn)的Space互操作系統(tǒng)就是這樣一個全新的互操作系統(tǒng)。當然,Space互操作系統(tǒng)也借鑒了其它的一些開源項目的研發(fā)成果,這些開源項目既包括互操作組件,又包括開源操作系統(tǒng)的內(nèi)核,但是其設計方法以及所實現(xiàn)互操作系統(tǒng)的結構是新穎的。
基于用戶層面的Wine在不涉及內(nèi)核的情況下就能夠運行一些簡單的Windows程序,盡管運行速度較慢,也不穩(wěn)定,且較大的程序(Microsoft word等)不能很好地運行,但是它為人們不安裝Windows操作系統(tǒng)就能運行其上的應用軟件帶來了希望。由于Wine所存在的問題,接下來開發(fā)者在Linux內(nèi)核上下工夫,基于Wine開發(fā)了Kernel-Win32,相當于在Linux內(nèi)核中運行Windows應用軟件的一個模塊,使運行Windows應用軟件更加合理,速度更快。盡管Kernel-Win32目前還不能夠較好地運行Windows的應用程序,但為人們提供了很好的思想方法和具有重要參考價值的技術及方案。
現(xiàn)在許多開發(fā)者基于Linux操作系統(tǒng)在Wine和Kernel-Win32之間開發(fā)了一些具有商業(yè)價值的軟件,例如Cross Over X等一些工具軟件安裝在Linux操作系統(tǒng)中也能夠運行一些Windows上的應用軟件。這些方法實現(xiàn)的互操作都是采用的繼承模型結構,這種結構是以某個操作系統(tǒng)的內(nèi)核為根,其它的操作系統(tǒng)服務器繼承于這個內(nèi)核,使用其雙親節(jié)點(服務器或內(nèi)核)提供的系統(tǒng)調(diào)用等接口。實際上所有運行于某種平臺上的虛擬機軟件都是屬于這種模型結構。這種模型結構對不同操作系統(tǒng)存在內(nèi)核態(tài)進程支持的不足和效率問題,導致所實現(xiàn)的互操作功能不好、運行不穩(wěn)定。盡管這種模型結構存在運行效率不高、穩(wěn)定性差,但是所做工作和取得的成果還是非常有價值和實際意義的。
更有意義的是React OS,它是一個具有開放源代碼的兼容內(nèi)核的操作系統(tǒng),該操作系統(tǒng)試圖將Linux和Windows的應用軟件都能運行。由于React OS是用C語言重新編寫了一套兼容內(nèi)核的操作系統(tǒng),相當于Linux加Windows兩個操作系統(tǒng),因此開發(fā)周期長,達到商業(yè)程度也很難。我國的浙大網(wǎng)新科技有限公司投資和主持的開源項目Linux兼容內(nèi)核,是將Linux的內(nèi)核進行修改,主要是在Linux內(nèi)核中添加一些Windows內(nèi)核態(tài)運行機制,以實現(xiàn)一個互操作內(nèi)核。這種修改內(nèi)核的方法實現(xiàn)的互操作是采用的高內(nèi)聚模型結構,這種模型結構能夠比較好的完成不同操作系統(tǒng)的內(nèi)核態(tài)功能,對用戶態(tài)進程的調(diào)度和運行也能得到比較高的運行效率。由于內(nèi)核可以直接處理CPU中斷,讀寫I/O端口,所以能對不同操作系統(tǒng)的驅(qū)動程序有比較好的支持。這種模型結構的不足之處在于當進行不同操作系統(tǒng)的內(nèi)核服務很多時,互操作系統(tǒng)的內(nèi)核有時會過于龐大;而且有些操作系統(tǒng)的服務不宜在內(nèi)核中實現(xiàn),這會大大限制互操作系統(tǒng)的功能,因此難以將互操作系統(tǒng)做到實用化。目前在世界范圍內(nèi)有很多開發(fā)者利用不同的方式、方法開發(fā)一些開源的互操作系統(tǒng),使其能夠運行Windows環(huán)境下的應用軟件。但是這些人都是分散的自由開發(fā)者,力量不集中,難以形成規(guī)模。
對于目前不使用Windows操作系統(tǒng)也能夠運行Windows上的應用軟件所取得的成果,本人進行了一一嘗試,發(fā)現(xiàn)這些應用軟件安裝在Linux操作系統(tǒng)上,僅能運行一些小的Windows應用軟件和一些簡單的Windows游戲軟件。對于較大的應用軟件例如微軟的Office以及Photoshop等不是運行不起來就是運行速度很慢,無法達到實用的程度。
發(fā)明內(nèi)容
針對目前計算機操作系統(tǒng)所存在的互操作性不足的問題,在現(xiàn)有研究成果的基礎上,經(jīng)過認真分析和研究,為解決操作系統(tǒng)的互操作性,設計并實現(xiàn)了一個新的方法——多接口單內(nèi)核模型結構。即通過單一內(nèi)核實現(xiàn)與不同操作系統(tǒng)的服務模塊進行多進程的交互來運行不同操作系統(tǒng)上的應用程序。
本發(fā)明采取的技術方案是互操作系統(tǒng)的設計方法,其技術特點是發(fā)明了多接口單內(nèi)核模型結構,在新研制的內(nèi)核基礎上,建立Linux和Windows并列的內(nèi)核服務機制;在運行應用程序時先根據(jù)讀文件頭,檢查該文件的類型或格式區(qū)分該應用程序是哪種操作系統(tǒng)上的應用程序,然后調(diào)用相應的內(nèi)核服務。利用該發(fā)明的設計方法,基于開源代碼重新設計、集成、開發(fā)新框架結構的互操作系統(tǒng),能夠較好地運行Windows和Linux操作系統(tǒng)上的應用軟件,該方法是解決單一操作系統(tǒng)進行互操作問題的關鍵技術。
Linux的內(nèi)核具有開放的源代碼,因此Linux的內(nèi)核服務模塊容易解決。由于Windows操作系統(tǒng)內(nèi)核不公開,因此對于Windows的內(nèi)核服務模塊的實現(xiàn)就不是容易的事了。然而為了更好地推廣和使用Windows操作系統(tǒng),希望人們在Windows上開發(fā)更多的應用軟件,因此為開發(fā)Windows應用軟件積極提供接口,利用這些Windows操作系統(tǒng)的接口,同樣可以創(chuàng)建和開發(fā)Windows的內(nèi)核服務機制。盡管基于Windows操作系統(tǒng)實現(xiàn)互操作系統(tǒng)是不可能的,但是利用Windows操作系統(tǒng)的248個常規(guī)的系統(tǒng)調(diào)用和639個圖形界面(GUI)系統(tǒng)調(diào)用等一系列為開發(fā)Windows應用程序的接口,能夠很好地實現(xiàn)Windows內(nèi)核服務模塊,在新開發(fā)的互操作系統(tǒng)內(nèi)核的支持下,同樣可以很好地運行Windows應用軟件。
開源項目Wine就是利用Windows為開發(fā)其應用程序所提供的接口,基于Linux操作系統(tǒng)運行Windows的應用軟件。Wine所實現(xiàn)的互操作不理想的原因主要是單純利用Windows操作系統(tǒng)所提供的接口,并建立在Linux操作系統(tǒng)的內(nèi)核上,而不是將Windows和Linux采取并列結構的方法。由于Wine實現(xiàn)的互操作所采取的設計方法是繼承模型結構,因此導致其在運行較大的Windows應用軟件時與Linux操作系統(tǒng)發(fā)生沖突,使Linux操作系統(tǒng)上利用Wine不能很好地運行Windows應用軟件。在借鑒Wine、NDIS Wrapper、KWin32、React OS等前人在這方面的工作經(jīng)驗和已有的工作基礎,經(jīng)過多年的實驗和開發(fā),開創(chuàng)了新的設計方法,發(fā)明了一種新結構的操作系統(tǒng),并較好地實現(xiàn)了不同操作系統(tǒng)上應用軟件的互操作。
實際上,現(xiàn)代操作系統(tǒng)(如Windows和Linux)由于其分時、共享、異步的特性使操作系統(tǒng)間實現(xiàn)互操作變得非常復雜。一個互操作系統(tǒng)要實現(xiàn)不同操作系統(tǒng)對象的互操作需要解決以下問題第一,互操作系統(tǒng)采用的體系結構。
第二,為不同應用程序在互操作系統(tǒng)上提供運行環(huán)境。
第三,在互操作系統(tǒng)中為不同操作系統(tǒng)中的內(nèi)核進程以及驅(qū)動程序提供支持。
第四,設計互操作系統(tǒng)來支持不同操作系統(tǒng)中的進程、線程管理機制和存儲器管理機制。
第五,設計文件系統(tǒng)和數(shù)據(jù)庫引擎以實現(xiàn)不同操作系統(tǒng)中的文件和數(shù)據(jù)互操作。
第六,不同操作系統(tǒng)中特有的機制在互操作系統(tǒng)中得到很好的支持。
第七,保證不同操作系統(tǒng)對象在互操作系統(tǒng)中的運行效率和穩(wěn)定性。
目前上述問題都已解決,其中最關鍵的技術在于第一個問題互操作系統(tǒng)采用的體系結構,即采用怎樣的設計方法來實現(xiàn)互操作系統(tǒng),是該發(fā)明的內(nèi)容,因此該發(fā)明主要闡述互操作系統(tǒng)的設計方法,其他內(nèi)容只作為輔助內(nèi)容提一下。該發(fā)明方法是多接口單內(nèi)核模型結構,不同于目前已有的繼承模型結構和高內(nèi)聚模型結構。該方法是在研究不同操作系統(tǒng)的特點的基礎上,首先設計一個兼容不同操作系統(tǒng)的互操作系統(tǒng)框架和各個模塊,然后再分別實現(xiàn),重新開發(fā)一個新的互操作系統(tǒng)。而現(xiàn)有的互操作系統(tǒng)設計方法是在已有操作系統(tǒng)的基礎上進行修改,或是增加一些互操作組件,使已有的操作系統(tǒng)能夠操作不同操作系統(tǒng)上的對象。由于現(xiàn)有的方法實現(xiàn)的互操作不理想,才進行研究和改進,經(jīng)過不斷的努力,發(fā)明出了一種新的結構設計方法,并利用該方法所實現(xiàn)的互操作效果很好。
這種新發(fā)明的方法所實現(xiàn)的互操作系統(tǒng)與目前操作系統(tǒng)不同的是在應用軟件執(zhí)行時,首先用戶進程服務層根據(jù)可執(zhí)行文件的文件頭區(qū)分出是Windows還是Linux格式的應用程序,然后分別調(diào)用相應的系統(tǒng)調(diào)用。在調(diào)用這種新設計結構的互操作系統(tǒng)內(nèi)核前,先進入內(nèi)核服務,不同格式的應用程序調(diào)用不同的內(nèi)核服務。這種新方法實現(xiàn)的互操作系統(tǒng)內(nèi)核為不同的內(nèi)核服務開設了不同的進程,并向Windows Kernel-Server和Linux Kernel-Server提供一致的內(nèi)核服務接口,同時解決外圍設備操作一致化處理的問題。
本發(fā)明實際有益效果是1、互操作系統(tǒng)不僅有力地促進了不同系統(tǒng)和設備之間的兼容,而且節(jié)約了程序遷移、資源遷移和技術遷移的成本;2、極大地方便了用戶對計算機的使用,只安裝一個操作系統(tǒng)就可以運行兩個或兩個以上操作系統(tǒng)上的應用軟件;3、降低使用成本,不需要安裝Windows操作系統(tǒng)就能夠運行Windows應用軟件,避免了操作系統(tǒng)的盜版和侵權。
圖1互操作系統(tǒng)的不同設計方法框圖(a為繼承模型結構;b為高內(nèi)聚模型結構;c為該發(fā)明的多接口單內(nèi)核模型結構)。
圖2具體實現(xiàn)的Space互操作系統(tǒng)設計框圖。
圖3應用程序系統(tǒng)調(diào)用流程框圖。
圖4在Space互操作系統(tǒng)上同時運行的Windows和Linux不同操作系統(tǒng)上的Word和Windows上運行的Photoshop應用軟件的截屏圖。
圖5在Space互操作系統(tǒng)上同時運行的IE和Firefox兩種操作系統(tǒng)上運行的網(wǎng)絡瀏覽器和Linux操作系統(tǒng)上運行的播放器截屏圖。
具體實施例方式
下面結合附圖和具體實施實例對本發(fā)明作進一步說明。
互操作系統(tǒng)是通過一定的體系架構和互操作機制,使原本屬于兩種或更多種操作系統(tǒng)中的資源和可執(zhí)行模塊可以相互訪問,并在必要時能相互協(xié)作完成某些功能的操作系統(tǒng)。本發(fā)明方法具體實現(xiàn)的互操作系統(tǒng)在此稱為Space互操作系統(tǒng),簡稱Space,以便于闡述和理解。
利用該發(fā)明實現(xiàn)的Space互操作系統(tǒng)之所以能夠很好地運行Windows和Linux上的應用程序,主要是認真分析、研究前人在此方面所做的工作和已取得的成果,發(fā)現(xiàn)解決互操作問題的關鍵在于互操作結構的設計方法,并總結出目前在互操作方面所采取的設計方法歸于兩類一類是繼承模型結構,如圖1(a)所示;另一類是高內(nèi)聚模型結構,如圖1(b)所示。由于這兩種方法在互操作方面都存在一定的缺陷,因此改變了研究思路,發(fā)明了多接口單內(nèi)核模型結構的設計方法,如圖1(c)所示。
在具體實施時,基于多接口單內(nèi)核模型結構的設計方法設計出Space互操作系統(tǒng)的框架結構,Space總體設計框架結構如圖2所示。該結構圖是Space互操作系統(tǒng)整體結構,其中內(nèi)核與X Server的進程交互為三維窗口界面服務和管理,是操作系統(tǒng)組成部分,與互操作無直接的關系。Space互操作的實現(xiàn)主要在于Space內(nèi)核與Windows內(nèi)核服務和Linux內(nèi)核服務兩個并列的內(nèi)核服務進程,其設計方法是根據(jù)新設計、集成、開發(fā)的內(nèi)核來開發(fā)不同操作系統(tǒng)的內(nèi)核服務模塊,并將不同的內(nèi)核服務模塊并列等同對待。并不是以現(xiàn)有某個操作系統(tǒng)為主,來構建另一個操作系統(tǒng)的內(nèi)核服務來實現(xiàn)的互操作,而是基于一個新內(nèi)核同時構建不同操作系統(tǒng)的內(nèi)核服務。在用戶一般進程與系統(tǒng)調(diào)用之間增加了用戶進程服務層,這是目前其他操作系統(tǒng)不具有、也不需要的功能,主要用于區(qū)分不同操作系統(tǒng)上的應用程序,從而實現(xiàn)系統(tǒng)調(diào)用不同的系統(tǒng)內(nèi)核服務。這就是該發(fā)明的多接口單模型結構的設計方法。
利用該發(fā)明方法所實現(xiàn)的Space互操作系統(tǒng)中,首先創(chuàng)建進程初始的執(zhí)行環(huán)境由exec( )完成。具體說,exec系統(tǒng)調(diào)用完成下述工作(1)分析路徑名并訪問可執(zhí)行文件;(2)驗證用戶具有執(zhí)行該文件的權限;(3)讀文件頭,檢查該文件的類型或格式;(4)將exec的參數(shù)和環(huán)境變量復制到內(nèi)核空間;(5)釋放從父進程中繼承來的全部用戶空間;(6)將所有信號處理函數(shù)設置為缺省動作;(7)對原有的已打開的文件進行處理;(8)確定進程在開始執(zhí)行新的目標代碼時具有的權限;(9)根據(jù)可執(zhí)行文件的格式,創(chuàng)建新的地址空間;(10)建立用戶態(tài)堆棧,將參數(shù)和環(huán)境變量復制到新的用戶堆棧;(11)初始化硬件上下文。大多數(shù)寄存器被設置為0,程序指針計數(shù)器指向程序入口點,堆棧指針計數(shù)器指向新的用戶態(tài)堆棧。
對于動態(tài)鏈接文件,內(nèi)核除了為可執(zhí)行文件本身創(chuàng)建地址空間,還要為對應的動態(tài)鏈接庫解釋程序創(chuàng)建地址空間;在建立用戶態(tài)堆棧時,也要在堆棧中加入動態(tài)鏈接庫解釋程序所需要的信息;最后,程序指針計數(shù)器被設置為指向動態(tài)鏈接庫解釋程序的入口。從而,當系統(tǒng)返回到用戶空間后,將首先執(zhí)行動態(tài)鏈接庫解釋程序,完成動態(tài)庫的加載工作之后,再將控制權交給應用程序。
對于不同操作系統(tǒng)上的應用程序,Space互操作系統(tǒng)首先要識別其格式,從文件中取得必需的信息,為其建立用戶空間;另外,應用程序在執(zhí)行的過程中,從用戶態(tài)堆棧取得某些信息,Space互操作系統(tǒng)按照不同操作系統(tǒng)的方式為其應用程序創(chuàng)建用戶態(tài)堆棧。圖2中的用戶進程服務層是通常操作系統(tǒng)不具有的模塊,該模塊的內(nèi)容就是在創(chuàng)建初始執(zhí)行環(huán)境的過程中對文件格式進行識別以及用戶態(tài)堆棧的建立。
對文件的識別是根據(jù)目標文件的頭部實現(xiàn)的,目標文件開始處是一個ELF頭部(ELFHeader),用來描述整個文件的組織。其中,節(jié)區(qū)部分包含鏈接視圖的大量信息指令、數(shù)據(jù)、符號表、重定位信息等等。PE文件格式被組織為一個線性的數(shù)據(jù)流,它由一個MS-DOS頭部開始,接著是一個是模式的程序殘余以及一個PE文件標志,這之后緊接著PE文件頭和可選頭部。這些之后是所有的段頭部,段頭部之后跟隨著所有的段實體。文件的結束處是一些其它的區(qū)域,其中是一些混雜的信息,包括重分配信息、符號表信息、行號信息以及字符串表數(shù)據(jù)。
無論是Linux還是Windows,在文件系統(tǒng)的目錄項中都沒有關于文件格式或文件類型的說明,所以只能采取在文件的實際內(nèi)容in前面加上頭部的方法來表示。其中,ELF結構體是Linux的ELF格式映像的頭部數(shù)據(jù)結構;macho結構體是針對MACH操作系統(tǒng)的;而mz是DOS以及Windows格式的一級頭部。用戶進程服務層模塊代碼中首先通過lseek( )的SetFilePointer( )把目標文件的讀/寫指針指向文件的開頭,再按binary_ypeMODULE_GetBinaryType函數(shù)中Union的大小讀出,就可以根據(jù)幾種頭部、特別是Linux和Windows的頭部將目標文件區(qū)分開,然后再進行相應的不同系統(tǒng)調(diào)用。
Space互操作系統(tǒng)主要通過系統(tǒng)調(diào)用向應用程序提供服務,發(fā)出系統(tǒng)調(diào)用是一個與機器硬件相關、較底層的過程。因此,應用程序通常不會直接發(fā)出系統(tǒng)調(diào)用,而是通過API向庫函數(shù)請求服務。對于需要操作系統(tǒng)內(nèi)核支持的服務,即系統(tǒng)調(diào)用,在內(nèi)核的支持下完成。整個操作系統(tǒng)向應用程序提供的服務層次如圖3所示。
在圖3的服務層次的結構中,是從兩個方面實現(xiàn)了不同操作系統(tǒng)內(nèi)核服務的(圖2中的Windows和Linux的K-Server模塊)。一方面,在Space互操作系統(tǒng)內(nèi)核中做修改,使Space內(nèi)核理解來自不同應用程序的服務請求,從而實現(xiàn)與不同操作系統(tǒng)上的應用程序交互;另一方面,從庫函數(shù)本身入手,對不同操作系統(tǒng)上的應用程序所使用的庫函數(shù)進行改造,使其理解Space內(nèi)核提供的服務和服務方式。當不同操作系統(tǒng)上的應用程序被加載時,通過該程序的文件頭部的區(qū)分使其與該系統(tǒng)調(diào)用接口相關聯(lián);在Space操作系統(tǒng)內(nèi)核針對不同操作系統(tǒng)的應用程序及不同的操作系統(tǒng)的系統(tǒng)調(diào)用接口實現(xiàn)系統(tǒng)調(diào)用,對其中的系統(tǒng)調(diào)用服務進程在不同操作系統(tǒng)內(nèi)核服務上進行實現(xiàn)。不同操作系統(tǒng)上的應用程序在Space互操作系統(tǒng)上運行時,仍被鏈接到原始對應的操作系統(tǒng)函數(shù)庫。Space采用的是不同操作系統(tǒng)上的應用程序通過不同的服務模塊與內(nèi)核交互的系統(tǒng)調(diào)用策略,來運行各種應用程序。在Space內(nèi)核與應用程序之間,加入了針對不同操作系統(tǒng)上應用程序的服務層,該服務層對應用程序與Space內(nèi)核之間的交互進行映射、轉(zhuǎn)換,并提供不同操作系統(tǒng)本身的軟件管理機制,從而實現(xiàn)了不同操作系統(tǒng)上的應用程序在Space上的運行。
圖2中的Windows和Linux的K-Server內(nèi)核服務模塊是由應用程序加載、選擇內(nèi)核支持模式、Windows/Linux應用程序進程及Space內(nèi)核交互模塊等3部分組成。當應用程序在用戶進程服務層的識別與加載模塊完成對應用程序的識別和加載后,內(nèi)核服務模塊為應用程序開啟專門的本地內(nèi)核服務通道,并建立初始執(zhí)行環(huán)境;應用程序進程與Space內(nèi)核交互模塊完成應用程序?qū)?nèi)核的系統(tǒng)調(diào)用,并將對象操作、文件操作、進程調(diào)度、信號量機制等功能移植到本地Space系統(tǒng)內(nèi)核上來。
在Linux服務模塊(Linux K-Server)的設計中,主要通過服務層和Space內(nèi)核提供的文件系統(tǒng)、進程管理、軟件管理、系統(tǒng)調(diào)用、可加載模塊等。作為Linux進程的支撐機制,Linux服務模塊不僅提供了應用程序與Space內(nèi)核之間的Linux系統(tǒng)調(diào)用接口,而且還提供了通信管道的建立等其它內(nèi)核態(tài)功能。
針對Windows操作系統(tǒng)對象的復雜性,Windows應用程序的服務模塊(Windows K-Server)增加了圖形、圖像與窗口顯示模塊、組件對象模型支持模塊、Direct X支持模塊和多媒體設備驅(qū)動鏈接模塊。Windows服務模塊比Linux服務模塊要復雜的多,它提供的功能有以下七個方面一、為了支持Dos(.COM/.EXE)、Win16(NE)和Win32(PE)等可執(zhí)行文件格式,Windows服務模塊實現(xiàn)了不同版本的Windows可執(zhí)行文件格式的識別和加載,并分別定義了不同文件格式所使用的地址空間、API集合、CPU權限級和線程支持模式等內(nèi)容。
二、為了支持不同的Windows體系結構,Windows服務模塊提供了Windows9x和WindowsNT兩類不同的運行環(huán)境,當然,這兩類運行環(huán)境實現(xiàn)的模塊在語義上會有所交叉,所以在服務模塊中,Space采用了統(tǒng)一兩者的服務模式,并通過開關變量對應用程序使用的Windows體系結構進行控制。
三、Windows服務模塊提供了豐富的動態(tài)鏈接庫,并實現(xiàn)了所需的系統(tǒng)調(diào)用。
四、為了給Windows應用程序提供圖形圖像支持和窗口服務,Space將一部分圖形顯示和處理的系統(tǒng)調(diào)用遷移到內(nèi)核中,并采用了雙緩沖接口供應用程序調(diào)用,使Windows服務模塊實現(xiàn)了與X Server的通信,并提高刷新率和圖形顯示效果。
五、Windows服務模塊提供了組件對象模型(COM)的調(diào)用接口和編程接口,這使用戶在Space下不僅可以操作COM,也可以開發(fā)COM。
六、為了使Windows應用程序使用其它的外圍設備,Windows服務模塊實現(xiàn)了Space內(nèi)核函數(shù)調(diào)用接口。這樣,Space系統(tǒng)的驅(qū)動程序和Linux驅(qū)動程序都可以被Windows應用程序所用。此外,通過這種方式,Space還可以向Windows應用程序提供用于數(shù)據(jù)訪問的數(shù)據(jù)引擎功能。
七、Windows服務模塊提供了一個虛擬的Windows文件系統(tǒng)、一個Windows注冊表和所需要的Windows應用程序管理工具,增加了應用程序在Space系統(tǒng)中運行的穩(wěn)定性和易用性。
通過對有關應用程序操作相關的對象機制、信號量機制、文件操作和進程管理等的研究,利用該發(fā)明的設計方法實現(xiàn)的Space互操作系統(tǒng),不僅能夠很好運行Linux操作系統(tǒng)上的應用軟件,而且同時還可以很好地安裝和運行Windows操作系統(tǒng)上的應用軟件,包括IE網(wǎng)絡瀏覽器;Microsoft Office 2003全集;Microsoft Studio.net;Adobe Photoshop 7.0等辦公軟件和開發(fā)工具等。如圖4為同時運行Microsoft Word和Adobe Photoshop這些Windows操作系統(tǒng)上運行的應用軟件及Linux操作系統(tǒng)上運行的Open Office Word軟件的實際截屏圖。圖5為同時運行Linux操作系統(tǒng)上的DVD播放器和Fire fox網(wǎng)絡瀏覽器及Windows操作系統(tǒng)上運行的IE網(wǎng)絡瀏覽器應用軟件的實際截屏圖。
利用該發(fā)明的設計方法實現(xiàn)的Space互操作系統(tǒng)安裝在CPU為1.7GHz;內(nèi)存為512M的計算機上進行實際測試、應用中,將Windows和Linux操作系統(tǒng)上的多達16個不同的應用軟件包括游戲等同時啟動運行,都可以正常運行,未出現(xiàn)死機和運行速度不正常減慢的情況。目前利用該發(fā)明設計、集成、開發(fā)的Space互操作系統(tǒng)能夠達到很好的實用化程度。
當前,隨著計算機行業(yè)的不斷發(fā)展,互操作已經(jīng)成為通信、計算機、設備制造等行業(yè)的一個炙手可熱的研究領域。由于互操作可以打破單一操作系統(tǒng)的壟斷,將會積極促進計算機技術的發(fā)展。由此可見,互操作技術不僅節(jié)約了成本,并具有更好的實用性和推廣應用前景,而且能夠帶來巨大的經(jīng)濟效益。
權利要求
1.互操作系統(tǒng)的設計方法,是在一個操作系統(tǒng)上同時可以運行兩種或多種操作系統(tǒng)上不同格式應用軟件的設計方法,其特征是多接口單內(nèi)核模型結構,從應用程序的一般用戶進程到具有區(qū)分不同應用程序的用戶進程服務層模塊,經(jīng)過不同的系統(tǒng)調(diào)用服務于一個互操作系統(tǒng)內(nèi)核上并列建立的不同操作系統(tǒng)內(nèi)核服務模塊。
2.根據(jù)權利要求1所述的互操作系統(tǒng)的設計方法,其特征是用戶進程服務層模塊根據(jù)文件頭部將文件區(qū)分后,分別通向相應的系統(tǒng)調(diào)用。
3.根據(jù)權利要求1所述的互操作系統(tǒng)的設計方法,其特征是內(nèi)核服務模塊是由應用程序加載、選擇內(nèi)核支持模式、應用程序進程及互操作系統(tǒng)內(nèi)核交互模塊等三部分組成。
4.根據(jù)權利要求1和權利要求3所述的互操作系統(tǒng)的設計方法,其特征是內(nèi)核服務模塊為應用程序開啟專門的本地內(nèi)核服務通道,并建立初始執(zhí)行環(huán)境;應用程序進程與互操作系統(tǒng)內(nèi)核交互模塊完成應用程序?qū)?nèi)核的系統(tǒng)調(diào)用,并將對象操作、文件操作、進程調(diào)度、信號量機制等功能移植到互操作系統(tǒng)內(nèi)核中。
5.根據(jù)權利要求1所述的互操作系統(tǒng)的設計方法,其特征是在一個互操作系統(tǒng)內(nèi)核上建立兩個或多個不同操作系統(tǒng)內(nèi)核服務的進程。
全文摘要
本發(fā)明屬于計算機操作系統(tǒng)技術領域,尤其是涉及多個操作系統(tǒng)上運行的應用軟件在一個操作系統(tǒng)上進行互操作運行的設計方法。該發(fā)明的設計方法是采用了多接口單內(nèi)核模型結構,在新研制的內(nèi)核基礎上,建立不同操作系統(tǒng)并列的內(nèi)核服務機制;在運行應用程序時先根據(jù)讀文件頭檢查該文件的類型或格式來區(qū)分應用程序是哪種操作系統(tǒng)上的應用程序,然后調(diào)用相應的內(nèi)核服務,解決了單一操作系統(tǒng)進行互操作問題。利用該方法基于開源代碼重新設計、集成、開發(fā)出的Space互操作系統(tǒng),能夠很好地同時運行Windows和Linux操作系統(tǒng)上的應用軟件。這種互操作技術的實現(xiàn)不僅節(jié)約了成本,而且具有更好的實用性和推廣應用價值。
文檔編號G06F9/46GK1945531SQ20061013847
公開日2007年4月11日 申請日期2006年11月16日 優(yōu)先權日2006年11月16日
發(fā)明者劉金剛 申請人:劉金剛