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

設(shè)置進(jìn)程檢查點(diǎn)的嵌入式容錯(cuò)系統(tǒng)設(shè)計(jì)

2014-08-12 08:46:10王福友楊斌
關(guān)鍵詞:進(jìn)程用戶信息

王福友,楊斌

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

設(shè)置進(jìn)程檢查點(diǎn)的嵌入式容錯(cuò)系統(tǒng)設(shè)計(jì)

王福友,楊斌

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

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

ARM;嵌入式Linux;檢查點(diǎn);容錯(cuò)

引 言

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

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

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

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

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

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

(1) 用戶接口模塊

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

(2) 進(jìn)程信息存儲(chǔ)模塊

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

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

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

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

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

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

圖2 進(jìn)程文件格式

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

由于在內(nèi)核操作文件沒有標(biāo)準(zhǔn)庫,因此要利用內(nèi)核的一些函數(shù),在本系統(tǒng)中主要使用兩個(gè)函數(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代表要保存進(jìn)程信息的文件,參數(shù)buf代表指向要保存的緩沖區(qū)指針,參數(shù)count代表要保存的緩沖區(qū)大小。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 進(jìn)程級(jí)容錯(cuò)系統(tǒng)的實(shí)現(xiàn)

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

3.1 單機(jī)實(shí)現(xiàn)

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

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

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

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

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

3.2 雙機(jī)實(shí)現(xiàn)

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

圖5 雙機(jī)進(jìn)程容錯(cuò)實(shí)現(xiàn)方法

4 系統(tǒng)性能評(píng)測(cè)

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

表1 單機(jī)進(jìn)程容錯(cuò)測(cè)試結(jié)果

表2 雙機(jī)進(jìn)程容錯(cuò)測(cè)試結(jié)果

由表1、表2可知,隨著數(shù)據(jù)量和運(yùn)算量的增加,進(jìn)程保存與恢復(fù)的耗時(shí)以及進(jìn)程文件大小相應(yīng)地增加,但是進(jìn)程保存與恢復(fù)耗時(shí)與程序運(yùn)行時(shí)間的百分比卻明顯下降,這充分地說明運(yùn)算量大且實(shí)時(shí)性較高的程序上運(yùn)用該進(jìn)程級(jí)容錯(cuò)系統(tǒng)的優(yōu)勢(shì)更為明顯。從雙機(jī)測(cè)試的結(jié)果看,該進(jìn)程文件具有較好的遷移性,因此,該進(jìn)程級(jí)容錯(cuò)系統(tǒng)可以運(yùn)用到基于嵌入式平臺(tái)的分布式計(jì)算系統(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的會(huì)話斷點(diǎn)保存與恢復(fù)軟件[J]. Computer Engineering, 2010, 36(8).

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

[7] 門朝光,焦亮,李香,等.基于 Linux內(nèi)核的進(jìn)程檢查點(diǎn)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(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)

猜你喜歡
進(jìn)程用戶信息
債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
展會(huì)信息
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
主站蜘蛛池模板: 国产香蕉一区二区在线网站| 蜜芽国产尤物av尤物在线看| 免费在线色| 五月综合色婷婷| 欧美在线三级| AV网站中文| 国产靠逼视频| 天天爽免费视频| 在线国产91| 91无码网站| 在线网站18禁| 草逼视频国产| 女人爽到高潮免费视频大全| 伊人精品视频免费在线| 精品国产www| 91精品啪在线观看国产60岁| 91久久天天躁狠狠躁夜夜| 黄色免费在线网址| 99这里只有精品6| 国产网友愉拍精品| 国产噜噜在线视频观看| 在线中文字幕日韩| 最新国产精品第1页| 亚洲va视频| 97se亚洲综合在线韩国专区福利| 色婷婷成人| 国产精品国产主播在线观看| 一级毛片在线播放免费| 88av在线看| 国产精品手机在线播放| 日韩a在线观看免费观看| 色综合成人| 真人高潮娇喘嗯啊在线观看 | 一级毛片免费高清视频| 在线观看亚洲国产| 91成人在线观看| 久久这里只有精品国产99| 夜夜爽免费视频| 免费无码又爽又刺激高| 国产欧美日韩一区二区视频在线| 任我操在线视频| 久久亚洲国产最新网站| 9久久伊人精品综合| 国产日产欧美精品| 久久国产精品夜色| 狂欢视频在线观看不卡| 国产手机在线观看| 亚洲欧美精品日韩欧美| 热99re99首页精品亚洲五月天| 亚洲一区二区三区国产精华液| 99性视频| 国产在线视频自拍| 亚洲国产精品不卡在线| 日韩美女福利视频| 青青草国产精品久久久久| 91午夜福利在线观看精品| 国产精品免费福利久久播放| 日韩美毛片| 国产成人三级| 好紧好深好大乳无码中文字幕| 国产精品污污在线观看网站| 91外围女在线观看| 在线观看免费黄色网址| 国产h视频免费观看| 久久精品国产999大香线焦| 精品国产成人av免费| 亚洲欧美日韩另类在线一| 视频二区国产精品职场同事| 激情视频综合网| 国产91精品最新在线播放| 国产剧情无码视频在线观看| 99热国产这里只有精品无卡顿"| 99视频精品在线观看| 国产激情无码一区二区免费| 97视频精品全国免费观看| 欧美日韩免费| 九九久久精品免费观看| 国产成人永久免费视频| 91午夜福利在线观看| 国产麻豆精品在线观看| 亚洲中文字幕手机在线第一页| 中文字幕在线免费看|