Java程序動(dòng)態(tài)更新技術(shù)研究
發(fā)布時(shí)間:2018-05-26 15:50
本文選題:動(dòng)態(tài)軟件更新 + Java虛擬機(jī) ; 參考:《南京大學(xué)》2017年博士論文
【摘要】:軟件已無(wú)處不在,人們也日益依賴于軟件系統(tǒng)提供的不間斷服務(wù)。然而,軟件系統(tǒng)常需更新以修復(fù)缺陷、改進(jìn)性能和增加功能。傳統(tǒng)的軟件更新需要停止正在運(yùn)行的軟件系統(tǒng),部署新版本并重啟運(yùn)行。這種因軟件更新而導(dǎo)致的服務(wù)中斷可能會(huì)帶來(lái)諸多不便,甚至生命財(cái)產(chǎn)損失。動(dòng)態(tài)軟件更新技術(shù)旨在不終止正在運(yùn)行的系統(tǒng)而將其在線地升級(jí)到新版本。當(dāng)前既有的動(dòng)態(tài)軟件更新技術(shù)存在諸多局限,特別是:(1)為高度優(yōu)化的軟件運(yùn)行環(huán)境引入動(dòng)態(tài)更新支持會(huì)帶來(lái)難以接受的運(yùn)行時(shí)額外開(kāi)銷(xiāo),(2)對(duì)高度復(fù)雜的運(yùn)行時(shí)狀態(tài)的轉(zhuǎn)換可能帶來(lái)較長(zhǎng)時(shí)間的服務(wù)中斷,(3)人工開(kāi)發(fā)用于轉(zhuǎn)換程序運(yùn)行時(shí)狀態(tài)的動(dòng)態(tài)更新補(bǔ)丁難度大,質(zhì)量難以保證,(4)軟件系統(tǒng)開(kāi)發(fā)時(shí)通常不會(huì)考慮動(dòng)態(tài)更新,因而缺少抵抗由于不恰當(dāng)?shù)膭?dòng)態(tài)軟件更新而導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤的能力。針對(duì)這些問(wèn)題和挑戰(zhàn),本文從高效的動(dòng)態(tài)軟件更新實(shí)現(xiàn)機(jī)制、自動(dòng)化的運(yùn)行時(shí)對(duì)象狀態(tài)轉(zhuǎn)換方法以及動(dòng)態(tài)更新錯(cuò)誤自動(dòng)恢復(fù)技術(shù)三個(gè)方面系統(tǒng)研究了Java程序動(dòng)態(tài)更新支撐技術(shù),并在工業(yè)級(jí)的Java虛擬機(jī)上實(shí)現(xiàn)了上述技術(shù),得到一個(gè)高效、易用、可靠的Java程序動(dòng)態(tài)軟件更新系統(tǒng)Javelus。具體而言,本文的主要工作如下:1.提出了一種高效的延時(shí)Java程序動(dòng)態(tài)更新實(shí)施機(jī)制。該機(jī)制以按需更新的方式實(shí)現(xiàn)對(duì)象狀態(tài)的版本轉(zhuǎn)換,從而大大降低了更新過(guò)程的程序中斷時(shí)間,同時(shí)通過(guò)細(xì)粒度的類型分析實(shí)現(xiàn)了多種優(yōu)化,保證了動(dòng)態(tài)軟件更新前、后運(yùn)行時(shí)的低額外開(kāi)銷(xiāo)。2.提出了一種基于程序和執(zhí)行合成的自動(dòng)對(duì)象狀態(tài)轉(zhuǎn)換方法。該方法避免直接操縱對(duì)象內(nèi)部封裝的具體數(shù)據(jù)結(jié)構(gòu),而是根據(jù)對(duì)象當(dāng)前的狀態(tài)合成一個(gè)能生成該狀態(tài)的方法執(zhí)行歷史,然后將該方法執(zhí)行歷史中的舊版本方法替換為對(duì)應(yīng)的新版本方法,再通過(guò)重新執(zhí)行該方法歷史,生成所需的新版本對(duì)象狀態(tài)。3.提出了一種基于錯(cuò)誤處理器合成的自動(dòng)錯(cuò)誤恢復(fù)技術(shù)。該技術(shù)利用程序內(nèi)部自身抵抗錯(cuò)誤的能力來(lái)將程序從由不恰當(dāng)?shù)膭?dòng)態(tài)更新導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤中恢復(fù)。在運(yùn)行時(shí)錯(cuò)誤發(fā)生時(shí),該技術(shù)通過(guò)虛擬機(jī)截獲錯(cuò)誤,自動(dòng)地生成多個(gè)備選錯(cuò)誤處理器,同時(shí)利用按需創(chuàng)造的測(cè)試沙盒來(lái)選擇最有可能成功的錯(cuò)誤處理器來(lái)進(jìn)行錯(cuò)誤恢復(fù)。4.基于工業(yè)界廣泛使用的HotSpot Java虛擬機(jī)實(shí)現(xiàn)了上述機(jī)制、方法和技術(shù),得到一個(gè)Java程序動(dòng)態(tài)更新系統(tǒng)Javelus 。該系統(tǒng)實(shí)現(xiàn)較完整,支持各種類型的程序修改,可以無(wú)縫集成到當(dāng)前主流的開(kāi)發(fā)和運(yùn)行環(huán)境中。實(shí)驗(yàn)評(píng)估結(jié)果表明,較之既有系統(tǒng),Javelus顯著提高了動(dòng)態(tài)軟件更新的高效性、易用性和可靠性。
[Abstract]:Software has become ubiquitous, and people are increasingly dependent on uninterrupted services provided by software systems. However, software systems often need to be updated to repair defects, improve performance and add functionality. Traditional software updates need to stop running software systems, deploy new versions and launch the service. It can bring a lot of inconvenience, even loss of life and property. Dynamic software update technology is designed to not terminate the running system and upgrade it online to a new version. There are many limitations of existing dynamic software update technology, especially: (1) it is difficult to introduce dynamic update support for highly optimized software transportation environment. The extra overhead of running time, (2) the transformation of highly complex runtime state may bring a long time service interruption. (3) the dynamic update patch for the state of the transformation program is difficult to ensure, and the quality is difficult to guarantee. (4) the development of the software system usually does not consider the dynamic update, so the lack of resistance is not appropriate. In view of these problems and challenges, this paper systematically studies the dynamic update support technology of Java program from three aspects of the efficient dynamic software update implementation mechanism, automatic runtime object state conversion method and dynamic update error automatic recovery technology, and at the industrial level. The Java virtual machine implements the above technology, and obtains an efficient, easy to use, reliable Java program dynamic software update system Javelus.. The main work of this paper is as follows: 1. a high efficient dynamic update implementation mechanism of time delay Java program is proposed. It greatly reduces the interruption time of the program in the update process, and implements a variety of optimizations through the fine-grained type analysis. Before the dynamic software is updated, the low overhead of the post operation.2. puts forward an automatic object state conversion method based on program and execution synthesis. This method avoids the direct manipulation of the internal encapsulation of the object. The specific data structure is based on the current state of the object to synthesize a method that can generate the state, and then replace the old version of the method in the history of the method to the corresponding new version method. Then, by reexecuting the history of the method, a new version of the new version of the object state.3. is generated and a kind of error processing is proposed. An automatic error recovery technique that uses the ability of the program to resist errors within the program to restore the program from a runtime error caused by an inappropriate dynamic update. When the runtime error occurs, the technology intercepts errors through the virtual machine, automatically generates multiple alternative error processors, and uses the demand to create the error. Test sandbox to select the most likely success error processor for error recovery.4. based on the HotSpot Java virtual machine widely used in industry, methods and techniques to get a Java program dynamic update system Javelus. The system is more complete, supports various types of program modification, and can be integrated seamlessly. To the current mainstream development and operation environment, the experimental evaluation results show that, compared with the existing system, Javelus significantly improves the efficiency, usability and reliability of dynamic software update.
【學(xué)位授予單位】:南京大學(xué)
【學(xué)位級(jí)別】:博士
【學(xué)位授予年份】:2017
【分類號(hào)】:TP312.2
,
本文編號(hào):1937827
本文鏈接:http://sikaile.net/shoufeilunwen/xxkjbs/1937827.html
最近更新
教材專著