999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Windows 到Linux 應(yīng)用遷移

2020-08-05 07:00:04胡瑩瑩譚光林
數(shù)字通信世界 2020年7期
關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)

胡瑩瑩,譚光林

(國(guó)家無(wú)線電監(jiān)測(cè)中心,北京 100037)

0 引言

Windows 和Linux 操作系統(tǒng)的系統(tǒng)架構(gòu)差異較大,應(yīng)用系統(tǒng)開(kāi)發(fā)商往往會(huì)基于某一種操作系統(tǒng)進(jìn)行軟件的開(kāi)發(fā)。由于Windows 在個(gè)人桌面市場(chǎng)上的高占有率,目前市場(chǎng)上使用的應(yīng)用系統(tǒng)大部分是在Windows 系統(tǒng)上開(kāi)發(fā),然而Windows 系統(tǒng)是美國(guó)微軟公司的產(chǎn)品,中國(guó)無(wú)法獲知其源代碼,這對(duì)于開(kāi)發(fā)自主可控的國(guó)產(chǎn)軟件存在局限性。由于我國(guó)市場(chǎng)上正在使用的應(yīng)用眾多,重新開(kāi)發(fā)這些應(yīng)用的Linux 版本,將耗費(fèi)大量的人力和物力資源,通過(guò)將現(xiàn)有的Windows 版本的應(yīng)用遷移至Linux 系統(tǒng)上,是一個(gè)可行的思路。本文主要介紹應(yīng)用遷移的主要技術(shù),應(yīng)用的遷移分為軟件程序的遷移和數(shù)據(jù)的遷移兩大部分,下面就相關(guān)技術(shù)分別作詳細(xì)闡述。

1 軟件程序遷移

1.1 軟件虛擬機(jī)技術(shù)

虛擬機(jī)技術(shù)通過(guò)虛擬計(jì)算機(jī)的BIOS 和I/O 接口,進(jìn)而通過(guò)軟件方式為客戶(hù)操作系統(tǒng)提供一個(gè)虛擬的硬件平臺(tái)。即通過(guò)在現(xiàn)有計(jì)算機(jī)上添加一個(gè)叫做虛擬機(jī)監(jiān)控(Virtual Machine Monitor, VMM)的軟件從而實(shí)現(xiàn)對(duì)系統(tǒng)的虛擬化。就目前來(lái)講,VMM 模型主要可以分為監(jiān)控模型、主機(jī)模型和混合模型。監(jiān)控模型就是VMM 直接運(yùn)行在裸機(jī)上,而沒(méi)有操作系統(tǒng)的參入,VMM 通過(guò)截獲所有客戶(hù)操作系統(tǒng)指令,對(duì)系統(tǒng)資源進(jìn)行訪問(wèn),從而實(shí)現(xiàn)對(duì)系統(tǒng)資源的虛擬化。在主機(jī)模型中,VMM 主要運(yùn)行在主機(jī)操作系統(tǒng)上,這是一種有宿主的虛擬機(jī),通過(guò)這種方式,可以使VMM 能夠利用宿主操作系統(tǒng)所提供的設(shè)備驅(qū)動(dòng)和底層服務(wù),而不需要去除原來(lái)機(jī)器上已經(jīng)安裝的操作系統(tǒng)。但是宿主操作系統(tǒng)的介入可能會(huì)導(dǎo)致系統(tǒng)性能的損失。最后一種混合的模式就是VMM既可以運(yùn)行在裸機(jī)上有可以運(yùn)行在宿主操作系統(tǒng)上,從而取長(zhǎng)補(bǔ)短,達(dá)到效率和性能的平衡。VMM 對(duì)截獲的用戶(hù)指令進(jìn)行分析和轉(zhuǎn)換,進(jìn)而控制硬件系統(tǒng),最終實(shí)現(xiàn)多個(gè)操作系統(tǒng)對(duì)硬件平臺(tái)的無(wú)沖突訪問(wèn)。因此,利用上述的技術(shù),以Linux 操作系統(tǒng)為宿主操作系統(tǒng),以Windows 操作系統(tǒng)為客戶(hù)操作系統(tǒng),這樣就能夠在Linux 上搭建一個(gè)Window 虛擬機(jī)來(lái)運(yùn)行Windows 程序。

