亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        設(shè)置進程檢查點的嵌入式容錯系統(tǒng)設(shè)計

        2014-08-12 08:46:10王福友楊斌
        關(guān)鍵詞:雙機檢查點內(nèi)核

        王福友,楊斌

        (西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610031)

        設(shè)置進程檢查點的嵌入式容錯系統(tǒng)設(shè)計

        王福友,楊斌

        (西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610031)

        針對嵌入式Linux系統(tǒng)的特點,通過設(shè)置檢查點(checkpoint)實現(xiàn)ARM平臺進程級容錯。在檢查點工作時,通過/proc文件系統(tǒng)與內(nèi)核進行交互,實時地獲取與進程有關(guān)的PID、CPU狀態(tài)以及內(nèi)存信息,并保存在存儲介質(zhì)中。當(dāng)進程出現(xiàn)故障后,將上述與進程有關(guān)的狀態(tài)信息進行恢復(fù),從而實現(xiàn)進程級容錯。實驗表明,該進程級容錯系統(tǒng)有較好的容錯能力,極大地縮短了進程恢復(fù)的時間。

        ARM;嵌入式Linux;檢查點;容錯

        引 言

        隨著ARM處理器性能不斷提升,同時又兼具低功耗、體積小的特點,在工控和高性能計算領(lǐng)域中以ARM處理器為核心的嵌入式平臺應(yīng)用得越來越廣泛。鑒于工控和高性能計算領(lǐng)域的系統(tǒng)可靠性要求極高,因此如何設(shè)計高可靠性系統(tǒng)成為一個至關(guān)重要的課題。

        提高系統(tǒng)可靠性的一個有效的方法是容錯。檢查點機制是一種典型的軟件容錯技術(shù),通過設(shè)置檢查點來實現(xiàn)進程級容錯。檢查點機制主要分為兩種:用戶態(tài)和內(nèi)核態(tài)。用戶態(tài)檢查點具有較好的可移植性,但是用戶需要修改程序源碼,缺乏透明性和通用性,代表性用戶態(tài)檢查點有Conder和Libckpt。內(nèi)核態(tài)檢查點獨立于用戶程序,對用戶完全透明,方便用戶使用,代表性內(nèi)核態(tài)檢查點為BLCR。本文正是基于內(nèi)核態(tài)檢查點BLCR設(shè)計思想,在ARM平臺嵌入式Linux系統(tǒng)上實現(xiàn)進程級容錯系統(tǒng)。

        1 系統(tǒng)結(jié)構(gòu)設(shè)計

        檢查點通過人為或周期性地向系統(tǒng)發(fā)送進程保存信號來備份進程狀態(tài),生成含有進程信息的文件。當(dāng)檢測到進程因某種原因崩潰時,通過讀取進程信息文件,將進程回轉(zhuǎn)到備份時的狀態(tài),從而實現(xiàn)進程恢復(fù),完成系統(tǒng)容錯。

        圖1 系統(tǒng)結(jié)構(gòu)設(shè)計圖

        根據(jù)本系統(tǒng)實際功能設(shè)計三個模塊,分別是用戶態(tài)的用戶接口模塊、進程信息存儲模塊,以及內(nèi)核態(tài)的進程信息保存與恢復(fù)模塊。系統(tǒng)結(jié)構(gòu)設(shè)計圖如圖1所示。

        (1) 用戶接口模塊

        用戶接口模塊為用戶進程的狀態(tài)保存與恢復(fù)鏈接動態(tài)鏈接庫提供了標(biāo)準(zhǔn)化使用接口,通過這個接口訪問內(nèi)核態(tài)的進程信息保存與恢復(fù)模塊。

        (2) 進程信息存儲模塊

        在進程保存過程中,通過vfs_write()函數(shù)將進程信息保存成固定格式的文件。在進程恢復(fù)過程中,使進程信息保存與恢復(fù)模塊可以通過vfs_read()函數(shù)訪問,從而完成進程的恢復(fù)工作。

        (3) 進程信息保存與恢復(fù)模塊

        進程信息保存與恢復(fù)模塊是本系統(tǒng)的核心模塊,由于用戶態(tài)和內(nèi)核態(tài)的內(nèi)存地址空間不同,不能使用簡單的函數(shù)調(diào)用方式,在本系統(tǒng)中用戶態(tài)與內(nèi)核態(tài)模塊通過/proc文件系統(tǒng)進行數(shù)據(jù)交互。在進程保存過程中,該模塊獲取與進程有關(guān)的信息,并調(diào)用進程信息存儲模塊保存進程信息;而在進程恢復(fù)過程中,通過訪問之前保存的含有進程信息的文件恢復(fù)進程。

        在系統(tǒng)實現(xiàn)方式上采用單機和雙機兩種實現(xiàn)模式。單機模式下,進程的保存與恢復(fù)都是在同一臺機器上進行的;雙機模式下,在一臺機器上進行進程信息的保存,在另外一臺機器上保存生成的進程信息文件并恢復(fù)進程。

        2 系統(tǒng)開發(fā)中關(guān)鍵技術(shù)的研究

        本系統(tǒng)在進程保存時將進程的信息、CPU寄存器的狀態(tài)、signal信息、進程的內(nèi)存地址空間等信息保存到文件里。在進程恢復(fù)時,調(diào)用fork( )函數(shù)創(chuàng)建一個新進程,讀取文件中上述進程狀態(tài),從而完成進程恢復(fù)。所保存的文件格式見圖 2。

        圖2 進程文件格式

        2.1 內(nèi)核讀寫文件方法

        由于在內(nèi)核操作文件沒有標(biāo)準(zhǔn)庫,因此要利用內(nèi)核的一些函數(shù),在本系統(tǒng)中主要使用兩個函數(shù)vfs_write( )和vfs_read( )構(gòu)成的文件操作函數(shù)k_write( )和k_read( )。函數(shù)原型如下:ssize_t k_write(struct file *file, const void *buf, size_t count);

        參數(shù)file代表要保存進程信息的文件,參數(shù)buf代表指向要保存的緩沖區(qū)指針,參數(shù)count代表要保存的緩沖區(qū)大小。

        ssize_t k_read(struct file *file, const void *buf, size_t count);

        參數(shù)file代表要讀取進程信息的文件,參數(shù)buf代表指向要寫入的緩沖區(qū)指針,參數(shù)count代表要寫入的緩沖區(qū)大小。

        2.2 進程的狀態(tài)保存

        內(nèi)核通過定義的全局項current引用當(dāng)前進程。它產(chǎn)生一個指針指向結(jié)構(gòu)tsk_struct,current指針指向在運行的進程。內(nèi)核可以通過current宏來獲取特定的進程信息。

        ① 保存進程PID,這是進程的唯一標(biāo)識符,是進程創(chuàng)建的起點,通過current->pid獲取當(dāng)前進程的PID,然后保存到進程文件中。

        ② 保存進程的UID、GID等,采用current_cred( )函數(shù)獲取進程用戶名和組名。

        ③ 保存CPU信息,主要是寄存器和線程信息。采用task_pt_regs( )函數(shù)獲得寄存器信息。通過current->thread獲得線程信息。

        ④ 保存signal信息,共需要保存三組信息:信號堆棧信息、掛起信號和信號處理函數(shù)。采用do_sigaltstack( )函數(shù)獲得信號堆棧信息,通過current->blocked獲得進程掛起信號,通過current->sighand->action獲得信號處理函數(shù)信息。

        ⑤ 保存進程內(nèi)存信息,這部分比較復(fù)雜,主要的過程為采用find_vma( )函數(shù)獲得進程的虛擬地址,保存進程映像(如數(shù)據(jù)段、代碼段、堆區(qū)、棧區(qū)等),然后遍歷內(nèi)存,保存進程的內(nèi)存信息。

        2.3 進程的狀態(tài)恢復(fù)

        進程恢復(fù)主要用到了k_read( )函數(shù),該函數(shù)在內(nèi)核態(tài)下讀取含有進程信息的文件,由于文件是按照特定格式存儲的,因此k_read( )函數(shù)可以分段讀取進程文件指定的內(nèi)容?;謴?fù)的主要步驟如下:

        ① 系統(tǒng)調(diào)用fork( )函數(shù)創(chuàng)建一個新的進程,并進入內(nèi)核態(tài);

        ② 進程信息保存與恢復(fù)模塊接收到進程恢復(fù)的信號后,通過k_read( )函數(shù)讀取進程信息文件,根據(jù)文件中記錄的線程數(shù)目創(chuàng)建線程,將進程相關(guān)的寄存器信息、信號信息以及內(nèi)存信息填充到相應(yīng)的PCB中;

        ③ 完成上述工作后,系統(tǒng)從內(nèi)核態(tài)返回用戶態(tài),使進程參與任務(wù)調(diào)度,完成進程恢復(fù)。

        3 進程級容錯系統(tǒng)的實現(xiàn)

        本系統(tǒng)由兩個子系統(tǒng)構(gòu)成:進程保存子系統(tǒng)和進程恢復(fù)子系統(tǒng)。由于本系統(tǒng)用獨立的文件保存進程的各項信息,因此為了更好地測試進程文件的遷移性,采用了兩套實現(xiàn)方法,即單機實現(xiàn)和雙機實現(xiàn)。

        3.1 單機實現(xiàn)

        進程的保存與恢復(fù)在同一臺機器里實現(xiàn),具體流程如圖3、圖4所示。

        圖3 進程狀態(tài)保存

        圖4 進程狀態(tài)恢復(fù)

        在進程狀態(tài)保存時,首先調(diào)用checkpoint [pid]命令,發(fā)送進程保存請求。系統(tǒng)響應(yīng)進程保存請求后,會首先暫停進程,通過k_write( )函數(shù)將進程各項信息保存到指定的進程文件中,最后恢復(fù)進程運行,完成進程狀態(tài)保存。

        在進程狀態(tài)恢復(fù)時,首先調(diào)用restore [char* filename]命令,發(fā)送進程恢復(fù)請求。系統(tǒng)響應(yīng)進程恢復(fù)請求后,會調(diào)用fork( )函數(shù)創(chuàng)建一個新的進程,然后通過k_read( )函數(shù)讀取進程文件的內(nèi)容到PCB中,最后使新創(chuàng)建的進程參與任務(wù)調(diào)度,完成進程狀態(tài)恢復(fù)。

        3.2 雙機實現(xiàn)

        雙機實現(xiàn)與單機實現(xiàn)的步驟基本一致,差別在進程文件保存上:單機實現(xiàn)時,進程文件保存在本地,而雙機實現(xiàn)時,進程文件保存在備機中。雙機實現(xiàn)工作原理如圖5所示。一臺機器為主機,另一臺為備機。主機運行程序,并且隔一段時間通過網(wǎng)絡(luò)保存進程信息文件到備機中。備機通過串口發(fā)送心跳信號,監(jiān)視主機的狀態(tài),當(dāng)發(fā)現(xiàn)主機異常后,接管主機,在備機上讀取主機保存的進程信息文件,恢復(fù)主機的進程,從而實現(xiàn)基于檢查點的雙機容錯。

        圖5 雙機進程容錯實現(xiàn)方法

        4 系統(tǒng)性能評測

        本系統(tǒng)所采用的平臺為基于Cortex-A8 CPU的BeagleBone Black,CPU型號為TI AM3359 (1 GHz),RAM大小為512 MB,所采用的內(nèi)核版本為linux-3.8.13。使用計算N×N矩陣的N次冪作為測試程序。在程序運行的過程中,先進行進程保存,然后發(fā)送KILL信號關(guān)閉程序,最后分別在單機環(huán)境和雙機環(huán)境下進行進程恢復(fù)。測試結(jié)果如表1、表2所列。

        表1 單機進程容錯測試結(jié)果

        表2 雙機進程容錯測試結(jié)果

        由表1、表2可知,隨著數(shù)據(jù)量和運算量的增加,進程保存與恢復(fù)的耗時以及進程文件大小相應(yīng)地增加,但是進程保存與恢復(fù)耗時與程序運行時間的百分比卻明顯下降,這充分地說明運算量大且實時性較高的程序上運用該進程級容錯系統(tǒng)的優(yōu)勢更為明顯。從雙機測試的結(jié)果看,該進程文件具有較好的遷移性,因此,該進程級容錯系統(tǒng)可以運用到基于嵌入式平臺的分布式計算系統(tǒng)中。

        結(jié) 語

        [1] Hargrove P H, Duell J C. Berkeley lab checkpoint/restart (blcr) for linux clusters[J]. Journal of Physics: Conference Series. IOP Publishing, 2006, 46(1): 494.

        [2] Lawrence Berkeley National Laboratory. The design and implementation of berkeley lab's linux checkpoint/restart,2005.

        [3] Mishra S. Design and Implementation of Process Migration and Cloning in BLCR[D]. Raleigh: North Carolina State University,2011.

        [4] Hariyale H, Vardhan M, Pandey A. Load Balancing in Cluster Using BLCR Checkpoint/Restart[M].Berlin:Springer Berlin Heidelberg, 2012: 729-737.

        [5] 管文,裴爾明,石京燕,等.基于 Linux的會話斷點保存與恢復(fù)軟件[J]. Computer Engineering, 2010, 36(8).

        [6] 楊暉,陳閎中.支持文件遷移的 Linux檢查點機制的實現(xiàn)[J].計算機工程, 2010, 36(3): 266-268.

        [7] 門朝光,焦亮,李香,等.基于 Linux內(nèi)核的進程檢查點系統(tǒng)設(shè)計與實現(xiàn)[J].計算機科學(xué), 2009, 36(4): 192-194.

        Design of Embedded Fault Tolerant System Based on Process Checkpoint Settings

        Wang Fuyou,Yang Bin

        (School of Information Science & Technology,Southwest Jiaotong University,Chengdu 610031,China)

        According to the characteristics of embedded Linux system, the process-lever fault tolerant of ARM platform is realized through setting checkpoint. During the working,the checkpoint realizes the interactions with the kernel through the proc file system.At the same time, the checkpoint gets the PID,CPU status and memory information about the process, and stores the information in the storage medium. When the process is failed, the system resumes the above information. The experiments indicate this process-level fault tolerant system achieves fault tolerance and reduces the time of resuming process.

        ARM; embedded Linux;checkpoint;fault tolerant

        TP316

        A

        2014-02-20)

        猜你喜歡
        雙機檢查點內(nèi)核
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        Spark效用感知的檢查點緩存并行清理策略①
        免疫檢查點抑制劑相關(guān)內(nèi)分泌代謝疾病
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        雙機、雙槳軸系下水前的安裝工藝
        免疫檢查點抑制劑在腫瘤治療中的不良反應(yīng)及毒性管理
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        雙機牽引ZDJ9道岔不同步問題的處理
        Loader軸在雙機桁架機械手上的應(yīng)用
        成人久久久精品乱码一区二区三区| 久久久久久久妓女精品免费影院| 亚洲无码毛片免费视频在线观看 | 老司机在线免费视频亚洲| 黑人老外3p爽粗大免费看视频| 丝袜美腿亚洲综合在线播放 | 伊人22综合| 国产一区二区高清不卡在线| 亚洲一区二区三区中文字幕网| 亚洲色欲色欲大片www无码| 亚洲综合婷婷久久| 少妇极品熟妇人妻高清| 人妖av手机在线观看| 狠狠色噜噜狠狠狠狠7777米奇| 巨爆乳中文字幕爆乳区| 久久亚洲一区二区三区四区五| 国产人妖乱国产精品人妖| 特级婬片国产高清视频| 69天堂国产在线精品观看| 亚洲av一区二区在线| 97人人模人人爽人人喊网| 久久中文字幕人妻熟av女蜜柚m| 国产精品亚洲综合天堂夜夜| 丰满老熟女性生活视频| 亚洲欧美国产精品久久| 久久久精品人妻一区亚美研究所| 国产精品日韩中文字幕| 穿着白丝啪啪的av网站| 精品少妇爆乳无码av无码专区| 麻豆国产av尤物网站尤物| 亚洲中文字幕综合网站| 夜夜躁狠狠躁日日躁视频 | 99久久人妻无码精品系列| 午夜精品久久久| 少妇隔壁人妻中文字幕| 国产成人无码一区二区三区| 亚洲国产精品嫩草影院久久| 日韩欧美亚洲国产一区二区三区| 国产精品亚洲精品一区二区| 亚洲一区二区三区播放| 亚洲精品成AV无在线观看|