本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種多容器系統(tǒng)中系統(tǒng)資源的管理方法,及一種多容器系統(tǒng)中系統(tǒng)資源的管理裝置。
背景技術(shù):
隨著當今計算機技術(shù)的發(fā)展,終端設(shè)備的各項軟硬件配置越來越高,一些高端配置的終端設(shè)備運行效果已和桌面設(shè)備的相應(yīng)配置實現(xiàn)的效果接近,這為操作系統(tǒng)的虛擬化奠定了基礎(chǔ);另一方面,用戶對于終端設(shè)備使用場景的多樣性與日俱增,終端設(shè)備不僅用于日常生活娛樂,還用于工作學(xué)習(xí)等重要場景。然而,隨著用戶的使用需求地不斷提高,用戶的安全與隱私問題也日益凸顯。在用戶的使用過程,終端設(shè)備上會產(chǎn)生多種的用戶隱私信息,如各種賬號,支付密碼等,但是,當今網(wǎng)絡(luò)中的各種病毒木馬一直在不停尋找機會向各終端設(shè)備進行非法入侵,以盜取用戶的隱私信息,這種情況下在一個隔離的環(huán)境中運行敏感軟件是更加安全的做法。因此,出現(xiàn)了同一終端設(shè)備中根據(jù)不同的用戶需求提供不同運行環(huán)境的解決方案,如設(shè)置特定用戶在特定的受限運行環(huán)境下使用終端設(shè)備,或為同一用戶在終端設(shè)備中的不同使用場景設(shè)置不同的運行環(huán)境。因此急需在終端設(shè)備中實現(xiàn)系統(tǒng)的虛擬化。
現(xiàn)有技術(shù)中,桌面系統(tǒng)中的虛擬化技術(shù)已比較成熟,廠商也都提供了硬件支持,各種虛擬化解決方案也都使用廣泛。但是,在終端設(shè)備的平臺上,由于計算能力相對有限,且終端處理器對虛擬化的支持沒有桌面系統(tǒng)中那么成熟完善,同時終端平臺的各種硬件設(shè)備種類繁多,因此,尚無有效的技術(shù)方案來解決終端設(shè)備中對各種設(shè)備的虛擬化的問題。
技術(shù)實現(xiàn)要素:
為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
本發(fā)明的實施例提出一種多容器系統(tǒng)中系統(tǒng)資源的管理方法,包括:
通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層;
通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例;
通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
優(yōu)選地,通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層,包括:
基于Linux內(nèi)核的資源隔離機制來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
優(yōu)選地,設(shè)備資源包括物理設(shè)備資源和虛擬設(shè)備資源中的至少一項;
物理設(shè)備資源包括音視頻設(shè)備資源、輸入輸出設(shè)備資源、通信設(shè)備資源中的至少一項;
虛擬設(shè)備資源包括cgroup資源。
優(yōu)選地,通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,還包括:
通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,設(shè)備資源配置信息包括各個容器系統(tǒng)與為其分配的設(shè)備資源名稱的對應(yīng)關(guān)系。
可選地,當多容器系統(tǒng)中的兩個容器系統(tǒng)發(fā)生前后臺切換時,該方法還包括:
通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對切換后的兩個容器系統(tǒng)的針對多個設(shè)備資源的資源實例進行重新配置。
本發(fā)明的另一實施例提出了一種多容器系統(tǒng)中系統(tǒng)資源的管理裝置,包括:
第一創(chuàng)建模塊,用于通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層;
第二創(chuàng)建模塊,用于通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例;
第一配置模塊,用于通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
優(yōu)選地,第一創(chuàng)建模塊用于
基于Linux內(nèi)核的資源隔離機制來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
優(yōu)選地,設(shè)備資源包括物理設(shè)備資源和虛擬設(shè)備資源中的至少一項;
物理設(shè)備資源包括音視頻設(shè)備資源、輸入輸出設(shè)備資源、通信設(shè)備資源中的至少一項;
虛擬設(shè)備資源包括cgroup資源。
優(yōu)選地,第一配置模塊,還包括:
配置單元,用于通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,設(shè)備資源配置信息包括各個容器系統(tǒng)與為其分配的設(shè)備資源名稱的對應(yīng)關(guān)系。
可選地,當多容器系統(tǒng)中的兩個容器系統(tǒng)發(fā)生前后臺切換時,該裝置還包括:
第二配置模塊,用于通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對切換后的兩個容器系統(tǒng)的針對多個設(shè)備資源的資源實例進行重新配置。
本發(fā)明的實施例中,提出了一種多容器系統(tǒng)中系統(tǒng)資源的管理方案,通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層,為后續(xù)創(chuàng)建可實現(xiàn)將系統(tǒng)內(nèi)核中設(shè)備資源虛擬化的容器系統(tǒng)提供了必要的前提保障;通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例,實現(xiàn)了創(chuàng)建的容器系統(tǒng)與容器實例層中的容器實例一一對應(yīng),為統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源提供了必要的前提保障;隨后,實現(xiàn)了通過容器實例層統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源,并在創(chuàng)建的容器系統(tǒng)中實現(xiàn)對系統(tǒng)內(nèi)核中設(shè)備資源的虛擬化,使得創(chuàng)建的容器系統(tǒng)可運行一個完整的操作系統(tǒng);通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,并根據(jù)不同容器實例的使用需求,對系統(tǒng)內(nèi)核的資源進行差異化的配置,滿足了用戶的個性化使用需求;同時,通過合理配置各容器實例使用的系統(tǒng)資源,極大的提高了系統(tǒng)運行的效率,避免了系統(tǒng)資源浪費的情況;進一步地,提高了用戶的終端使用體驗。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本發(fā)明中一個實施例的多系統(tǒng)終端設(shè)備中各容器系統(tǒng)間的關(guān)系示意圖;
圖2為本發(fā)明中一個實施例的多容器系統(tǒng)中系統(tǒng)資源的管理方法的流程圖;
圖3為本發(fā)明中另一實施例的多容器系統(tǒng)中系統(tǒng)資源的管理裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
本發(fā)明的實施例中的多操作系統(tǒng)包括至少兩個操作系統(tǒng),其中,操作系統(tǒng)可包括各種操作系統(tǒng),例如android操作系統(tǒng)等。本發(fā)明的實施例中的多操作系統(tǒng)可基于多種虛擬技術(shù)來實現(xiàn),下文以Linux系統(tǒng)下的容器技術(shù)為例來進行實施例的詳述。其中,使用Linux容器技術(shù)實現(xiàn)的多操作系統(tǒng),在每個容器中裝入獨立的操作系統(tǒng),多個操作系統(tǒng)之間相互獨立,且多個操作系統(tǒng)運行在同一臺物理終端設(shè)備上。
下面結(jié)合附圖具體介紹本發(fā)明實施例的技術(shù)方案。
本發(fā)明實施例的終端設(shè)備的內(nèi)部結(jié)構(gòu)的框架示意圖如圖1所示,包括:兩個以上的容器系統(tǒng)。其中,兩個以上容器系統(tǒng)可以包括容器系統(tǒng)OS1、容器系統(tǒng)OS2、…、OSn。n為正整數(shù)。
其中,本發(fā)明實施例中的容器系統(tǒng),可以是設(shè)置在以Linux container(容器)虛擬化技術(shù)創(chuàng)建的容器中的操作系統(tǒng)。操作系統(tǒng)可以為傳統(tǒng)意義上的Linux操作系統(tǒng)或Unix操作系統(tǒng),也可以是基于Linux操作系統(tǒng)衍生出來的Android系統(tǒng)、Ubuntu系統(tǒng)或FireFox系統(tǒng)等,還可以為以Windows平臺為基礎(chǔ)的windows系統(tǒng)等等。實際上,本發(fā)明中的容器系統(tǒng)不限于前述例舉的操作系統(tǒng),可以涵蓋所有能夠在容器中運行的操作系統(tǒng)。
優(yōu)選地,容器系統(tǒng)可以是上述傳統(tǒng)的操作系統(tǒng),也可以是對傳統(tǒng)的kernel進行改進和/或在kernel之外(例如框架層和應(yīng)用層)增加功能模塊之后,得到的操作系統(tǒng)。其中,各個容器系統(tǒng)共享同一系統(tǒng)內(nèi)核,當各容器中的操作系統(tǒng)為Linux操作系統(tǒng)或基于Linux操作系統(tǒng)衍生出來的系統(tǒng)時,各容器系統(tǒng)為基于Linux kernel namespace框架之上的,通過容器實例層,增加了對終端設(shè)備中設(shè)備資源的管理功能模塊后,得到的操作系統(tǒng)。
優(yōu)選地,容器系統(tǒng)可以通過預(yù)定義的通道或容器通道與其他容器系統(tǒng)進行通信,預(yù)定義的通道可以是socket(套接字)通道。
圖2為本發(fā)明中一個實施例的多容器系統(tǒng)中系統(tǒng)資源的管理方法的流程圖。
本發(fā)明的實施例中,各步驟所執(zhí)行的內(nèi)容概述如下:步驟S210:通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層;步驟S220:通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例;步驟S230:通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
本發(fā)明的實施例中,提出了一種多容器系統(tǒng)中系統(tǒng)資源的管理方法,通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層,為后續(xù)創(chuàng)建可實現(xiàn)將系統(tǒng)內(nèi)核中設(shè)備資源虛擬化的容器系統(tǒng)提供了必要的前提保障;通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例,實現(xiàn)了創(chuàng)建的容器系統(tǒng)與容器實例層中的容器實例一一對應(yīng),為統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源提供了必要的前提保障;隨后,實現(xiàn)了通過容器實例層統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源,并在創(chuàng)建的容器系統(tǒng)中實現(xiàn)對系統(tǒng)內(nèi)核中設(shè)備資源的虛擬化,使得創(chuàng)建的容器系統(tǒng)可運行一個完整的操作系統(tǒng);通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,并根據(jù)不同容器實例的使用需求,對系統(tǒng)內(nèi)核的資源進行差異化的配置,滿足了用戶的個性化使用需求;同時,通過合理配置各容器實例使用的系統(tǒng)資源,極大的提高了系統(tǒng)運行的效率,避免了系統(tǒng)資源浪費的情況;進一步地,提高了用戶的終端使用體驗。以下針對各個步驟的具體實現(xiàn)做進一步的說明:
步驟S210:通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
具體地,通過多系統(tǒng)終端設(shè)備中共享的系統(tǒng)內(nèi)核來創(chuàng)建用于管理其系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
優(yōu)選地,基于Linux內(nèi)核的資源隔離機制來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
其中,設(shè)備資源包括物理設(shè)備資源和虛擬設(shè)備資源中的至少一項。
物理設(shè)備資源包括音視頻設(shè)備資源,如video資源、輸入輸出設(shè)備資源,如input資源、通信設(shè)備資源,如WIFI資源中的至少一項。
虛擬設(shè)備資源包括cgroup資源。cgroup資源為controller group資源,最初由Google的工程師提出,后被整合進Linux內(nèi)核中用于將任意進程進行分組化管理的Linux內(nèi)核功能,同時還可以控制進程的資源占用(CPU、內(nèi)存等的占用)情況,cgroup本身提供將進程進行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu)。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核,如Linux kernel,基于Linux內(nèi)核的資源隔離機制,如Linux kernel namespace框架,來創(chuàng)建用于管理Linux系統(tǒng)內(nèi)核中的物理設(shè)備資源和虛擬設(shè)備資源的容器實例層,以實現(xiàn)物理設(shè)備資源和虛擬設(shè)備資源的虛擬化管理,從而使得通過容器實例層創(chuàng)建的容器可以運行一個完整的操作系統(tǒng)。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,Linux內(nèi)核的資源隔離機制,如Linux kernel namespace框架,該框架提供了這六種namespace(命名空間)隔離的系統(tǒng)調(diào)用,包括UTS namespace(主機名與域名命名空間)、IPC namespace(信號量、消息隊列和共享內(nèi)存命名空間)、PID namespace(進程編號命名空間)、Network namespace(網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)棧、端口等命名空間)、Mount namespace(文件系統(tǒng)掛載點命名空間)以及User namespace(用戶和用戶組命名空間),使得PID、IPC、Network等系統(tǒng)資源不再是系統(tǒng)全局性的,而是屬于某個特定的namespace。其中,每個namespace下的資源對于其他namespace下的資源都是不可見的,因此在操作系統(tǒng)層面上看,就會出現(xiàn)多個相同PID的進程,如系統(tǒng)中可以同時存在三個進程號為0,1和2的進程,由于它們屬于不同的namespace,所以它們之間對系統(tǒng)的調(diào)用并不沖突。而在用戶層面上只能看到屬于用戶自己namespace下的系統(tǒng)資源,因此,使得每個namespace看上去就像一個單獨的Linux系統(tǒng),但是Linux kernel namespace框架中并未提供對系統(tǒng)內(nèi)核中設(shè)備資源的隔離調(diào)用。
步驟S220:通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過調(diào)用已創(chuàng)建的容器實例層的相關(guān)預(yù)定接口,如InterfaceA,來創(chuàng)建容器系統(tǒng)OS1和容器系統(tǒng)OS2,使得容器實例層中容器系統(tǒng)OS1的實例與用戶在終端設(shè)備A中創(chuàng)建的容器系統(tǒng)OS1對應(yīng),以及容器實例層中容器系統(tǒng)OS2的實例與用戶在終端設(shè)備A中創(chuàng)建的容器系統(tǒng)OS2對應(yīng);并創(chuàng)建容器系統(tǒng)OS1中針對多個設(shè)備資源,如video、input和cgroup等系統(tǒng)資源的資源實例,以及創(chuàng)建容器系統(tǒng)OS2中針對多個設(shè)備資源,如video、input和cgroup等系統(tǒng)資源的資源實例。
需要說明的是,本領(lǐng)域技術(shù)人員可以理解,在軟件開發(fā)人員研發(fā)過程中,創(chuàng)建的實例即創(chuàng)建相應(yīng)的實體,如通過調(diào)用容器實例層的相關(guān)接口來可創(chuàng)建多個容器的實例,即可創(chuàng)建多個操作系統(tǒng)之間相互獨立的容器系統(tǒng);又如創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例,即創(chuàng)建針對多個設(shè)備資源的具體資源的相關(guān)信息等。
步驟S230:通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
具體地,通過容器實例層對各個容器系統(tǒng)中,針對多個設(shè)備資源的資源實例在各個容器系統(tǒng)中進行相應(yīng)的配置。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過已創(chuàng)建的容器實例層,針對video、input和cgroup等設(shè)備資源的資源實例,在容器系統(tǒng)OS1和容器系統(tǒng)OS2中進行相應(yīng)配置,如在容器系統(tǒng)OS1中,將video設(shè)備資源的資源實例配置為不啟用,在容器系統(tǒng)OS2中,將video設(shè)備資源的資源實例配置為啟用等。
優(yōu)選地,在步驟S230中,通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,設(shè)備資源配置信息包括各個容器系統(tǒng)與為其分配的設(shè)備資源名稱的對應(yīng)關(guān)系。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,預(yù)設(shè)的設(shè)備資源配置信息,如在容器系統(tǒng)OS1中,將video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,在容器系統(tǒng)OS2中,將video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為不啟用;通過已創(chuàng)建的容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,在容器系統(tǒng)OS1中,不啟用video和input設(shè)備資源的資源實例以及啟用cgroup設(shè)備資源的資源實例;在容器系統(tǒng)OS2中,啟用video和input設(shè)備資源的資源實例以及不啟用cgroup設(shè)備資源的資源實例。
在一優(yōu)選實施例中,當多容器系統(tǒng)中的兩個容器系統(tǒng)發(fā)生前后臺切換時,該方法還包括步驟S240;步驟S240:通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對切換后的兩個容器系統(tǒng)的針對多個設(shè)備資源的資源實例進行重新配置。
在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過容器實例層創(chuàng)建容器系統(tǒng)OS1和容器系統(tǒng)OS2,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,如當容器系統(tǒng)OS1或容器系統(tǒng)OS2當前處于前臺時,將當前處于前臺的容器系統(tǒng)的video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為2/3,當容器系統(tǒng)OS1或容器系統(tǒng)OS2當前處于后臺時,將當前處于后臺的容器系統(tǒng)的video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為1/3;當前處于前臺的容器系統(tǒng)為容器系統(tǒng)OS1,若用戶通過多系統(tǒng)終端設(shè)備的人機交互界面進行系統(tǒng)切換操作,將容器系統(tǒng)OS2切換至前臺,將容器系統(tǒng)OS1切換至后臺,則將切換后處于前臺的容器系統(tǒng)OS2的video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且將容器系統(tǒng)OS2的cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為2/3,同時,將切換后處于后臺的容器系統(tǒng)OS1的video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且將容器系統(tǒng)OS1的cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為1/3。
圖3為本發(fā)明中另一實施例的多容器系統(tǒng)中系統(tǒng)資源的管理裝置的結(jié)構(gòu)示意圖。
本發(fā)明的實施例中,各模塊所執(zhí)行的內(nèi)容概述如下:第一創(chuàng)建模塊310通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層;第二創(chuàng)建模塊320通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例;第一配置模塊330通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
本發(fā)明的實施例中,提出了一種多容器系統(tǒng)中系統(tǒng)資源的管理裝置,通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層,為后續(xù)創(chuàng)建可實現(xiàn)將系統(tǒng)內(nèi)核中設(shè)備資源虛擬化的容器系統(tǒng)提供了必要的前提保障;通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例,實現(xiàn)了創(chuàng)建的容器系統(tǒng)與容器實例層中的容器實例一一對應(yīng),為統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源提供了必要的前提保障;隨后,實現(xiàn)了通過容器實例層統(tǒng)一管理系統(tǒng)內(nèi)核中的系統(tǒng)資源,并在創(chuàng)建的容器系統(tǒng)中實現(xiàn)對系統(tǒng)內(nèi)核中設(shè)備資源的虛擬化,使得創(chuàng)建的容器系統(tǒng)可運行一個完整的操作系統(tǒng);通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,并根據(jù)不同容器實例的使用需求,對系統(tǒng)內(nèi)核的資源進行差異化的配置,滿足了用戶的個性化使用需求;同時,通過合理配置各容器實例使用的系統(tǒng)資源,極大的提高了系統(tǒng)運行的效率,避免了系統(tǒng)資源浪費的情況;進一步地,提高了用戶的終端使用體驗。以下針對各個模塊的具體實現(xiàn)做進一步的說明:
第一創(chuàng)建模塊310通過系統(tǒng)內(nèi)核來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
具體地,通過多系統(tǒng)終端設(shè)備中共享的系統(tǒng)內(nèi)核來創(chuàng)建用于管理其系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
優(yōu)選地,基于Linux內(nèi)核的資源隔離機制來創(chuàng)建用于管理系統(tǒng)內(nèi)核的設(shè)備資源的容器實例層。
其中,設(shè)備資源包括物理設(shè)備資源和虛擬設(shè)備資源中的至少一項。
物理設(shè)備資源包括音視頻設(shè)備資源,如video資源、輸入輸出設(shè)備資源,如input資源、通信設(shè)備資源,如WIFI資源中的至少一項。
虛擬設(shè)備資源包括cgroup資源。cgroup資源為controller group資源,最初由Google的工程師提出,后被整合進Linux內(nèi)核中用于將任意進程進行分組化管理的Linux內(nèi)核功能,同時還可以控制進程的資源占用(CPU、內(nèi)存等的占用)情況,cgroup本身提供將進程進行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu)。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核,如Linux kernel,基于Linux內(nèi)核的資源隔離機制,如Linux kernel namespace框架,來創(chuàng)建用于管理Linux系統(tǒng)內(nèi)核中的物理設(shè)備資源和虛擬設(shè)備資源的容器實例層,以實現(xiàn)物理設(shè)備資源和虛擬設(shè)備資源的虛擬化管理,從而使得通過容器實例層創(chuàng)建的容器可以運行一個完整的操作系統(tǒng)。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,Linux內(nèi)核的資源隔離機制,如Linux kernel namespace框架,該框架提供了這六種namespace(命名空間)隔離的系統(tǒng)調(diào)用,包括UTS namespace(主機名與域名命名空間)、IPC namespace(信號量、消息隊列和共享內(nèi)存命名空間)、PID namespace(進程編號命名空間)、Network namespace(網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)棧、端口等命名空間)、Mount namespace(文件系統(tǒng)掛載點命名空間)以及User namespace(用戶和用戶組命名空間),使得PID、IPC、Network等系統(tǒng)資源不再是系統(tǒng)全局性的,而是屬于某個特定的namespace。其中,每個namespace下的資源對于其他namespace下的資源都是不可見的,因此在操作系統(tǒng)層面上看,就會出現(xiàn)多個相同PID的進程,如系統(tǒng)中可以同時存在三個進程號為0,1和2的進程,由于它們屬于不同的namespace,所以它們之間對系統(tǒng)的調(diào)用并不沖突。而在用戶層面上只能看到屬于用戶自己namespace下的系統(tǒng)資源,因此,使得每個namespace看上去就像一個單獨的Linux系統(tǒng),但是Linux kernel namespace框架中并未提供對系統(tǒng)內(nèi)核中設(shè)備資源的隔離調(diào)用。
第二創(chuàng)建模塊320通過調(diào)用容器實例層的相關(guān)接口來創(chuàng)建多個容器系統(tǒng),并創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過調(diào)用已創(chuàng)建的容器實例層的相關(guān)預(yù)定接口,如InterfaceA,來創(chuàng)建容器系統(tǒng)OS1和容器系統(tǒng)OS2,使得容器實例層中容器系統(tǒng)OS1的實例與用戶在終端設(shè)備A中創(chuàng)建的容器系統(tǒng)OS1對應(yīng),以及容器實例層中容器系統(tǒng)OS2的實例與用戶在終端設(shè)備A中創(chuàng)建的容器系統(tǒng)OS2對應(yīng);并創(chuàng)建容器系統(tǒng)OS1中針對多個設(shè)備資源,如video、input和cgroup等系統(tǒng)資源的資源實例,以及創(chuàng)建容器系統(tǒng)OS2中針對多個設(shè)備資源,如video、input和cgroup等系統(tǒng)資源的資源實例。
需要說明的是,本領(lǐng)域技術(shù)人員可以理解,在軟件開發(fā)人員研發(fā)過程中,創(chuàng)建的實例即創(chuàng)建相應(yīng)的實體,如通過調(diào)用容器實例層的相關(guān)接口來可創(chuàng)建多個容器的實例,即可創(chuàng)建多個操作系統(tǒng)之間相互獨立的容器系統(tǒng);又如創(chuàng)建各個容器系統(tǒng)中包括的針對多個設(shè)備資源的資源實例,即創(chuàng)建針對多個設(shè)備資源的具體資源的相關(guān)信息等。
第一配置模塊330通過容器實例層對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置。
具體地,通過容器實例層對各個容器系統(tǒng)中,針對多個設(shè)備資源的資源實例在各個容器系統(tǒng)中進行相應(yīng)的配置。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過已創(chuàng)建的容器實例層,針對video、input和cgroup等設(shè)備資源的資源實例,在容器系統(tǒng)OS1和容器系統(tǒng)OS2中進行相應(yīng)配置,如在容器系統(tǒng)OS1中,將video設(shè)備資源的資源實例配置為不啟用,在容器系統(tǒng)OS2中,將video設(shè)備資源的資源實例配置為啟用等。
優(yōu)選地,第一配置模塊330進一步包括配置單元,配置單元通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對各個容器系統(tǒng)中針對多個設(shè)備資源的資源實例進行相應(yīng)的配置,設(shè)備資源配置信息包括各個容器系統(tǒng)與為其分配的設(shè)備資源名稱的對應(yīng)關(guān)系。
例如,在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,預(yù)設(shè)的設(shè)備資源配置信息,如在容器系統(tǒng)OS1中,將video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,在容器系統(tǒng)OS2中,將video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為不啟用;通過已創(chuàng)建的容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,在容器系統(tǒng)OS1中,不啟用video和input設(shè)備資源的資源實例以及啟用cgroup設(shè)備資源的資源實例;在容器系統(tǒng)OS2中,啟用video和input設(shè)備資源的資源實例以及不啟用cgroup設(shè)備資源的資源實例。
在一優(yōu)選實施例中,當多容器系統(tǒng)中的兩個容器系統(tǒng)發(fā)生前后臺切換時,該裝置還包括第二配置模塊;第二配置模塊通過容器實例層,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,對切換后的兩個容器系統(tǒng)的針對多個設(shè)備資源的資源實例進行重新配置。
在多系統(tǒng)的終端設(shè)備A中,共享同一系統(tǒng)內(nèi)核Linux kernel,通過容器實例層創(chuàng)建容器系統(tǒng)OS1和容器系統(tǒng)OS2,根據(jù)預(yù)設(shè)的設(shè)備資源配置信息,如當容器系統(tǒng)OS1或容器系統(tǒng)OS2當前處于前臺時,將當前處于前臺的容器系統(tǒng)的video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為2/3,當容器系統(tǒng)OS1或容器系統(tǒng)OS2當前處于后臺時,將當前處于后臺的容器系統(tǒng)的video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為1/3;當前處于前臺的容器系統(tǒng)為容器系統(tǒng)OS1,若用戶通過多系統(tǒng)終端設(shè)備的人機交互界面進行系統(tǒng)切換操作,將容器系統(tǒng)OS2切換至前臺,將容器系統(tǒng)OS1切換至后臺,則將切換后處于前臺的容器系統(tǒng)OS2的video和input設(shè)備資源的資源實例配置為啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且將容器系統(tǒng)OS2的cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為2/3,同時,將切換后處于后臺的容器系統(tǒng)OS1的video和input設(shè)備資源的資源實例配置為不啟用以及將cgroup設(shè)備資源的資源實例配置為啟用,且將容器系統(tǒng)OS1的cgroup設(shè)備資源的資源實例中對終端設(shè)備A中的CPU的占用率配置為1/3。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機程序,這些計算機程序選擇性地激活或重構(gòu)。這樣的計算機程序可以被存儲在設(shè)備(例如,計算機)可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲器)、RAM(Random Access Memory,隨即存儲器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機)以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發(fā)明的部分實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。