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)

針對嵌入式Linux系統(tǒng)的特點(diǎn),通過設(shè)置檢查點(diǎn)(checkpoint)實(shí)現(xiàn)ARM平臺(tái)進(jìn)程級容錯(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)程級容錯(cuò)。實(shí)驗(yàn)表明,該進(jìn)程級容錯(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)程級容錯(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ú)立于用戶程序,對用戶完全透明,方便用戶使用,代表性內(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)程級容錯(cuò)系統(tǒng)。

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

檢查點(diǎn)通過人為或周期性地向系統(tǒng)發(fā)送進(jìn)程保存信號來備份進(jìn)程狀態(tài),生成含有進(jìn)程信息的文件。當(dāng)檢測到進(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)存地址空間不同,不能使用簡單的函數(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)識符,是進(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信息,共需要保存三組信息:信號堆棧信息、掛起信號和信號處理函數(shù)。采用do_sigaltstack( )函數(shù)獲得信號堆棧信息,通過current->blocked獲得進(jìn)程掛起信號,通過current->sighand->action獲得信號處理函數(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ù)的信號后,通過k_read( )函數(shù)讀取進(jìn)程信息文件,根據(jù)文件中記錄的線程數(shù)目創(chuàng)建線程,將進(jìn)程相關(guān)的寄存器信息、信號信息以及內(nèi)存信息填充到相應(yīng)的PCB中;

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

3 進(jìn)程級容錯(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)信息,因此為了更好地測試進(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)程保存請求。系統(tǒng)響應(yīng)進(jìn)程保存請求后,會(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ù)請求。系統(tǒng)響應(yīng)進(jìn)程恢復(fù)請求后,會(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)程文件保存上:單機(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ā)送心跳信號,監(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)性能評測

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

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

表2 雙機(jī)進(jìn)程容錯(cuò)測試結(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)程級容錯(cuò)系統(tǒng)的優(yōu)勢更為明顯。從雙機(jī)測試的結(jié)果看,該進(jìn)程文件具有較好的遷移性,因此,該進(jìn)程級容錯(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)程用戶信息
債券市場對外開放的進(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)生與避免
主站蜘蛛池模板: 欧洲亚洲欧美国产日本高清| 色天堂无毒不卡| 久久精品aⅴ无码中文字幕| 中文字幕乱码二三区免费| 人妻精品久久无码区| 日韩欧美色综合| 免费99精品国产自在现线| 任我操在线视频| 午夜啪啪福利| 亚洲精品无码抽插日韩| 先锋资源久久| 国产JIZzJIzz视频全部免费| 国产乱子伦手机在线| 人人艹人人爽| 精品视频在线观看你懂的一区 | 国产成人综合久久| 97免费在线观看视频| 成人国产精品网站在线看| 成人在线欧美| 久久这里只精品热免费99| 亚洲日韩高清在线亚洲专区| 中字无码av在线电影| 国产成人一二三| 黄色网址手机国内免费在线观看| 色欲综合久久中文字幕网| 日本人妻丰满熟妇区| 国产在线自乱拍播放| 亚洲综合香蕉| 久久亚洲精少妇毛片午夜无码| 亚洲高清在线天堂精品| 亚国产欧美在线人成| 欧美精品aⅴ在线视频| 日本免费新一区视频| 欧美日韩中文国产va另类| 欧美自慰一级看片免费| 九色在线视频导航91| 日韩小视频在线观看| 天天视频在线91频| 青青青视频蜜桃一区二区| 国语少妇高潮| 亚洲精品自拍区在线观看| 亚洲天堂网2014| 国产91九色在线播放| 欧美一区二区自偷自拍视频| 自拍偷拍欧美日韩| 精品人妻AV区| 久久夜夜视频| 国内精品九九久久久精品| 亚洲国产欧美中日韩成人综合视频| 久久精品亚洲专区| 国产成人高清精品免费| 永久免费av网站可以直接看的| av尤物免费在线观看| 国产女人18毛片水真多1| 国产乱码精品一区二区三区中文 | 亚洲一区色| 国产一区二区网站| 色综合婷婷| 亚洲男人在线天堂| 一级毛片免费播放视频| 天天躁夜夜躁狠狠躁图片| 五月六月伊人狠狠丁香网| 亚洲综合中文字幕国产精品欧美| 国产乱人激情H在线观看| 亚洲香蕉伊综合在人在线| 91精品啪在线观看国产| 国产成人毛片| 国产91小视频在线观看| 98精品全国免费观看视频| 欧美日韩高清在线| 99在线观看免费视频| 国产日韩欧美黄色片免费观看| 91成人在线免费视频| 国产对白刺激真实精品91| 国产91透明丝袜美腿在线| 国产精品一区二区不卡的视频| 婷婷六月综合网| 高清无码一本到东京热| 欧美不卡二区| 亚洲国产精品日韩av专区| 69综合网| 欧美一级片在线|