虛擬機(jī)技術(shù)是實(shí)現(xiàn)應(yīng)用程序跨平臺(tái)的一種較為有效的方法,Linux 系統(tǒng)的安全性和穩(wěn)定性給虛擬機(jī)和Windows系統(tǒng)的運(yùn)行,提供了良好的條件。但是這一技術(shù),從本質(zhì)上來(lái)講,就是在虛擬機(jī)上運(yùn)行Windows 系統(tǒng),進(jìn)而運(yùn)行Windows 程序,所以不能擺脫Windows 系統(tǒng)的束縛,無(wú)法滿(mǎn)足向自主可控的Linux 平臺(tái)移植應(yīng)用程序的應(yīng)用需求,并且虛擬機(jī)技術(shù)的產(chǎn)品開(kāi)發(fā)成本也比較高。

盡管虛擬機(jī)技術(shù)存在這樣或者那樣的不足之處,但是依然在近年還是得到了很好的發(fā)展。目前有很多虛擬技術(shù)的主流產(chǎn)品,例如Vmware、virtualbox、virtual pc 等,都是相對(duì)比較成熟的將Windows 程序遷移至Linux 上的解決方案。

1.2 代碼重構(gòu)技術(shù)

代碼重構(gòu)技術(shù)是對(duì)代碼進(jìn)行二次設(shè)計(jì),使其符合Linux 所支持的應(yīng)用程序編程接口。需要將原應(yīng)用程序中的代碼進(jìn)行修改,使得原本調(diào)用Windows 平臺(tái)上的API 和DLL,現(xiàn)在調(diào)用Linux 上的對(duì)應(yīng)函數(shù),完成應(yīng)用程序從Windows 系統(tǒng)到Linux 系統(tǒng)的遷移。將修改后的源代碼在Linux 平臺(tái)下編譯形成Linux 下對(duì)應(yīng)的可執(zhí)行文件,很好地解決了Linux 和Windows 的平臺(tái)差異性。

代碼重構(gòu)技術(shù)僅僅需要對(duì)Windows 應(yīng)用的源碼進(jìn)行重新設(shè)計(jì),技術(shù)上沒(méi)有大的難題。但是由于是對(duì)源代碼進(jìn)行二次設(shè)計(jì),所以要獲取Windows 應(yīng)用程序的源代碼,這對(duì)于非開(kāi)源的商用軟件是一個(gè)很大的局限,另外由于要重寫(xiě)全部代碼,甚至可能導(dǎo)致原應(yīng)用程序的結(jié)構(gòu)發(fā)生變化而引發(fā)一系列難題。代碼重構(gòu)的工作量較大,不適用于大型系統(tǒng)的移植。代碼重構(gòu)的思路相對(duì)比較簡(jiǎn)單,其應(yīng)用主要在于一些小型程序、開(kāi)源程序向Linux 系統(tǒng)上的遷移。

1.3 API 模擬方法

API 模擬技術(shù)的實(shí)質(zhì)是在Linux 上提供一層Windows 程序運(yùn)行所需要的API 實(shí)現(xiàn)。該技術(shù)將Windows 應(yīng)用程序源代碼調(diào)用Windows API 的,使用調(diào)用相同參數(shù)的基于Linux 的代碼實(shí)現(xiàn),這使得Linux API實(shí)現(xiàn)與Windows API 相同或相似的功能,為上層調(diào)用提供服務(wù)。原有的Windows 程序通過(guò)API 模擬層提供的接口和其提供的動(dòng)態(tài)鏈接庫(kù)一起編譯運(yùn)行,生成Linux 格式的可執(zhí)行文件,從而進(jìn)行移植。

API 模擬方法不需要修改應(yīng)用程序的源代碼,也不需要修改Linux 的內(nèi)核。通過(guò)一種“核內(nèi)差異核外補(bǔ)”的方法,將Windows 上的應(yīng)用程序遷移到Linux 上,但由于Windows 是非開(kāi)源的,應(yīng)用程序調(diào)用無(wú)法完全實(shí)現(xiàn)和Windows 一樣的功能,另外Windows 中存在一些未被文檔化的函數(shù),這些函數(shù)目前也沒(méi)有實(shí)現(xiàn)的方法。

