欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

軟件程序的重啟方法及裝置制造方法

文檔序號(hào):6503535閱讀:182來(lái)源:國(guó)知局
軟件程序的重啟方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供一種軟件程序的重啟方法及裝置。本發(fā)明軟件程序的重啟方法,包括:調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配獨(dú)立內(nèi)存塊;將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi)存塊以生成讀數(shù)據(jù)通道;將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通道,在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí);在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道,以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě)數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。本發(fā)明實(shí)施例在軟件程序進(jìn)程重啟時(shí),通過(guò)只讀方式映射獲取獨(dú)立內(nèi)存塊中保存的數(shù)據(jù),以解決軟件重啟時(shí)比較慢的問(wèn)題。
【專(zhuān)利說(shuō)明】軟件程序的重啟方法及裝置

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)操作系統(tǒng)技術(shù),尤其涉及一種軟件程序的重啟方法及裝置。

【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)和通信業(yè)務(wù)的普及以及計(jì)算機(jī)和通信技術(shù)的飛速發(fā)展使得無(wú)處不在的網(wǎng) 絡(luò)服務(wù)正在成為可能,同時(shí)也對(duì)網(wǎng)絡(luò)系統(tǒng)中軟件程序的高可用性(High Availability,簡(jiǎn) 稱(chēng)HA)和可靠性提出了更高的要求。除了無(wú)故障運(yùn)行能力之外,從故障中快速恢復(fù)的能力 也是衡量高可用性系統(tǒng)的一個(gè)重要指標(biāo)。
[0003] -般地,當(dāng)運(yùn)行的軟件程序發(fā)生故障時(shí),可以通過(guò)簡(jiǎn)單地重啟軟件程序來(lái)恢復(fù)提 供業(yè)務(wù)。目前,為了避免軟件程序運(yùn)行時(shí)的重要狀態(tài)數(shù)據(jù)丟失,在重啟軟件程序時(shí),有兩種 處理方式:第一種,在操作系統(tǒng)內(nèi)核中設(shè)置一固定進(jìn)程,用于存儲(chǔ)軟件程序運(yùn)行時(shí)重要的狀 態(tài)數(shù)據(jù),當(dāng)軟件程序發(fā)生錯(cuò)誤重啟時(shí)從預(yù)留的內(nèi)存中恢復(fù)重要狀態(tài)數(shù)據(jù);第二種,將軟件程 序運(yùn)行時(shí)的重要狀態(tài)數(shù)據(jù)備份存儲(chǔ)于文件或者數(shù)據(jù)庫(kù),重啟軟件程序時(shí)從文件或者數(shù)據(jù) 庫(kù)中加載狀態(tài)數(shù)據(jù)。
[0004] 然而,現(xiàn)有的兩種處理方式都存在保存的數(shù)據(jù)恢復(fù)比較慢的問(wèn)題:第一種處理 方式,因?yàn)轭A(yù)留內(nèi)存和軟件程序在不同的地址空間,因此軟件程序在讀寫(xiě)數(shù)據(jù)時(shí)導(dǎo)致額外 的系統(tǒng)調(diào)用開(kāi)銷(xiāo),如進(jìn)程間通信(Inter-Process Communication,簡(jiǎn)稱(chēng)IPC)或者內(nèi)存復(fù) 制的開(kāi)銷(xiāo);第二種處理方式,在存儲(chǔ)和恢復(fù)數(shù)據(jù)時(shí),文件和數(shù)據(jù)庫(kù)訪問(wèn)操作受輸入/輸出 (Input/Output,簡(jiǎn)稱(chēng)I/O)讀寫(xiě)效率低的限制,影響軟件程序重啟時(shí)讀寫(xiě)數(shù)據(jù)的速度。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明實(shí)施例提供一種軟件程序的重啟方法及裝置,以解決軟件重啟時(shí)保存的數(shù) 據(jù)恢復(fù)比較慢的問(wèn)題,以實(shí)現(xiàn)軟件的高可用性。
[0006] 第一方面,本發(fā)明實(shí)施例提供一種軟件程序的重啟方法,包括:
[0007] 調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配獨(dú)立內(nèi)存塊;
[0008] 將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi)存塊以生成 讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從對(duì)應(yīng)的獨(dú)立內(nèi)存 塊中獲取數(shù)據(jù);
[0009] 將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通道,且在向所 述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中;
[0010] 在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道,以使所述 軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě)數(shù)據(jù)通道 更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
[0011] 在第一方面的第一種可能的實(shí)現(xiàn)方式中,在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò) 所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,包括:
[0012] 若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增加起始和結(jié)束標(biāo)識(shí)以表示所 述批量處理數(shù)據(jù)的起始和結(jié)束;
[0013] 通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中。
[0014] 根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式 中,通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,包括:
[0015] 將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的備份內(nèi)存塊 中;
[0016] 通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,且判斷批量處 理數(shù)據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù)。
[0017] 在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封裝的 編程訪問(wèn)接口,以供所述軟件程序進(jìn)程運(yùn)行時(shí)調(diào)用。
[0018] 根據(jù)第一方面,第一方面的第一種至第三種可能的實(shí)現(xiàn)方式中,在第一方面的第 四種可能的實(shí)現(xiàn)方式中,還包括:
[0019] 在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊。
[0020] 第二方面,本發(fā)明實(shí)施例提供一種軟件程序的重啟裝置,包括:
[0021] 分配模塊,用于調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配的獨(dú)立內(nèi)存塊;
[0022] 讀數(shù)據(jù)模塊,用于將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛 擬內(nèi)存塊以生成讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從 對(duì)應(yīng)的獨(dú)立內(nèi)存塊中獲取數(shù)據(jù);
[0023] 寫(xiě)數(shù)據(jù)模塊,用于將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù) 據(jù)通道,且在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú) 立內(nèi)存塊中;
[0024] 重啟模塊,用于在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù) 通道,以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所 述寫(xiě)數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
[0025] 在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述寫(xiě)數(shù)據(jù)模塊,包括:
[0026] 批處理單元,用于若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增加起始和 結(jié)束標(biāo)識(shí)以表示所述批量處理數(shù)據(jù)的起始和結(jié)束;
[0027] 寫(xiě)入單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊 中。
[0028] 根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式 中,所述寫(xiě)數(shù)據(jù)模塊,包括:
[0029] 備份單元,用于將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的 備份內(nèi)存塊中;
[0030] 判斷單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊 中,且判斷批量處理數(shù)據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù)。
[0031] 在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封裝的 編程訪問(wèn)接口,以供所述軟件程序進(jìn)程運(yùn)行時(shí)調(diào)用。
[0032] 根據(jù)第二方面,第二方面的第一種至第三種可能的實(shí)現(xiàn)方式中,在第二方面的第 四種可能的實(shí)現(xiàn)方式中,還包括:
[0033] 釋放模塊,用于在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊。
[0034] 本發(fā)明實(shí)施例軟件程序重啟的方法及裝置,通過(guò)分配與軟件程序進(jìn)程自身對(duì)應(yīng)的 獨(dú)立內(nèi)存塊,并將獨(dú)立內(nèi)存塊映射到軟件程序進(jìn)程自身的虛擬內(nèi)存,實(shí)現(xiàn)軟件程序進(jìn)程重 啟時(shí),通過(guò)只讀方式映射獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù),以解決軟件重啟時(shí)保存的數(shù)據(jù)恢 復(fù)比較慢的問(wèn)題。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0035] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0036] 圖1為本發(fā)明軟件程序重啟的方法實(shí)施例一的流程圖;
[0037] 圖2為本發(fā)明軟件程序重啟的方法實(shí)施例二的流程圖;
[0038] 圖3為本發(fā)明軟件程序重啟的裝置實(shí)施例一的結(jié)構(gòu)示意圖;
[0039] 圖4為圖3中讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道的位置示意圖;
[0040] 圖5為本發(fā)明軟件程序重啟的裝置實(shí)施例二的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0041] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042] 圖1為本發(fā)明軟件程序重啟的方法實(shí)施例一的流程圖,本實(shí)施例的軟件程序重啟 的方法適用于任意操作系統(tǒng),主要提高操作系統(tǒng)中的軟件重啟的恢復(fù)速度。該方法可以由 軟件程序重啟的裝置來(lái)實(shí)現(xiàn),該裝置由軟件和/或硬件的方式來(lái)實(shí)現(xiàn),配置在帶有操作系 統(tǒng)的設(shè)備中。如圖1所示,該方法包括以下步驟:
[0043] 步驟101、調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配獨(dú)立內(nèi)存塊;
[0044] 所述獨(dú)立內(nèi)存塊獨(dú)立于軟件程序進(jìn)程空間的虛擬內(nèi)存地址,即在實(shí)際的物理內(nèi)存 中處于相互獨(dú)立的不同地址上。在每個(gè)軟件程序進(jìn)程開(kāi)始運(yùn)行時(shí)即可以為該進(jìn)程分配一獨(dú) 立的內(nèi)存塊。服務(wù)程序還負(fù)責(zé)管理、分配獨(dú)立內(nèi)存,對(duì)獨(dú)立內(nèi)存始終擁有讀寫(xiě)權(quán)限。
[0045] 步驟102、將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi)存 塊以生成讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從對(duì)應(yīng)的 獨(dú)立內(nèi)存塊中獲取數(shù)據(jù);
[0046] 本步驟中,可以使用內(nèi)存映射技術(shù)將所述獨(dú)立內(nèi)存塊映射到所述軟件程序進(jìn)程空 間中的虛擬內(nèi)存塊中,具體實(shí)現(xiàn)時(shí),根據(jù)內(nèi)存映射基地址,將用獨(dú)立內(nèi)存塊內(nèi)偏移量表示的 指針數(shù)據(jù)映射轉(zhuǎn)換為虛擬內(nèi)存地址。
[0047] 本步驟中,采用只讀映射方式獲取獨(dú)立內(nèi)存塊中的數(shù)據(jù),原因是:通常情況下,軟 件程序進(jìn)程發(fā)生錯(cuò)時(shí),如懸空指針,飛指針等會(huì)破壞可寫(xiě)內(nèi)存中的數(shù)據(jù),因此若把數(shù)據(jù)保存 在本軟件程序進(jìn)程的可寫(xiě)內(nèi)存中,下次重啟恢復(fù)的時(shí)候數(shù)據(jù)可能也是壞的,而且這種錯(cuò)誤 通常不會(huì)在第一現(xiàn)場(chǎng)被捕捉到,累積到一定的程度,甚至連鎖效應(yīng),才引起崩潰。若是只讀 的內(nèi)存,則本軟件程序進(jìn)程對(duì)該區(qū)域的寫(xiě)操作是被禁止的,保存的數(shù)據(jù)不會(huì)被破壞,同時(shí)對(duì) 該區(qū)域的非法寫(xiě)操作也會(huì)在被第一時(shí)間被發(fā)現(xiàn),如操作系統(tǒng)或者硬件會(huì)產(chǎn)生內(nèi)存訪問(wèn)異 常,有助于調(diào)試。
[0048] 步驟103、將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通道, 且在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊 中;
[0049] 本步驟,具體實(shí)現(xiàn)時(shí),軟件程序進(jìn)程可以通過(guò)系統(tǒng)中的服務(wù)進(jìn)程,采用操作系統(tǒng) IPC機(jī)制實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入獨(dú)立內(nèi)存中,比如管道,系統(tǒng)IPC包括消息隊(duì)列,信號(hào)量,共享內(nèi)存 和套接字(SOCKET)等機(jī)制。
[0050] 步驟104、在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道, 以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě) 數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
[0051] 上述步驟,在所述軟件程序進(jìn)程發(fā)生故障或者升級(jí)需要重啟時(shí),通過(guò)所述寫(xiě)數(shù)據(jù) 通道將軟件進(jìn)程重啟前的重要數(shù)據(jù)寫(xiě)入到所述獨(dú)立內(nèi)存塊中。這樣,當(dāng)所述軟件程序進(jìn)程 重啟時(shí),首先初始化所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道,初始化完成后,所述軟件程序進(jìn)程通過(guò) 讀數(shù)據(jù)通道,以只讀映射的方式快速獲取重啟前的重要數(shù)據(jù),避免進(jìn)程通信或者訪問(wèn)數(shù)據(jù) 庫(kù)文件帶來(lái)的系統(tǒng)開(kāi)銷(xiāo),從而使得軟件快速完成重啟。
[0052] 需要說(shuō)明的是,本【技術(shù)領(lǐng)域】人員應(yīng)了解,本實(shí)施例中步驟102與103之間并不限定 先后時(shí)序關(guān)系。
[0053] 本實(shí)施例通過(guò)分配與軟件程序進(jìn)程自身對(duì)應(yīng)的獨(dú)立內(nèi)存塊,并將獨(dú)立內(nèi)存塊映射 到軟件程序進(jìn)程自身的虛擬內(nèi)存,實(shí)現(xiàn)軟件程序進(jìn)程重啟時(shí),以只讀方式映射獲取所述獨(dú) 立內(nèi)存塊中的數(shù)據(jù),解決軟件重啟時(shí)保存的數(shù)據(jù)恢復(fù)比較慢的問(wèn)題。
[0054] 圖2為本發(fā)明軟件程序重啟的方法實(shí)施例二的流程圖,本實(shí)施例在上一實(shí)施例的 基礎(chǔ)上,增加對(duì)批處理數(shù)據(jù)寫(xiě)的處理以及釋放獨(dú)立內(nèi)存塊的方法。如圖2所示,該方法包括 以下步驟:
[0055] 步驟201、調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配獨(dú)立內(nèi)存塊;
[0056] 步驟202、將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi)存 塊以生成讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從對(duì)應(yīng)的 獨(dú)立內(nèi)存塊中獲取數(shù)據(jù);
[0057] 生成讀數(shù)據(jù)通道的過(guò)程實(shí)質(zhì)上,是建立服務(wù)程序管理的獨(dú)立內(nèi)存塊和應(yīng)用進(jìn)程虛 擬內(nèi)存塊的只讀映射的過(guò)程;在使用讀數(shù)據(jù)通道時(shí),軟件程序進(jìn)程直接讀自身的虛擬內(nèi)存 塊中的數(shù)據(jù)。
[0058] 步驟203、將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通道, 且在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增 加起始和結(jié)束標(biāo)識(shí)以表示所述批量處理數(shù)據(jù)的起始和結(jié)束;
[0059] 在處理批量處理數(shù)據(jù)時(shí),可以根據(jù)網(wǎng)絡(luò)字段協(xié)議在數(shù)據(jù)報(bào)文中增加開(kāi)始和結(jié)束標(biāo) 識(shí),以識(shí)別批量處理數(shù)據(jù)的長(zhǎng)度。
[0060] 步驟204、將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的備份 內(nèi)存塊中;
[0061] 在通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中之前,執(zhí)行本 步驟,目的在于通過(guò)將將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到所述備份內(nèi)存塊中,避免因?yàn)樵?批處理數(shù)據(jù)寫(xiě)入過(guò)程中出現(xiàn)故障,無(wú)法恢復(fù)之前所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)的問(wèn)題,以提高 數(shù)據(jù)寫(xiě)入中的可靠性。
[0062] 步驟205、通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,且判 斷批量處理數(shù)據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù);
[0063] 本步驟中,若判斷批量處理數(shù)據(jù)中不含有結(jié)束標(biāo)識(shí),則表明批數(shù)據(jù)處理尚未全部 寫(xiě)入,則繼續(xù)執(zhí)行向獨(dú)立內(nèi)存塊寫(xiě)入動(dòng)作。當(dāng)批處理數(shù)據(jù)成功寫(xiě)入帶有結(jié)束標(biāo)識(shí)的報(bào)文,則 表明批數(shù)據(jù)全部寫(xiě)入成功,則系統(tǒng)釋放備份內(nèi)存塊中的數(shù)據(jù),釋放的方式可以由系統(tǒng)自動(dòng) 回收或者軟件程序根據(jù)需要設(shè)置回收的機(jī)制。
[0064] 步驟206、在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道, 以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě) 數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù);
[0065] 重新生成讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道一般通過(guò)調(diào)用系統(tǒng)接口完成。如寫(xiě)數(shù)據(jù)通道采 用IPC機(jī)制,IPC以面向連接的套接字為例,則重新生成寫(xiě)數(shù)據(jù)通道為初始化握手建立連接 的過(guò)程;重新生成讀數(shù)據(jù)通道以只讀內(nèi)存映射為例,指的是將本進(jìn)程的某些虛擬內(nèi)存區(qū)域 與存儲(chǔ)數(shù)據(jù)的獨(dú)立內(nèi)存映射關(guān)聯(lián)起來(lái)的過(guò)程。
[0066] 步驟207、在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊,若有備份內(nèi)存塊,也 同時(shí)釋放備份內(nèi)存塊;
[0067] 本步驟具體實(shí)現(xiàn)時(shí),可以由軟件程序通過(guò)編程接口要求或者管理員要求釋放時(shí)釋 放。
[0068] 本實(shí)施例,通過(guò)對(duì)批處理數(shù)據(jù)進(jìn)行結(jié)束和開(kāi)始的標(biāo)識(shí),且使用備份內(nèi)存塊備份數(shù) 據(jù),以實(shí)現(xiàn)讀操作性能同進(jìn)程本地內(nèi)存相當(dāng),寫(xiě)操作與進(jìn)程間通信相當(dāng),提高數(shù)據(jù)的可靠性 和讀寫(xiě)數(shù)據(jù)的效率。且應(yīng)用程序可以只維護(hù)一份數(shù)據(jù),避免了應(yīng)用程序在恢復(fù)數(shù)據(jù)時(shí)重建 數(shù)據(jù)結(jié)構(gòu)的開(kāi)銷(xiāo)。
[0069] 在上述實(shí)施例的基礎(chǔ)上,優(yōu)選的實(shí)現(xiàn)方式是:所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封 裝的編程訪問(wèn)接口,以供所述軟件程序進(jìn)程運(yùn)行時(shí)調(diào)用。通過(guò)將所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù) 通道為封裝的編程訪問(wèn)接口,實(shí)現(xiàn)系統(tǒng)的模塊化處理。如果每個(gè)軟件程序全部實(shí)現(xiàn)底層的 內(nèi)存映射,IPC等細(xì)節(jié),將導(dǎo)致系統(tǒng)的復(fù)雜度。因此可將所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道實(shí)現(xiàn) 為一個(gè)通用庫(kù)模塊,為應(yīng)用程序提供數(shù)據(jù)結(jié)構(gòu)級(jí)別的編程接口(可類(lèi)比C++標(biāo)準(zhǔn)庫(kù)里面的 vector等基礎(chǔ)數(shù)據(jù)結(jié)構(gòu))不必要每個(gè)軟件程序都要實(shí)現(xiàn)具體細(xì)節(jié),提高調(diào)用讀、寫(xiě)數(shù)據(jù)通道 的效率。
[0070] 圖3為本發(fā)明軟件程序重啟的裝置實(shí)施例一的結(jié)構(gòu)示意圖,該裝置通常集成在帶 有操作系統(tǒng)的設(shè)備里面,如圖3所示,包括:
[0071] 分配模塊31,用于調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配的獨(dú)立內(nèi)存塊;
[0072] 讀數(shù)據(jù)模塊32,用于將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間 虛擬內(nèi)存塊以生成讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道 從對(duì)應(yīng)的獨(dú)立內(nèi)存塊中獲取數(shù)據(jù);
[0073] 寫(xiě)數(shù)據(jù)模塊33,用于將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě) 數(shù)據(jù)通道,且在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的 獨(dú)立內(nèi)存塊中;
[0074] 重啟模塊34,用于在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù) 據(jù)通道,以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò) 所述寫(xiě)數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
[0075] 圖4為圖3中讀數(shù)據(jù)通道數(shù)據(jù)和寫(xiě)數(shù)據(jù)通道數(shù)據(jù)的位置示意圖,如圖4所示,所述 讀數(shù)據(jù)通道41在存儲(chǔ)模塊中獨(dú)立內(nèi)存塊與軟件程序進(jìn)程中虛擬內(nèi)存之間,用于在從所述 虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),以只讀映射方式從對(duì)應(yīng)的獨(dú)立內(nèi)存塊中獲取數(shù)據(jù);
[0076] 所述寫(xiě)數(shù)據(jù)通道42,在存儲(chǔ)模塊中獨(dú)立內(nèi)存塊與軟件程序進(jìn)程中虛擬內(nèi)存之間, 用于在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中;
[0077] 本實(shí)施例的裝置,用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù) 效果類(lèi)似,此處不再贅述。
[0078] 圖5為本發(fā)明軟件程序重啟的裝置實(shí)施例二的結(jié)構(gòu)示意圖,在上一實(shí)施例的基礎(chǔ) 上,進(jìn)一步地,還包括:
[0079] 釋放模塊51,用于在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊;
[0080] 進(jìn)一步地,所述寫(xiě)數(shù)據(jù)模塊33,包括:
[0081] 批處理單元,用于若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增加起始和 結(jié)束標(biāo)識(shí)以表示所述批量處理數(shù)據(jù)的起始和結(jié)束;
[0082] 寫(xiě)入單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊 中。
[0083] 可選地,所述寫(xiě)數(shù)據(jù)模塊33,包括:
[0084] 備份單元,用于將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的 備份內(nèi)存塊中;
[0085] 判斷單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊 中,且判斷批量處理數(shù)據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù)。 [0086] 進(jìn)一步地,所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封裝的編程訪問(wèn)接口,以供所述軟件 程序進(jìn)程運(yùn)行時(shí)調(diào)用。
[0087] 本發(fā)明各實(shí)施例的裝置,用于執(zhí)行本發(fā)明任意實(shí)施例所提供的軟件程序重啟的方 法的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類(lèi)似,具備相應(yīng)的功能模塊,此處不再贅述。
[0088] 本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通 過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程 序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟 或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0089] 最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制; 盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其 依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征 進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技 術(shù)方案的范圍。
【權(quán)利要求】
1. 一種軟件程序的重啟方法,其特征在于,包括: 調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配獨(dú)立內(nèi)存塊; 將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi)存塊以生成讀數(shù) 據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從對(duì)應(yīng)的獨(dú)立內(nèi)存塊中 獲取數(shù)據(jù); 將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通道,且在向所述虛 擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中; 在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道,以使所述軟件 程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě)數(shù)據(jù)通道更新 所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所 述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,包括: 若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增加起始和結(jié)束標(biāo)識(shí)以表示所述批 量處理數(shù)據(jù)的起始和結(jié)束; 通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě) 入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,包括: 將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的備份內(nèi)存塊中; 通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,且判斷批量處理數(shù) 據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封裝的 編程訪問(wèn)接口,以供所述軟件程序進(jìn)程運(yùn)行時(shí)調(diào)用。
5. 根據(jù)權(quán)利要求1-4任一所述的方法,其特征在于,還包括: 在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊。
6. -種軟件程序的重啟裝置,其特征在于,包括: 分配模塊,用于調(diào)用服務(wù)進(jìn)程為軟件程序進(jìn)程分配的獨(dú)立內(nèi)存塊; 讀數(shù)據(jù)模塊,用于將所述獨(dú)立內(nèi)存塊以只讀方式映射到所述軟件程序進(jìn)程空間虛擬內(nèi) 存塊以生成讀數(shù)據(jù)通道,且在從所述虛擬內(nèi)存塊讀取數(shù)據(jù)時(shí),通過(guò)所述讀數(shù)據(jù)通道從對(duì)應(yīng) 的獨(dú)立內(nèi)存塊中獲取數(shù)據(jù); 寫(xiě)數(shù)據(jù)模塊,用于將所述服務(wù)進(jìn)程與所述軟件程序進(jìn)程通過(guò)進(jìn)程間通信生成寫(xiě)數(shù)據(jù)通 道,且在向所述虛擬內(nèi)存塊寫(xiě)入數(shù)據(jù)時(shí),通過(guò)所述寫(xiě)數(shù)據(jù)通道將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi) 存塊中; 重啟模塊,用于在重啟所述軟件程序進(jìn)程時(shí),重新生成所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道, 以使所述軟件程序進(jìn)程通過(guò)所述讀數(shù)據(jù)通道獲取所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)或通過(guò)所述寫(xiě) 數(shù)據(jù)通道更新所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述寫(xiě)數(shù)據(jù)模塊包括: 批處理單元,用于若待寫(xiě)數(shù)據(jù)為批量處理數(shù)據(jù)時(shí),在批量處理數(shù)據(jù)中增加起始和結(jié)束 標(biāo)識(shí)以表示所述批量處理數(shù)據(jù)的起始和結(jié)束; 寫(xiě)入單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述寫(xiě)數(shù)據(jù)模塊包括: 備份單元,用于將所述獨(dú)立內(nèi)存塊中的數(shù)據(jù)備份到對(duì)應(yīng)分配給所述獨(dú)立內(nèi)存塊的備份 內(nèi)存塊中; 判斷單元,用于通過(guò)所述寫(xiě)數(shù)據(jù)通道將批量處理數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的獨(dú)立內(nèi)存塊中,且 判斷批量處理數(shù)據(jù)中是否含有結(jié)束標(biāo)識(shí),若是,則清空所述備份內(nèi)存塊中的數(shù)據(jù)。
9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述讀數(shù)據(jù)通道和寫(xiě)數(shù)據(jù)通道為封裝的 編程訪問(wèn)接口,以供所述軟件程序進(jìn)程運(yùn)行時(shí)調(diào)用。
10. 根據(jù)權(quán)利要求6-9任一所述的裝置,其特征在于,還包括: 釋放模塊,用于在軟件程序進(jìn)程執(zhí)行完成后,釋放所述獨(dú)立內(nèi)存塊。
【文檔編號(hào)】G06F9/48GK104216771SQ201310211089
【公開(kāi)日】2014年12月17日 申請(qǐng)日期:2013年5月30日 優(yōu)先權(quán)日:2013年5月30日
【發(fā)明者】徐向陽(yáng), 施廣宇 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
灌阳县| 新丰县| 舒城县| 岳阳市| 乾安县| 黄骅市| 自治县| 庆城县| 钟祥市| 南华县| 房山区| 蒲江县| 新密市| 凌云县| 兴宁市| 新化县| 纳雍县| 克拉玛依市| 台东市| 闸北区| 德昌县| 大埔区| 东山县| 呼玛县| 舞钢市| 南昌县| 隆子县| 上栗县| 长春市| 东阿县| 吴江市| 兰西县| 即墨市| 宁城县| 通榆县| 汝城县| 宣威市| 綦江县| 连云港市| 黄骅市| 奉贤区|