freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

windows程序運行于linux系統(tǒng)的技術(shù)-在線瀏覽

2024-09-09 04:46本頁面
  

【正文】 內(nèi)核服務(wù)。Linux內(nèi)核采用單體內(nèi)核結(jié)構(gòu),由一大段內(nèi)核代碼實現(xiàn)各個內(nèi)核組件的功能。為了避免內(nèi)核過于龐大臃腫,Linux在單體內(nèi)核結(jié)構(gòu)中引入了動態(tài)可加載模塊機制,可以根據(jù)實際需要動態(tài)地加載和卸載內(nèi)核模塊,從而節(jié)省內(nèi)存空間。圖1 Linux操作系統(tǒng)體系結(jié)構(gòu)框圖相比之下,Windows采用高度模塊化的改進的(擴大的)微內(nèi)核結(jié)構(gòu),如圖2所示(以Windows2000為例)。操作系統(tǒng)中至關(guān)重要的代碼運行在核心態(tài),而用戶程序運行在用戶態(tài)。圖2 Windows操作系統(tǒng)體系結(jié)構(gòu)框圖Windows核心態(tài)組件包括:核心、執(zhí)行體、設(shè)備驅(qū)動、硬件抽象層和圖形引擎,它們運行在統(tǒng)一的核心地址空間中。服務(wù)進程和用戶應(yīng)用程序不能直接調(diào)用操作系統(tǒng)服務(wù),必須通過子系統(tǒng)動態(tài)鏈接庫與系統(tǒng)交互。從以上對比可以看出,Linux與Windows在體系結(jié)構(gòu)上雖有相似之處,但差別很大。為了使Windows程序能夠運行于Linux系統(tǒng),需要解決許多技術(shù)難題。Windows設(shè)備驅(qū)動框架的主體是Windows內(nèi)核中的I/O子系統(tǒng)。NDIS的功能是由Windows的一個內(nèi)核動態(tài)安裝模塊ndis. sys實現(xiàn)的??梢?只要將ndis. sys從Windows內(nèi)核移植到Linux內(nèi)核,就可以在Linux系統(tǒng)上運行Windows的網(wǎng)絡(luò)接口設(shè)備驅(qū)動程序。在Linux內(nèi)核中,協(xié)議棧是在socket內(nèi)部實現(xiàn)的,而socket有著一套獨立的系統(tǒng)調(diào)用。由于這個NDIS設(shè)備驅(qū)動框架并不是Window設(shè)備驅(qū)動的主體框架,所以只有Windows的網(wǎng)絡(luò)接口設(shè)備驅(qū)動程序才能借此運行于Linux系統(tǒng)上,而且僅供Linux系統(tǒng)上運行的Linux應(yīng)用軟件而不是Windows應(yīng)用軟件使用。三、Windows應(yīng)用程序運行于Linux系統(tǒng)與Windows設(shè)備驅(qū)動程序不同,Windows應(yīng)用程序是在Windows用戶空間運行的軟件,并且使用Windows應(yīng)用程序編程接口(ApplicationProgramming Interface,API)來完成其任務(wù)。針對這一問題,國內(nèi)外許多Linux工作團隊進行了多年的研究和嘗試,制定出許多技術(shù)方案,取得了一些技術(shù)成果。實際應(yīng)用中可采取逆向逐步代碼重構(gòu)法或逆向總體代碼重構(gòu)法。然后根據(jù)對照表將源代碼中與目標(biāo)環(huán)境有差異的變量、程序結(jié)構(gòu)、函數(shù)接口和數(shù)據(jù)庫接口等內(nèi)容進行轉(zhuǎn)換。逆向總體代碼重構(gòu)法則是從Windows應(yīng)用程序的總體結(jié)構(gòu)入手,遵循以下步驟實施代碼重構(gòu):逆向設(shè)計Windows應(yīng)用軟件的邏輯流程及各模塊的功能與接口。在Linux平臺上采用特定編程技術(shù)對應(yīng)用軟件進行二次開發(fā)。代碼重構(gòu)技術(shù)雖然能夠?qū)崿F(xiàn)Windows應(yīng)用程序向Linux平臺的移植,但其前提是取得Windows應(yīng)用程序的源代碼,所以不適合于眾多的非開源的商業(yè)軟件的移植工作。3. 2 軟件虛擬機技術(shù)該技術(shù)允許在一臺計算機上同時運行多個異構(gòu)操作系統(tǒng)(即虛擬機) ,通過在計算機硬件系統(tǒng)和客戶操作系統(tǒng)之間引入虛擬機監(jiān)視器(VirtualMachineMonitor,VMM)軟件(可能運行于宿主操作系統(tǒng)之上,也可能直接運行在硬件平臺上) ,來阻隔客戶操作系統(tǒng)和硬件系統(tǒng)之間的直接通信。利用這種技術(shù),以Linux為宿主操作系統(tǒng),以Windows為客戶操作系統(tǒng),就可以在Linux系統(tǒng)上構(gòu)建Windows虛擬機來運行Windows程序。采用虛擬機技術(shù)雖然可以在Linux系統(tǒng)上運行Windows程序,但系統(tǒng)性能往往得不到保證,而且這種技術(shù)不能擺脫Windows操作系統(tǒng),因而對于拓寬Linux的桌面應(yīng)用領(lǐng)域作用不大。開源軟件Wine (Wine Is Not an Emulator, 或WINEmulator) 就是基于這種技術(shù)方案實現(xiàn)的,其系統(tǒng)結(jié)構(gòu)如圖3所示。Wine服務(wù)進程之所以能夠利用進程間的socket和pipe通信機制為Windows客戶進程提供其正確運行所必需的WindowsAPI調(diào)用,是由于它為Windows客戶進程提供了遠地過程調(diào)用(Remote ProcedureCall,RPC) ,即跨進程的系統(tǒng)調(diào)用,其實質(zhì)就是把Windows客戶進程和動態(tài)鏈接庫原本對Windows內(nèi)核所做的系統(tǒng)調(diào)用翻譯成對Linux內(nèi)核的系統(tǒng)調(diào)用。圖3 Wine的系統(tǒng)結(jié)構(gòu)框圖在本質(zhì)上,Wine服務(wù)進程是在用戶空間運行的Linux進程,但它參與了對Windows進程及相關(guān)資源的管理與服務(wù),成為所有Windows進程的核心與樞紐。這樣做的原因在于Linux內(nèi)核與Windows內(nèi)核之間存在先天的差異,兩者提供不同的系統(tǒng)調(diào)用界面。由于Wine是一款免費授權(quán)的開源軟件,可以在不修改Linux內(nèi)核源代碼的前提下運行非開源的Windows二進制可執(zhí)行程序,不同于一般的虛擬機,也不存在基于CPU機器指令仿真的性能損失問題,所以受到了廣大用戶的青睞,為Linux拓展桌面應(yīng)用領(lǐng)域做出了重要貢獻。在實踐中,Wine已能仿真大部分WindowsAPI和運行大部分Windows應(yīng)用程序,但仍存在許多問題:Wine本身需要不斷改進,以仿真更多的WindowsAPI,包括一些未被文檔化的API函數(shù)。許多系統(tǒng)調(diào)用是粒度很大的“宏”操作,有時難以高效地實現(xiàn)某些微妙的機制,難以貼切地翻譯另一組系統(tǒng)調(diào)用,以至于Windows應(yīng)用程序在Linux上運行時會出現(xiàn)不同于在Windows上運行的效果。某些特殊的Windows應(yīng)用程序是繞過WindowsAPI實現(xiàn)的,因而無法借助Wine投入Linux環(huán)境中運行。3. 4 跨平臺編譯運行Windows應(yīng)用程序可以借助工具軟件的支持,在Linux系統(tǒng)中編譯運行。這種方法的技術(shù)原理和API仿真的技術(shù)原理是相通的,所以這種方法也具有前面所述的關(guān)于API仿真的技術(shù)局限性,這種局限性只能通過修改Linux內(nèi)核加以克服。為此,需要對Linux內(nèi)
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1