1.4 修改Linux 內(nèi)核

兼容內(nèi)核是一個(gè)二進(jìn)制兼容Windows 和Linux 應(yīng)用軟件和設(shè)備驅(qū)動(dòng)程序的計(jì)算機(jī)操作系統(tǒng)內(nèi)核。它通過(guò)在Linux 內(nèi)核的基礎(chǔ)上利用Linux 內(nèi)核構(gòu)建Windows 內(nèi)核功能模塊,從而擴(kuò)充Linux 內(nèi)核的支持能力,使之同時(shí)支持Linux 和Windows 的應(yīng)用程序和設(shè)備驅(qū)動(dòng)。兼容內(nèi)核的方法就是對(duì)Linux 的內(nèi)核加以擴(kuò)充,使其上能很好地運(yùn)行Windows 應(yīng)用程序,即實(shí)現(xiàn)核內(nèi)差異,核內(nèi)補(bǔ)。這種辦法雖然是解決問(wèn)題的根本辦法,但是工作量很大,相當(dāng)于將Linux 內(nèi)核和Windows 內(nèi)核融合到一起,從現(xiàn)在的開(kāi)源社區(qū)和IT 企業(yè)的開(kāi)發(fā)成果來(lái)看,兼容內(nèi)容很難實(shí)現(xiàn)。

2 數(shù)據(jù)遷移

應(yīng)用系統(tǒng)中的數(shù)據(jù)經(jīng)過(guò)多年的積累,耗費(fèi)了大量的人力、物力才得到當(dāng)前保存的數(shù)據(jù)信息,具有極高的價(jià)值。而系統(tǒng)中的數(shù)據(jù)由于使用時(shí)間長(zhǎng),數(shù)據(jù)經(jīng)過(guò)多次更新,使得數(shù)據(jù)庫(kù)中的數(shù)據(jù)結(jié)構(gòu)復(fù)雜,數(shù)據(jù)之間的關(guān)系錯(cuò)綜復(fù)雜。數(shù)據(jù)庫(kù)的遷移工作可能需要遷移數(shù)據(jù)的數(shù)值和數(shù)據(jù)的語(yǔ)義(包括約束、默認(rèn)值等)。

2.1 數(shù)據(jù)遷移操作

數(shù)據(jù)庫(kù)遷移操作工作主要包括兩部分內(nèi)容:數(shù)據(jù)的映射和矯正。數(shù)據(jù)的映射是指將源數(shù)據(jù)庫(kù)中的數(shù)據(jù)和目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)建立映射關(guān)系,包括數(shù)據(jù)的類(lèi)型和精度。在映射的過(guò)程中,由于源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)的管理系統(tǒng)差異,兩種管理系統(tǒng)支持的數(shù)據(jù)類(lèi)型、精度、值域等并不相同,需要對(duì)源數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行必要的修改。

數(shù)據(jù)的矯正工作,是指在數(shù)據(jù)遷移過(guò)程中對(duì)一些數(shù)據(jù)進(jìn)行必要的修改。在分析源數(shù)據(jù)庫(kù)的過(guò)程中,發(fā)現(xiàn)一些臟數(shù)據(jù),如在日期中出現(xiàn)了“去年”這樣的詞語(yǔ),需要根據(jù)上下文對(duì)“去年”進(jìn)行分析,并替換成正確的數(shù)據(jù)庫(kù)格式。若源數(shù)據(jù)庫(kù)缺乏數(shù)據(jù)一致性的約束,而目標(biāo)數(shù)據(jù)庫(kù)中存在此項(xiàng)功能,則可能檢查出部分?jǐn)?shù)據(jù)的不一致性,需要對(duì)這些數(shù)據(jù)進(jìn)行修改。數(shù)據(jù)的矯正工作需要從多個(gè)角度進(jìn)行,將改正遷移過(guò)程中遇到的各種不合法的數(shù)據(jù),保證遷移后的數(shù)據(jù)可以正常使用。

2.2 數(shù)據(jù)遷移的策略

數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行遷移時(shí),根據(jù)一次遷移數(shù)據(jù)庫(kù)數(shù)據(jù)的比例,遷移策略分為整體遷移策略、切片遷移策略和動(dòng)態(tài)迭代遷移策略。

