專利名稱:獲取基于SaaS的交互式程序的交互強(qiáng)度的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種獲取基于SaaS的交互式程序的交互強(qiáng)度 的方法。
背景技術(shù):
隨著移動(dòng)互聯(lián)網(wǎng)用戶數(shù)量的爆炸式增長(zhǎng),導(dǎo)致應(yīng)用軟件使用的需求量急劇增加, 但是由于用戶的接入終端受到配置和計(jì)算能力的限制,因此一個(gè)終端無(wú)法承載所有的應(yīng)用 軟件、存儲(chǔ)眾多類型的資源,基于此,一種新的軟件應(yīng)用模式軟件即服務(wù)(Software as a Service,簡(jiǎn)稱SaaS)應(yīng)運(yùn)而生,SaaS是一種通過(guò)Internet提供軟件的模式,由提供商將應(yīng) 用軟件統(tǒng)一部署在自己的服務(wù)器上,用戶則可以根據(jù)自己的實(shí)際需求,通過(guò)各種不同的終 端訪問(wèn)互聯(lián)網(wǎng)以向提供商定購(gòu)所需的應(yīng)用軟件服務(wù),而且用戶無(wú)需對(duì)軟件進(jìn)行維護(hù),服務(wù) 提供商會(huì)全權(quán)管理和維護(hù)軟件。對(duì)于許多小型企業(yè)來(lái)說(shuō),SaaS是采用先進(jìn)技術(shù)的最好途徑, 它消除了企業(yè)購(gòu)買、構(gòu)建和維護(hù)基礎(chǔ)設(shè)施和應(yīng)用程序的需要。
但是,在SaaS軟件服務(wù)中,大部分程序都具有很強(qiáng)的人機(jī)交互特性,一個(gè)應(yīng)用程 序很可能在一段時(shí)間內(nèi)交互較強(qiáng),一段時(shí)間內(nèi)交互較弱,而在現(xiàn)有技術(shù)中并沒(méi)有能夠獲知 SaaS系統(tǒng)中交互式程序的交互強(qiáng)度的方法。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方法,以 獲取基于SaaS的交互式程序的交互強(qiáng)度。
本發(fā)明提供了一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方法,包括
截獲軟件即服務(wù)系統(tǒng)SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用;
根據(jù)所述核心系統(tǒng)調(diào)用獲取所述主入口程序生成的至少兩個(gè)子進(jìn)程以及所述至 少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào);
根據(jù)所述至少兩個(gè)子進(jìn)程中各子進(jìn)程是否發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,確定 各子進(jìn)程的進(jìn)程類型;
根據(jù)所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)、窗口號(hào)以及進(jìn)程類 型,確定所述至少兩個(gè)子進(jìn)程之間的關(guān)系;
若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用,則確 定所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的當(dāng)前交互強(qiáng)度,并根據(jù)所述至少兩個(gè)子進(jìn)程之間的關(guān) 系確定與所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程的當(dāng)前交互強(qiáng)度。
采用上述本發(fā)明技術(shù)方案的有益效果是通過(guò)截獲軟件即服務(wù)系統(tǒng)SaaS平臺(tái)中 的核心系統(tǒng)調(diào)用、第一系統(tǒng)調(diào)用和第二系統(tǒng)調(diào)用,從而獲取SaaS系統(tǒng)中主入口程序創(chuàng)建的 至少兩個(gè)子進(jìn)程的相關(guān)信息,進(jìn)而根據(jù)至少兩個(gè)子進(jìn)程的相關(guān)信息而最終獲取各子進(jìn)程的 當(dāng)前交互強(qiáng)度。
圖1為本發(fā)明實(shí)施例一提供的一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方 法的流程示意圖2為本發(fā)明實(shí)施例一中Switch算法執(zhí)行圖3為本發(fā)明實(shí)施例一中Back_T算法執(zhí)行圖。
具體實(shí)施方式
由于近年流行的虛擬化技術(shù)對(duì)SaaS也有很大影響,將應(yīng)用軟件運(yùn)行在獨(dú)有的虛 擬環(huán)境中,稱為應(yīng)用軟件的虛擬化,軟件虛擬化消除了運(yùn)行環(huán)境共享帶來(lái)的多種弊端,同時(shí) 得益于可遷移等特性,因此可以更加靈活地使用SaaS運(yùn)營(yíng)商的計(jì)算資源。而虛擬化是一個(gè) 廣義的術(shù)語(yǔ),是指計(jì)算元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行。虛擬化計(jì)算系統(tǒng)可 以更加充分合理地利用計(jì)算資源,滿足日益多樣的計(jì)算需求,使人們能夠透明、高效、可定 制地使用計(jì)算資源,從而真正實(shí)現(xiàn)靈活構(gòu)建、按需計(jì)算的理念。
虛擬機(jī)是計(jì)算系統(tǒng)虛擬化的基礎(chǔ),將虛擬化技術(shù)與SaaS技術(shù)相結(jié)合,將軟件作為 服務(wù)提供,并且通過(guò)虛擬化技術(shù)可以使得軟件的顯示和執(zhí)行分離,并將不同平臺(tái)和機(jī)器的 應(yīng)用顯示融合,通過(guò)分離可以在輕量級(jí)、移動(dòng)客戶端上訪問(wèn)應(yīng)用,較Web-based (基于網(wǎng)頁(yè)) 應(yīng)用而言具有更好的用戶交互體驗(yàn)。因此為了保證軟件的服務(wù)質(zhì)量,軟件的用戶體驗(yàn),提高 資源的利用率以及并發(fā)處理用戶請(qǐng)求的能力,需要具有一套良好的監(jiān)控調(diào)度系統(tǒng),跟蹤系 統(tǒng)中的實(shí)時(shí)進(jìn)程,并對(duì)系統(tǒng)中的突發(fā)事件做出及時(shí)、恰當(dāng)?shù)奶幚?,例如,?dāng)一個(gè)交互式應(yīng)用 程序交互較弱時(shí),由于其不會(huì)占用計(jì)算資源,因此,可以釋放其所占用的資源或降低其調(diào)度 優(yōu)先級(jí);而當(dāng)一個(gè)交互式應(yīng)用程序交互較強(qiáng)時(shí),則可以為其分配計(jì)算資源并提高其調(diào)度優(yōu) 先級(jí)。
圖1為本發(fā)明實(shí)施例一提供的一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方 法的流程示意圖,如圖1所示,所述方法可以包括如下步驟
步驟101,截獲軟件即服務(wù)系統(tǒng)SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào) 用;
步驟102,根據(jù)所述核心系統(tǒng)調(diào)用獲取所述主入口程序生成的至少兩個(gè)子進(jìn)程以 及所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào);
步驟103,根據(jù)所述至少兩個(gè)子進(jìn)程中各子進(jìn)程是否發(fā)起與端口相關(guān)的第一系統(tǒng) 調(diào)用,確定各子進(jìn)程的進(jìn)程類型;
步驟104,根據(jù)所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)、窗口號(hào)以及 進(jìn)程類型,確定所述至少兩個(gè)子進(jìn)程之間的關(guān)系;
步驟105,若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng) 調(diào)用,則確定所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的當(dāng)前交互強(qiáng)度,并根據(jù)所述至少兩個(gè)子進(jìn) 程之間的關(guān)系確定與所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程的當(dāng)前交互強(qiáng)度。
首先,需要說(shuō)明的是系統(tǒng)調(diào)用的原理,例如,在Linux系統(tǒng)中,其系統(tǒng)調(diào)用一般通 Sint 80h實(shí)現(xiàn),用系統(tǒng)調(diào)用號(hào)來(lái)區(qū)分入口函數(shù)。操作系統(tǒng)實(shí)現(xiàn)系統(tǒng)調(diào)用的基本過(guò)程是 應(yīng)用程序調(diào)用庫(kù)函數(shù)應(yīng)用程序編程接口(ApplicationProgramming Interface,簡(jiǎn)稱API), API將系統(tǒng)調(diào)用號(hào)存入通用擴(kuò)展累加器(Extended accumulator register,簡(jiǎn)稱EAX),然后通過(guò)中斷調(diào)用使系統(tǒng)進(jìn)入內(nèi)核態(tài);內(nèi)核中的中斷處理函數(shù)根據(jù)系統(tǒng)調(diào)用號(hào),調(diào)用對(duì)應(yīng)的內(nèi)核函數(shù)(即系統(tǒng)調(diào)用);系統(tǒng)調(diào)用完成相應(yīng)功能,并將返回值存入EAX,返回到中斷處理函數(shù); 中斷處理函數(shù)返回到API中;API將EAX返回給應(yīng)用程序,從而實(shí)現(xiàn)系統(tǒng)調(diào)用的全過(guò)程。另外,交互式程序可以是用戶敲擊鍵盤,移動(dòng)鼠標(biāo)的事件所產(chǎn)生的進(jìn)程,同時(shí)觀看視屏,音頻也可以是認(rèn)為是一種交互,這些信息都需要與計(jì)算機(jī)硬件交流。而在SaaS平臺(tái)中用戶通過(guò)虛擬網(wǎng)絡(luò)計(jì)算機(jī)(Virtual NetworkComputing,簡(jiǎn)稱VNC)與顯示節(jié)點(diǎn)(對(duì)應(yīng)于Iinux下真實(shí)進(jìn)程Xvnc,處理用戶桌面的顯示,其中,第一顯示節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)用戶)通信,從用戶發(fā)起交互到得到回顯信息,中間參與的一系列進(jìn)程都會(huì)發(fā)起read (linux下讀操作系統(tǒng)調(diào)用)或 readv (linux下另一種讀操作系統(tǒng)調(diào)用)系統(tǒng)調(diào)用,而與這些進(jìn)程相關(guān)的子進(jìn)程,大多都通過(guò)管道,消息隊(duì)列或偽終端進(jìn)行進(jìn)程間通信,這些通信機(jī)制都有read或readv系統(tǒng)調(diào)用的參與,所以對(duì)read和readv系統(tǒng)調(diào)用的截獲可以直接反應(yīng)用戶的交互情況。
在本發(fā)明實(shí)施例中,執(zhí)行主體可以是監(jiān)控調(diào)度系統(tǒng),其可以部署在SaaS平臺(tái)中, 以獲取SaaS平臺(tái)上的各交互式程序的交互強(qiáng)度,從而為后續(xù)的資源分配以及優(yōu)先級(jí)調(diào)度提供有效的依據(jù)。由于在SaaS平臺(tái)中每個(gè)計(jì)算節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)Iinux虛擬機(jī),也可以認(rèn)為是一個(gè)真實(shí)的物理機(jī),都有一個(gè)計(jì)算資源的統(tǒng)一分配入口,所有的計(jì)算資源請(qǐng)求都是通過(guò)主入口程序分配的。而Linux系統(tǒng)提供了一個(gè)很強(qiáng)大的用于跟蹤目標(biāo)進(jìn)程的系統(tǒng)調(diào)用sys_ ptrace,父進(jìn)程可以在用戶態(tài)觀察和控制其子進(jìn)程的執(zhí)行,并允許父進(jìn)程檢查和替換子進(jìn)程的內(nèi)核鏡像(包括寄存器)的值。其基本原理是當(dāng)使用了 Ptrace跟蹤后,大多數(shù)發(fā)送給被跟蹤的子進(jìn)程的信號(hào),都會(huì)被轉(zhuǎn)發(fā)給父進(jìn)程,而子進(jìn)程則會(huì)被阻塞,這時(shí)子進(jìn)程的狀態(tài)就會(huì)被系統(tǒng)標(biāo)注為被跟蹤標(biāo)記TASK_TRACED,而父進(jìn)程收到信號(hào)后,就可以對(duì)停止下來(lái)的子進(jìn)程進(jìn)行檢查和修改,然后讓子進(jìn)程繼續(xù)運(yùn)行。
因此,本發(fā)明實(shí)施例可以通過(guò)ptrace的系統(tǒng)調(diào)用來(lái)跟蹤主入口程序,但是, ptrace卻無(wú)法跟蹤主入口程序產(chǎn)生的子進(jìn)程。又由于主入口程序創(chuàng)建大部分子進(jìn)程時(shí)都是通過(guò)sys_fork( Iinux下系統(tǒng)調(diào)用創(chuàng)建子進(jìn)程,復(fù)制父進(jìn)程內(nèi)容)或sys_vfork (Iinux下系統(tǒng)調(diào)用,暫時(shí)共享父進(jìn)程空間,寫時(shí)創(chuàng)建子進(jìn)程空間)這兩個(gè)核心系統(tǒng)調(diào)用來(lái)完成的,而這兩個(gè)系統(tǒng)調(diào)用并沒(méi)有復(fù)制父進(jìn)程的狀態(tài)信息,所以父進(jìn)程的跟蹤標(biāo)志無(wú)法被子進(jìn)程捕獲, 從而父進(jìn)程無(wú)法繼續(xù)跟蹤和控制其子進(jìn)程的執(zhí)行。然而Iinux還提供了另一個(gè)用于主入口程序創(chuàng)建子進(jìn)程的系統(tǒng)調(diào)用SyS_Clone (linux下系統(tǒng)調(diào)用,子進(jìn)程復(fù)制父進(jìn)程所有標(biāo)志屬性),該系統(tǒng)調(diào)用可以復(fù)制父進(jìn)程的狀態(tài)信息,因此,本實(shí)施例通過(guò)Ptrace截獲SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用,當(dāng)捕捉到父進(jìn)程即主入口程序的系統(tǒng)調(diào)用為sys_ fork或sys_vfork時(shí),則修改寄存器的系統(tǒng)調(diào)用號(hào),將系統(tǒng)調(diào)用sys_fork或sys_vfork替換為SyS_Cl0ne,這樣就可以獲得所有通過(guò)主入口程序所產(chǎn)生的至少兩個(gè)子進(jìn)程的執(zhí)行信息了,如至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào)等,同時(shí)這樣的替換只影響標(biāo)志位,不影響程序的實(shí)際執(zhí)行。
由于上述實(shí)施例中可以通過(guò)ptrace以及sys_clone截獲主入口程序所創(chuàng)建的至少兩個(gè)子進(jìn)程的執(zhí)行信息,但是,卻不能確定這些子進(jìn)程的類型,因此,在本實(shí)施例中,需進(jìn)一步通過(guò)Ptrace以及sys^lone對(duì)至少兩個(gè)子進(jìn)程進(jìn)行跟蹤,即根據(jù)至少兩個(gè)子進(jìn)程中各子進(jìn)程是否發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,從而確定各子進(jìn)程的進(jìn)程類型,具體的
若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用, 且與端口相關(guān)的第一系統(tǒng)調(diào)用為分配端口的系統(tǒng)調(diào)用sys_bind,則根據(jù)sys_bind獲取當(dāng)前發(fā)起sys_ bind的子進(jìn)程的端口號(hào),并確定當(dāng)前子進(jìn)程的類型為展現(xiàn)進(jìn)程VspadPiOcess、進(jìn)程名為 Xvnc ;
若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且與端口 相關(guān)的第一系統(tǒng)調(diào)用為連接端口的系統(tǒng)調(diào)用sys_connect,則根據(jù)sys_connect獲取當(dāng) 前發(fā)起sys_connect的子進(jìn)程的端口號(hào),并確定當(dāng)前子進(jìn)程的類型為執(zhí)行進(jìn)程Vprocess_ Process、進(jìn)程名為 Xclient ;
若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程未發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且未發(fā)起 第一系統(tǒng)調(diào)用的子進(jìn)程與另一個(gè)進(jìn)程名為Xvnc的子進(jìn)程具有相同的窗口號(hào),則確定未發(fā) 起第一系統(tǒng)調(diào)用的子進(jìn)程為Xvnc子進(jìn)程的輔助進(jìn)程;若輔助進(jìn)程的進(jìn)程名在預(yù)設(shè)的第一 白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第一展現(xiàn)輔助進(jìn)程VSpaCe_Like_PiOCeSS ; 若所述輔助進(jìn)程的進(jìn)程名不在預(yù)設(shè)的第一白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第 二展現(xiàn)輔助進(jìn)程 Vspace_Relate_Process ;
若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程未發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且未發(fā)起 第一系統(tǒng)調(diào)用的子進(jìn)程的父進(jìn)程號(hào)與另一個(gè)進(jìn)程名為Xclient的子進(jìn)程的進(jìn)程號(hào)相同,則 確定所述未發(fā)起第一系統(tǒng)調(diào)用的子進(jìn)程為Xclient子進(jìn)程的輔助進(jìn)程;若所述輔助進(jìn)程 的進(jìn)程名在預(yù)設(shè)的第二白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第一執(zhí)行輔助進(jìn)程 Vprocess_Like_Process ;若輔助進(jìn)程的進(jìn)程名不在預(yù)設(shè)的第二白名單內(nèi),則確定所述輔助 進(jìn)程的進(jìn)程類型為第二執(zhí)行輔助進(jìn)程Vprocess_Relate_Process。
進(jìn)一步的,在本實(shí)施例中,根據(jù)至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)、 窗口號(hào)以及進(jìn)程類型,確定至少兩個(gè)子進(jìn)程之間的關(guān)系具體為
若至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vprocess_Process類型,且所述兩個(gè)子 進(jìn)程分別對(duì)應(yīng)的父進(jìn)程號(hào)、進(jìn)程名、端口號(hào)均相同,則確定兩個(gè)VpiOCeSS_PlX)CeSS類型的 子進(jìn)程為兄弟進(jìn)程;
若至少兩個(gè)子進(jìn)程中的一個(gè)Vspace_Process類型的子進(jìn)程與另一個(gè)Vprocess_ Process類型的子進(jìn)程的端口號(hào)相同,則確定Vprocess_Process類型的子進(jìn)程為Vspace_ Process類型的子進(jìn)程的輔助進(jìn)程;
若至少兩個(gè)子進(jìn)程中的一個(gè)Vprocess_Relate_Process類型的子進(jìn)程的父進(jìn)程 號(hào)與另一個(gè)Vprocess_Process類型的子進(jìn)程的進(jìn)程號(hào)相同,且具有相同的窗口號(hào),則確定 Vprocess_Relate_Process類型的子進(jìn)程為Vprocess_Process類型的子進(jìn)程的輔助進(jìn)程;
若至少兩個(gè)子進(jìn)程中不存在與Vprocess_Process類型的子進(jìn)程的端口號(hào)相同 的Vspace_Process類型的子進(jìn)程,則新建一個(gè)進(jìn)程類型為虛擬展現(xiàn)進(jìn)程Fake_Vspace_ Process的子進(jìn)程,并將Fake_Vspace_Process類型的子進(jìn)程的端口號(hào)設(shè)置為Vprocess_ Process類型的子進(jìn)程的端口號(hào),則Vprocess_Process類型的子進(jìn)程為Fake_Vspace_ Process類型的子進(jìn)程的輔助進(jìn)程;
若至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace_Process類型或Fake_Vspace_ Process類型或兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程為Vspace_Process類型、另一子進(jìn)程為Fake_ VSpaCe_Pix)CeSS類型,且該兩個(gè)子進(jìn)程對(duì)應(yīng)的父進(jìn)程號(hào)相同,則確定該兩個(gè)子進(jìn)程為兄弟 進(jìn)程;
若至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace_Relate_Process類型或 Vprocess_Relate_Process類型,且該兩個(gè)子進(jìn)程對(duì)應(yīng)相同的窗口號(hào),則確定該兩個(gè)子進(jìn)程 為兄弟進(jìn)程;
若至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace_Like_Process類型或Vprocess_ Like_Process類型,則確定該兩個(gè)子進(jìn)程為兄弟進(jìn)程。
在本實(shí)施例中,確定各子進(jìn)程的類型后,可以初始化各子進(jìn)程的交互強(qiáng)度,例如, 可以將各子進(jìn)程的交互強(qiáng)度置為初始值,通常,初始值為O。
進(jìn)一步的,若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào) 用,則確定發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的當(dāng)前交互強(qiáng)度,并根據(jù)至少兩個(gè)子進(jìn)程之間的關(guān) 系確定與發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程的當(dāng)前交互強(qiáng)度具體為
截獲至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起的用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用,若讀 取數(shù)據(jù)的第二系統(tǒng)調(diào)用為SyS_read或SyS_readv,且發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng) 度小于預(yù)設(shè)的閾值,則將發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度增加預(yù)設(shè)的步進(jìn)值,本實(shí) 施例中,預(yù)設(shè)的閾值可以是根據(jù)實(shí)際需要設(shè)置的不為O的自然數(shù),例如可以是30、50、或100坐 寸ο
需要說(shuō)明的是,在本實(shí)施例中,與發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程 為發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程、以及發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程的 輔助進(jìn)程。因此,首先確定發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程,若兄弟進(jìn)程的交互強(qiáng)度 大于預(yù)設(shè)的初始值,則對(duì)兄弟進(jìn)程的交互強(qiáng)度減去步進(jìn)值;若兄弟進(jìn)程的交互強(qiáng)度為初始 值,則將兄弟進(jìn)程的輔助進(jìn)程的交互強(qiáng)度置為初始值。例如,若初始值為0,首先根據(jù)上述關(guān) 系確定發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程,如果存在交互強(qiáng)度大于O的兄弟進(jìn)程,則 將該兄弟進(jìn)程的交互強(qiáng)度減去步進(jìn)值;如果存在交互強(qiáng)度為O的兄弟進(jìn)程,則以該兄弟進(jìn) 程為節(jié)點(diǎn)逐一置零該兄弟進(jìn)程的所有輔助進(jìn)程的交互強(qiáng)度。每個(gè)進(jìn)程的交互強(qiáng)度即可以認(rèn) 為是它當(dāng)前的活躍度,也可以認(rèn)為是它對(duì)未來(lái)活躍度的信心指數(shù),當(dāng)一個(gè)進(jìn)程交互活躍時(shí) 會(huì)提高它本身的交互信心指數(shù)也就是當(dāng)前交互強(qiáng)度,而當(dāng)其它進(jìn)程活躍時(shí)則會(huì)逐漸降低該 進(jìn)程的信心指數(shù)。
在本實(shí)施例中,通過(guò)截獲SaaS平臺(tái)中的核心系統(tǒng)調(diào)用、第一系統(tǒng)調(diào)用和第二系統(tǒng) 調(diào)用,從而獲取SaaS系統(tǒng)中主入口程序創(chuàng)建的至少兩個(gè)子進(jìn)程的相關(guān)信息,并根據(jù)至少兩 個(gè)子進(jìn)程的相關(guān)信息而最終獲取各子進(jìn)程的當(dāng)前交互強(qiáng)度,以使SaaS系統(tǒng)能夠根據(jù)各子 進(jìn)程的交互強(qiáng)度合理的分配資源,從而提高SaaS資源的利用率。
進(jìn)一步的,在本實(shí)施例中,若至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù) 的第二系統(tǒng)調(diào)用之后,還可以包括
根據(jù)發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型更新上一次發(fā)起第二系統(tǒng)調(diào)用的子 進(jìn)程的交互強(qiáng)度,具體為
若發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型為Vprocess_Process、Vspace_Relate_ Process、Vprocess_Like_Process 或 Vprocess_Relate_Process,則將上一次發(fā)起第二 系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度減去步進(jìn)值。在發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型 為 Vprocess_Process> Vspace_Relate_Process、Vprocess_Like_Process 或 Vprocess_ RelattPiOcess的場(chǎng)景下,通常當(dāng)前發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程與上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程之間是一種切換關(guān)系,即一旦從當(dāng)前發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程切換到上一次 發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程,當(dāng)前發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程將會(huì)出現(xiàn)零交互,此時(shí)交互 強(qiáng)度的獲取可以通過(guò)Switch算法實(shí)現(xiàn),圖2為本發(fā)明實(shí)施例的Switch算法執(zhí)行圖,如圖2 所示,若本實(shí)施例中設(shè)置的步進(jìn)值為1,PU P2的初始值均為0,則沿著時(shí)間軸X,子進(jìn)程Pl 先發(fā)起讀取數(shù)據(jù)的系統(tǒng)調(diào)用即Pl先有交互,隨著交互操作的累積,Pl的交互強(qiáng)度隨著發(fā) 起讀取數(shù)據(jù)的系統(tǒng)調(diào)用的次數(shù)逐漸增加步進(jìn)值,即Pl第一次交互后其交互強(qiáng)度為1,此時(shí) P2沒(méi)有交互,其交互強(qiáng)度為初始值O不變,第二次交互后其交互強(qiáng)度為2,此時(shí)P2還沒(méi)有交 互,其交互強(qiáng)度依舊為初始值O不變,隨著交互操作的累積,Pl的交互強(qiáng)度到達(dá)最大值MAX, 隨后子進(jìn)程P2也發(fā)起讀取數(shù)據(jù)的系統(tǒng)調(diào)用即P2開(kāi)始交互,在Switch算法中,PU P2之間 反映的是一種切換關(guān)系,所以一旦從Pl切換到P2,子進(jìn)程Pl將會(huì)出現(xiàn)零交互,此時(shí),則隨 著P2的交互次數(shù)增加P2的交互強(qiáng)度,同時(shí)減小Pl的交互強(qiáng)度,最后隨著P2的交互,Pl的 交互強(qiáng)度降低為0,P2的交互強(qiáng)度增加到Max。當(dāng)然有可能會(huì)出現(xiàn),從子進(jìn)程Pl切換到P2 后,又很快切換回P1,對(duì)于這種情況,Pl之前的交互強(qiáng)度就起到了作用,之前的交互強(qiáng)度提 供了對(duì)于Pl交互活躍的信心,這樣當(dāng)切換回Pl時(shí),由于Pl的活躍指數(shù)并沒(méi)有降到很低,所 以,進(jìn)程的交互強(qiáng)度,一方面可以認(rèn)為是進(jìn)程當(dāng)前的可能活躍度,同時(shí)也是對(duì)未來(lái)活躍度的 一種預(yù)估。
若發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型為Vspace_Process、Vspace_Like_ Process或Fake_Vspace_Process,且上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程在預(yù)設(shè)的時(shí)間閾 值內(nèi)未發(fā)起第二系統(tǒng)調(diào)用,則將上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度減去步進(jìn) 值;若上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程在預(yù)設(shè)的時(shí)間閾值內(nèi)有發(fā)起第二系統(tǒng)調(diào)用,則保 持上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度不變。在發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn) 程類型為 Vspace_Process、Vspace_Like_Process 或 Fake_Vspace_Proces 的場(chǎng)景下,通常 當(dāng)前發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程與上一次發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程之間是一種競(jìng)爭(zhēng)關(guān) 系,此時(shí)交互強(qiáng)度的獲取可以通過(guò)Back T算法實(shí)現(xiàn),圖3為本發(fā)明實(shí)施例一中BackJ'算法 執(zhí)行圖,如圖3所示,例如,沿著時(shí)間軸X,子進(jìn)程Pl先發(fā)起讀取數(shù)據(jù)的系統(tǒng)調(diào)用即Pl先有 交互,隨著交互操作的累積,Pl的交互強(qiáng)度隨著發(fā)起讀取數(shù)據(jù)的系統(tǒng)調(diào)用的次數(shù)逐漸增加 步進(jìn)值,若本實(shí)施例中設(shè)置的步進(jìn)值為1,P1、P2的初始值均為0,則Pl第一次交互后其交 互強(qiáng)度為1、第二次交互后其交互強(qiáng)度為2。隨后子進(jìn)程P2也發(fā)起讀取數(shù)據(jù)的系統(tǒng)調(diào)用即 P2開(kāi)始交互,Back_T算法中,P1、P2之間反映的是一種競(jìng)爭(zhēng)關(guān)系。因?yàn)樵赟aaS多用戶的情 況下,每個(gè)用戶的操作是隨機(jī)的,多個(gè)用戶的隨機(jī)操作結(jié)合到一起就形成一個(gè)無(wú)序交替隨 機(jī)序列,因此,當(dāng)P2開(kāi)始交互時(shí),P2的交互強(qiáng)度也增加一個(gè)步進(jìn)值,即由初始值O增加為1, 同時(shí)設(shè)置了一個(gè)時(shí)間閾值即回饋時(shí)間T,并檢測(cè)在回饋時(shí)間T內(nèi)上一次發(fā)起讀取數(shù)據(jù)的系 統(tǒng)調(diào)用的子進(jìn)程Pl是否有交互,由圖2可知,在回饋時(shí)間T內(nèi)發(fā)現(xiàn)Pl有交互即Pl的第二 次交互,則保持Pl的交互強(qiáng)度2不變;接著,Pl進(jìn)行了第三次交互,Pl的交互強(qiáng)度則增加 一個(gè)步進(jìn)值,則Pl的交互強(qiáng)度為3,而Pl在第三次交互時(shí)發(fā)現(xiàn)在回饋的時(shí)間T內(nèi),P2有交 互即P2的第一次交互,所以P2的交互強(qiáng)度I不變;然后,P2進(jìn)行了第二次交互,P2的交互 強(qiáng)度增加一個(gè)步進(jìn)值,則P2的交互強(qiáng)度也為2,但在P2進(jìn)行第二次交互時(shí),在回饋的時(shí)間T 內(nèi)沒(méi)有發(fā)現(xiàn)Pl有交互,此時(shí),將Pl的交互強(qiáng)度降低一個(gè)步進(jìn)值,則Pl的交互強(qiáng)度為2。
對(duì)于Switch算法,思路很簡(jiǎn)單,當(dāng)出現(xiàn)切換時(shí),當(dāng)前進(jìn)程自然很可能在將來(lái)的一段時(shí)間內(nèi)保持活躍,所以有必要不斷提高當(dāng)前活躍進(jìn)程的交互強(qiáng)度,同時(shí)迅速降低上一次 活躍進(jìn)程的交互強(qiáng)度,從而使當(dāng)前活躍進(jìn)程獲得更高的調(diào)度優(yōu)先級(jí),如果用戶只是暫時(shí)的 進(jìn)程切換,由于上一次活躍進(jìn)程的交互強(qiáng)度的存在,切換前該進(jìn)程的交互強(qiáng)度不會(huì)立刻降 得很低。Back_T算法則主要基于對(duì)多個(gè)進(jìn)程在一段時(shí)間間隔內(nèi)無(wú)序交替活躍進(jìn)行觀察,因 為在多用戶的情況下,每個(gè)用戶的交互操作是隨機(jī)的,多個(gè)用戶的隨機(jī)操作結(jié)合到一起就 形成一個(gè)無(wú)序交替隨機(jī)序列。如果對(duì)于競(jìng)爭(zhēng)關(guān)系也繼續(xù)采用Switch算法,則某用戶短時(shí)間 的密集操作,會(huì)很快降低其他用戶的交互強(qiáng)度,而且對(duì)于一個(gè)交互操作頻率較高的用戶會(huì) 也會(huì)嚴(yán)重影響其他交互操作頻率較低的用戶的交互強(qiáng)度。一個(gè)用戶頻繁的發(fā)起交互操作, 從用戶心理學(xué)分析來(lái)說(shuō),該用戶往往也更加強(qiáng)烈的希望獲得較好的交互響應(yīng),為此應(yīng)該對(duì) Swicth算法做出改進(jìn),每當(dāng)活躍進(jìn)程去調(diào)整上一次的活躍進(jìn)程的交互密度值時(shí),并不是直 接降低上一次的活躍進(jìn)程的交互密度,而是回饋一定時(shí)間,如果在一定時(shí)間內(nèi)上一次的活 躍進(jìn)程有交互,則不去改變上一次的活躍進(jìn)程的交互強(qiáng)度,如果上一次的活躍進(jìn)程的最后 一次交互時(shí)間超過(guò)了回饋時(shí)間,則直接降低上一次的活躍進(jìn)程的交互強(qiáng)值,因?yàn)橛谢仞仌r(shí) 間T的存在,算法也因此得名。
上述兩個(gè)算法的相似點(diǎn)是當(dāng)捕捉到一個(gè)進(jìn)程有交互時(shí),先判斷當(dāng)前進(jìn)程的交互強(qiáng) 度是否達(dá)到預(yù)先定義的最大交互強(qiáng)度,如果沒(méi)有達(dá)到,則增加當(dāng)前進(jìn)程的交互強(qiáng)度,如果達(dá) 到則不作處理,繼續(xù)后續(xù)流程。另外,兩種算法都是在有活躍進(jìn)程存在時(shí)來(lái)調(diào)整自己和兄弟 進(jìn)程節(jié)點(diǎn)的交互強(qiáng)度的,當(dāng)沒(méi)有活躍進(jìn)程存在時(shí),進(jìn)程的信心指數(shù)就無(wú)法調(diào)整了,這種情況 都是通過(guò)交互超時(shí)來(lái)復(fù)位交互強(qiáng)度(未來(lái)交互信心指數(shù))的,即當(dāng)一定的時(shí)間內(nèi)所有的進(jìn)程 都沒(méi)有交互時(shí),可以對(duì)所有進(jìn)程的交互強(qiáng)度進(jìn)行遞歸置O或直接置0,因?yàn)?,?dāng)沒(méi)有交互活 躍進(jìn)程存在時(shí),也可以認(rèn)為是該計(jì)算節(jié)點(diǎn)當(dāng)前沒(méi)有用戶參與,自然進(jìn)程的響應(yīng)時(shí)間不在敏 感,調(diào)度優(yōu)先級(jí)也不再重要,無(wú)需立刻判斷交互密度;而且,超時(shí)置零的方法也比較簡(jiǎn)單實(shí) 用,易于代碼實(shí)現(xiàn)。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通 過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程 序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟 或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(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.一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方法,其特征在于,包括 截獲軟件即服務(wù)系統(tǒng)SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用; 根據(jù)所述核心系統(tǒng)調(diào)用獲取所述主入口程序生成的至少兩個(gè)子進(jìn)程以及所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào); 根據(jù)所述至少兩個(gè)子進(jìn)程中各子進(jìn)程是否發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,確定各子進(jìn)程的進(jìn)程類型; 根據(jù)所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)、窗口號(hào)以及進(jìn)程類型,確定所述至少兩個(gè)子進(jìn)程之間的關(guān)系; 若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用,則確定所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的當(dāng)前交互強(qiáng)度,并根據(jù)所述至少兩個(gè)子進(jìn)程之間的關(guān)系確定與所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程的當(dāng)前交互強(qiáng)度。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述截獲軟件即服務(wù)系統(tǒng)SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用,具體包括 通過(guò)進(jìn)程跟蹤的系統(tǒng)調(diào)用Ptrace截獲SaaS中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述核心系統(tǒng)調(diào)用獲取所述主入口程序生成的至少兩個(gè)子進(jìn)程以及所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào),包括 若所述用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用為sys_f0rk或sysjfork,則將所述 sys_fork 或 sys_vfork 替換為 sys_clone ; 根據(jù)所述SyS_Clone獲取所述主入口程序生成的至少兩個(gè)子進(jìn)程以及所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)以及窗口號(hào)。
4.根據(jù)權(quán)利要求1 3任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述至少兩個(gè)子進(jìn)程中各子進(jìn)程是否發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,確定各子進(jìn)程的進(jìn)程類型,包括 若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且所述與端口相關(guān)的第一系統(tǒng)調(diào)用為分配端口的系統(tǒng)調(diào)用sys_bind,則根據(jù)所述sys_bind獲取當(dāng)前發(fā)起所述sys_bind的子進(jìn)程的端口號(hào),并確定所述子進(jìn)程的類型為展現(xiàn)進(jìn)程VspaCe_Process、進(jìn)程名為 Xvnc ; 若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且所述與端口相關(guān)的第一系統(tǒng)調(diào)用為連接端口的系統(tǒng)調(diào)用sys_connect,則根據(jù)所述sys_connect獲取當(dāng)前發(fā)起所述syS_COnneCt的子進(jìn)程的端口號(hào),并確定所述子進(jìn)程的類型為執(zhí)行進(jìn)程Vprocess_Process、進(jìn)程名為 Xclient0
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括 若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程未發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且所述未發(fā)起第一系統(tǒng)調(diào)用的子進(jìn)程與另一個(gè)進(jìn)程名為Xvnc的子進(jìn)程具有相同的窗口號(hào),則確定所述未發(fā)起第一系統(tǒng)調(diào)用的子進(jìn)程為所述Xvnc子進(jìn)程的輔助進(jìn)程; 若所述輔助進(jìn)程的進(jìn)程名在預(yù)設(shè)的第一白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第一展現(xiàn)輔助進(jìn)程Vspace_Like_Process ; 若所述輔助進(jìn)程的進(jìn)程名不在預(yù)設(shè)的第一白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第二展現(xiàn)輔助進(jìn)程Vspace—Relate—Process。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括 若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程未發(fā)起與端口相關(guān)的第一系統(tǒng)調(diào)用,且所述未發(fā)起第一系統(tǒng)調(diào)用的子進(jìn)程的父進(jìn)程號(hào)與另一個(gè)進(jìn)程名為Xclient的子進(jìn)程的進(jìn)程號(hào)相同,則確定所述未發(fā)起第一系統(tǒng)調(diào)用的子進(jìn)程為所述Xclient子進(jìn)程的輔助進(jìn)程; 若所述輔助進(jìn)程的進(jìn)程名在預(yù)設(shè)的第二白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第一執(zhí)行輔助進(jìn)程 Vprocess—Like—Process ; 若所述輔助進(jìn)程的進(jìn)程名不在預(yù)設(shè)的第二白名單內(nèi),則確定所述輔助進(jìn)程的進(jìn)程類型為第二執(zhí)行輔助進(jìn)程 Vprocess—Relate—Process。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述至少兩個(gè)子進(jìn)程對(duì)應(yīng)的進(jìn)程號(hào)、進(jìn)程名、父進(jìn)程號(hào)、窗口號(hào)以及進(jìn)程類型,確定所述至少兩個(gè)子進(jìn)程之間的關(guān)系,包括 若所述至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vprocess—Process類型,且所述兩個(gè)子進(jìn)程分別對(duì)應(yīng)的父進(jìn)程號(hào)、進(jìn)程名、端口號(hào)均相同,則確定所述兩個(gè)Vprocess—Process類型的子進(jìn)程為兄弟進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中的一個(gè)Vspace—Process類型的子進(jìn)程與另一個(gè)Vprocess—Process類型的子進(jìn)程的端口號(hào)相同,則確定所述Vprocess—Process類型的子進(jìn)程為所述Vspace—Process類型的子進(jìn)程的輔助進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中的一個(gè)Vprocess—Relate—Process類型的子進(jìn)程的父進(jìn)程號(hào)與另一個(gè)Vprocess—Process類型的子進(jìn)程的進(jìn)程號(hào)相同,且具有相同的窗口號(hào),貝1J確定所述Vprocess—Relate—Process類型的子進(jìn)程為所述Vprocess—Process類型的子進(jìn)程的輔助進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中不存在與所述Vprocess—Process類型的子進(jìn)程的端口號(hào)相同的Vspace—Process類型的子進(jìn)程,則新建一個(gè)進(jìn)程類型為虛擬展現(xiàn)進(jìn)程Fake—Vspace—Process的子進(jìn)程,并將所述Fake—Vspace—Process類型的子進(jìn)程的端口號(hào)設(shè)置為所述Vprocess—Process類型的子進(jìn)程的端口號(hào),則所述Vprocess—Process類型的子進(jìn)程為所述Fake—Vspace—Process類型的子進(jìn)程的輔助進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace—Process類型或Fake—Vspace—Process類型或所述兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程為Vspace—Process類型、另一子進(jìn)程為Fake—Vspace—Process類型,且所述兩個(gè)子進(jìn)程對(duì)應(yīng)的父進(jìn)程號(hào)相同,則確定所述兩個(gè)子進(jìn)程為兄弟進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace—Relate—Process類型或Vprocess—Relate—Process類型,且所述兩個(gè)子進(jìn)程對(duì)應(yīng)相同的窗口號(hào),則確定所述兩個(gè)子進(jìn)程為兄弟進(jìn)程; 若所述至少兩個(gè)子進(jìn)程中的兩個(gè)子進(jìn)程均為Vspace—Like—Process類型或Vprocess—Like_Process類型,則確定所述兩個(gè)子進(jìn)程為兄弟進(jìn)程。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用,則確定所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的當(dāng)前交互強(qiáng)度,并根據(jù)所述至少兩個(gè)子進(jìn)程之間的關(guān)系確定與所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程有關(guān)系的各子進(jìn)程的當(dāng)前交互強(qiáng)度,包括 截獲所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起的用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用; 若所述讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用為SyS_read或sys_readv,且發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度小于預(yù)設(shè)的閾值,則將所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度增加預(yù)設(shè)的步進(jìn)值; 更新所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程以及所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程的輔助進(jìn)程的交互強(qiáng)度。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述更新所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程以及所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程的輔助進(jìn)程的交互強(qiáng)度,包括 確定所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的兄弟進(jìn)程,若所述兄弟進(jìn)程的交互強(qiáng)度大于預(yù)設(shè)的初始值,則對(duì)所述兄弟進(jìn)程的交互強(qiáng)度減去所述步進(jìn)值; 若所述兄弟進(jìn)程的交互強(qiáng)度為所述初始值,則將所述兄弟進(jìn)程的輔助進(jìn)程的交互強(qiáng)度置為所述初始值。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,若所述至少兩個(gè)子進(jìn)程中的一個(gè)子進(jìn)程發(fā)起用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用之后,還包括 根據(jù)所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型更新上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度,具體為 若所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型為Vspace_Process、Vspace_Like_Process或Fake_Vspace_Process,且所述上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程在預(yù)設(shè)的時(shí)間閾值內(nèi)未發(fā)起所述第二系統(tǒng)調(diào)用,則將所述上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度減去所述步進(jìn)值;若所述上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程在預(yù)設(shè)的時(shí)間閾值內(nèi)有發(fā)起所述第二系統(tǒng)調(diào)用,則保持所述上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度不變; 若所述發(fā)起第二系統(tǒng)調(diào)用的子進(jìn)程的進(jìn)程類型為Vprocess_Process、Vspace_Relate_Process、Vprocess_Like_Process 或 Vprocess_Relate_Process,則將所述上一次發(fā)起所述第二系統(tǒng)調(diào)用的子進(jìn)程的交互強(qiáng)度減去所述步進(jìn)值。
全文摘要
本發(fā)明提供一種獲取基于SaaS的交互式程序的交互強(qiáng)度的方法,本發(fā)明的方法通過(guò)截獲軟件即服務(wù)系統(tǒng)SaaS平臺(tái)中用于主入口程序創(chuàng)建子進(jìn)程的核心系統(tǒng)調(diào)用、與端口相關(guān)的第一系統(tǒng)調(diào)用和用于讀取數(shù)據(jù)的第二系統(tǒng)調(diào)用,從而獲取SaaS系統(tǒng)中主入口程序創(chuàng)建的至少兩個(gè)子進(jìn)程的相關(guān)信息,并根據(jù)至少兩個(gè)子進(jìn)程的相關(guān)信息而最終獲取各子進(jìn)程的當(dāng)前交互強(qiáng)度,以使SaaS系統(tǒng)能夠根據(jù)各子進(jìn)程的交互強(qiáng)度合理的分配資源,從而提高SaaS資源的利用率。
文檔編號(hào)G06F9/46GK103019813SQ201210477668
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年11月21日 優(yōu)先權(quán)日2012年11月21日
發(fā)明者胡春明, 柴琛林, 李建欣, 康俊彬 申請(qǐng)人:北京航空航天大學(xué)