2.2.1 整體遷移

如果待遷移的源數(shù)據(jù)庫(kù)系統(tǒng)遷移期間無(wú)需被使用,可以將數(shù)據(jù)庫(kù)系統(tǒng)中的所有數(shù)據(jù)作為一個(gè)整體進(jìn)行遷移。圖1展示了數(shù)據(jù)庫(kù)整體遷移的過(guò)程,從時(shí)間0開(kāi)始進(jìn)行數(shù)據(jù)庫(kù)的遷移工作,隨著時(shí)間向前推移,遷移到目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)量不斷增加,在未來(lái)某個(gè)t,遷移到目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)量和源數(shù)據(jù)庫(kù)中的數(shù)據(jù)量相等,遷移工作結(jié)束。整體遷移的優(yōu)勢(shì)在于遷移過(guò)程中,目標(biāo)數(shù)據(jù)庫(kù)和源數(shù)據(jù)庫(kù)無(wú)需進(jìn)行交互,降低了數(shù)據(jù)的遷移難度。但在停止遷移之前,無(wú)法對(duì)已遷移的數(shù)據(jù)進(jìn)行測(cè)試,無(wú)法保證遷移過(guò)程中數(shù)據(jù)的正確性。

圖1 數(shù)據(jù)庫(kù)整體遷移

2.2.2 切片遷移

如果待遷移的數(shù)據(jù)量十分龐大,可采取切片遷移的方法進(jìn)行遷移。根據(jù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)表進(jìn)行切分,每次對(duì)數(shù)據(jù)庫(kù)中的部分切片進(jìn)行遷移。當(dāng)部分?jǐn)?shù)據(jù)遷移失敗時(shí),無(wú)須對(duì)所有的數(shù)據(jù)進(jìn)行重新遷移,只需對(duì)失敗的部分重新遷移即可。如圖2所示。切片遷移對(duì)數(shù)據(jù)庫(kù)的切分可能需要復(fù)雜的軟件進(jìn)行支持,遷移時(shí)也需要對(duì)遷移的數(shù)據(jù)范圍進(jìn)行有效性判斷,確保只遷移分配的遷移切片,增加了數(shù)據(jù)遷移實(shí)現(xiàn)的難度。

圖2 數(shù)據(jù)庫(kù)切片遷移

2.2.3 動(dòng)態(tài)迭代遷移

動(dòng)態(tài)迭代遷移允許在數(shù)據(jù)遷移過(guò)程中,保持?jǐn)?shù)據(jù)庫(kù)的在線狀態(tài),允許用戶(hù)對(duì)數(shù)據(jù)進(jìn)行操作。動(dòng)態(tài)迭代遷移的思想是在數(shù)據(jù)庫(kù)遷移過(guò)程中,增加數(shù)據(jù)操作模塊和輔助數(shù)據(jù)庫(kù)。如圖3所示。

圖3 數(shù)據(jù)庫(kù)動(dòng)態(tài)迭代遷移

圖3中,將源數(shù)據(jù)庫(kù)設(shè)置為只讀,用戶(hù)對(duì)數(shù)據(jù)庫(kù)的增刪改查操作,通過(guò)數(shù)據(jù)庫(kù)操作模塊將所有的操作過(guò)程和相關(guān)數(shù)值記錄于輔助數(shù)據(jù)庫(kù)S1中。對(duì)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)遷移,可采用整體遷移或切片遷移的方法。

源數(shù)據(jù)庫(kù)遷移完畢后,需要將遷移期間用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作反映在目標(biāo)數(shù)據(jù)庫(kù)中,因此,要將輔助數(shù)據(jù)庫(kù)S1中記錄的操作和數(shù)值遷移到目標(biāo)數(shù)據(jù)庫(kù)中。對(duì)數(shù)據(jù)庫(kù)S1的遷移采取與遷移源數(shù)據(jù)庫(kù)類(lèi)似的方法,將數(shù)據(jù)庫(kù)S1設(shè)置為只讀,同時(shí)增加輔助數(shù)據(jù)庫(kù)S2,用S2記錄遷移期間數(shù)據(jù)庫(kù)數(shù)值的改變。當(dāng)S1遷移完成后,又需要遷移新的輔助數(shù)據(jù)庫(kù)S2的內(nèi)容到目標(biāo)數(shù)據(jù)庫(kù)中。由此,數(shù)據(jù)庫(kù)遷移將需要遷移一系列的輔助數(shù)據(jù)庫(kù)S1,S2,S3…Sn。當(dāng)遷移期間數(shù)據(jù)的改變較小,則無(wú)須繼續(xù)添加輔助數(shù)據(jù)庫(kù),迭代遷移完成。

迭代遷移可以保證系統(tǒng)在線時(shí)完成遷移,適用于一些重要的系統(tǒng)特別是需要24小時(shí)保持在線系統(tǒng)的數(shù)據(jù)遷移。但是迭代遷移增加了遷移的復(fù)雜程度, 需要為系統(tǒng)的遷移開(kāi)發(fā)數(shù)據(jù)庫(kù)操作模塊,用來(lái)記錄用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作,并存儲(chǔ)操作的結(jié)果信息等。

3 結(jié)束語(yǔ)

本文介紹了應(yīng)用在從Windows 向Linux 遷移的相關(guān)技術(shù),包括應(yīng)用程序的遷移、數(shù)據(jù)的遷移等。遷移技術(shù)的研究將提供更多基于Linux 操作系統(tǒng)的軟件產(chǎn)品替代國(guó)內(nèi)廣泛使用的Windows 環(huán)境下的軟件,保證系統(tǒng)的安全性。

猜你喜歡
數(shù)據(jù)庫(kù)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 国产三级视频网站| 美女扒开下面流白浆在线试听| 国产乱子伦视频在线播放| 国产成人AV男人的天堂| 欧美成人免费一区在线播放| 人妻无码中文字幕一区二区三区| 91福利在线观看视频| 99久久免费精品特色大片| 香蕉国产精品视频| 久久久久88色偷偷| 国产十八禁在线观看免费| 久操中文在线| 99热这里只有精品国产99| 亚洲资源站av无码网址| 国产毛片基地| 亚洲午夜18| 高清色本在线www| 国产毛片一区| 婷婷午夜影院| 国产18页| 人人爱天天做夜夜爽| 国产自视频| 欧洲在线免费视频| 无码人中文字幕| 囯产av无码片毛片一级| 精品三级网站| 影音先锋亚洲无码| 久久无码免费束人妻| 色偷偷一区二区三区| 一本大道香蕉高清久久| 亚洲an第二区国产精品| 成人欧美日韩| 国产一区免费在线观看| 欧美伊人色综合久久天天| 国产在线视频欧美亚综合| 91精品国产91久无码网站| 久久国产精品电影| 国产成人综合久久精品尤物| 在线五月婷婷| 午夜久久影院| 亚洲欧美在线看片AI| 国产麻豆福利av在线播放 | 凹凸精品免费精品视频| 欧美伦理一区| 精品无码日韩国产不卡av| 国产欧美日韩18| 亚洲成人在线免费| 国产成人精品无码一区二| 欧美a级在线| 国产综合另类小说色区色噜噜| 有专无码视频| 久久久久中文字幕精品视频| 日本一区二区三区精品国产| 国产麻豆永久视频| 亚洲综合18p| AⅤ色综合久久天堂AV色综合| 强奷白丝美女在线观看 | 99er这里只有精品| 污网站在线观看视频| 日韩东京热无码人妻| 国产高清无码麻豆精品| 国产精品成人久久| 亚洲国产精品不卡在线| 国产精品久久自在自线观看| 国产精品一区不卡| 欧美激情综合一区二区| 国产欧美日韩视频一区二区三区| 国产不卡国语在线| 亚洲娇小与黑人巨大交| 亚洲人成影视在线观看| 免费看a级毛片| 亚洲第一页在线观看| 国产亚卅精品无码| 国产v欧美v日韩v综合精品| 亚亚洲乱码一二三四区| 免费av一区二区三区在线| 在线观看国产精美视频| 四虎成人精品| 亚洲电影天堂在线国语对白| 在线观看国产精美视频| 久久午夜影院| 国产美女无遮挡免费视频网站|