一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于宿主机操作系统部署指定应用的方法和系统与流程

2022-03-09 00:48:39 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体而言,涉及一种基于宿主机操作系统部署指定应用的方法和系统。


背景技术:

2.目前在云上业务部署场景中,通常基于虚拟机或容器将各种应用部署到云服务器上。虚拟机(virtual machine)是指通过软件模拟的、具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可在一台物理计算机上模拟出一台或多台虚拟的计算机,并可将各种应用部署在不同虚拟机中。容器是一种内核级别的资源管理的理念,可将其理解为系统资源的一组约束条件,将应用部署在容器中就是使得应用受制于该约束条件。
3.但是虚拟化技术由于模拟出一套完整计算机系统,导致资源占用高,同时运行的虚拟机数量受限。而docker等容器技术则依赖庞大的linux内核完成资源隔离和安全防护。虽然虚拟机比容器的安全性和隔离度都更好,但现今互联网业务功能变动频繁,每天都可能有旧的应用需要更新版本、新的应用需要尽快部署,但是虚拟机技术由于上述资源占用高等缺点,难以满足应用部署在效率和资源配置上的需求。运维人员希望能够提供一种新的部署方案,以平衡应用部署在安全性和部署效率之间的需求。


技术实现要素:

4.有鉴于此,本公开的目的是提供一种基于宿主机操作系统部署指定应用的方法和系统,以解决上述问题。
5.为了达到这个目的,根据本公开的第一方面,本公开实施例提供一种基于宿主机操作系统部署指定应用的方法,包括:
6.构建单应用空间,并将和所述指定应用相关的代码加载到所述单应用空间中;构建单应用的操作系统,并将其与所述单应用空间关联;
7.切换进单应用的操作系统中,并在其中执行所述指定应用相关的代码,以启动相应进程,其中,所述相应进程用于完成所述指定应用的功能以及对来自所述指定应用的资源访问请求进行检查。
8.可选地,所述相应进程包括应用进程和代理进程,所述应用进程用于完成所述指定应用的功能,所述代理进程用于提供资源访问控制策略,并基于所述资源访问控制策略对来自于所述应用进程的资源访问请求进行检查。
9.可选地,所述单应用空间被划分为高特权级空间和低特权级空间,所述应用进程仅能够访问所述低特权级空间,所述代理进程能够访问所述高特权级空间和所述低特权级空间。
10.可选地,从所述应用进程视角,所述低特权级空间的首地址为0且所述高特权级空间不可见。
11.可选地,还包括:基于所述宿主机操作系统部署并启动影子进程,所述影子进程基于所述资源访问请求建立与所述代理进程视角下一致的地址映射数据。
12.可选地,所述应用进程向所述代理进程发送所述资源访问请求,所述代理进程通过所述单应用的操作系统和所述宿主机操作系统将所述资源访问请求发送给所述影子进程,所述影子进程对其进行检查后,再发送给所述宿主机操作系统,所述宿主机操作系统据此申请资源并将资源句柄发送给所述影子进程,以便于所述影子进程记录地址映射数据。
13.可选地,所述单应用的操作系统被限制为仅运行所述指定应用相关的进程的虚拟机。
14.可选地,所述应用进程调用所述宿主机操作系统提供的针对文件的系统函数,来完成针对文件的读写操作。
15.可选地,所述应用进程调用所述代理进程提供的虚拟存储访问接口,由所述代理进程通过虚拟化技术完成针对文件的读写操作。
16.可选地,所述宿主机操作系统为linux。
17.根据本公开的第二方面,本公开实施例提供一种系统,包括:
18.宿主机操作系统;
19.单应用的操作系统;
20.在所述单应用操作系统中执行的与指定应用相关的进程,
21.其中,所述宿主机操作系统在启动时构建单应用空间,将和所述指定应用相关的代码加载到所述单应用空间中,并构建与所述单应用空间关联的单应用的操作系统,然后切换进所述单应用的操作系统中执行所述指定应用相关的代码,以启动与指定应用相关的进程。
22.可选地,所述单应用的操作系统被限制为仅运行所述指定应用相关的进程的虚拟机,所述宿主机操作系统为linux。
23.根据本公开的第三方面,本公开实施例提供一种服务器,包括存储器和处理器,所述存储器还存储有可由所述处理器执行的计算机指令,所述计算机指令被执行时,实现上述任一项所述的方法。
24.根据本公开的第四方面,本公开实施例提供一种计算机可读介质,所述计算机可读介质存储有可由电子设备执行的计算机指令,所述计算机指令被执行时,实现上述的方法。
25.根据本公开的第五方面,本公开实施例一种处理器,所述处理器包括多个处理器核,每个处理器核以独立于其他处理器核的方式处于内核态或者用户态,每个处理器核在内核态下执行宿主机操作系统,并为指定应用分配一个单应用空间,选择任意一个处理器核作为所述单应用空间所执行的处理器核,并将与所述指定应用相关的代码存放在所述单应用空间内,所述宿主机操作系统在所选择的处理器核上切换到用户态,再进入所述单应用空间,以执行其中的代码,从而启动一个单应用的操作系统以及与所述指定应用相关的进程。
26.本公开实施例将针对计算机资源的访问策略控制从宿主机操作系统分离出来,放在独立的代理进程中实现,逻辑上区分访问控制和资源管理。可以将应用代理部署在宿主机操作系统上,也可以在宿主机操作系统之上再建立一个单应用的操作系统,如果将应用
部署在单应用的操作系统中,则将指定应用迁移到其他单应用的操作系统上,可以实现热迁移,迁移效率也更高。
27.多个应用可针对计算机资源的访问策略控制分布在不同的代理进程中,不会由于某个代理进程受到攻击导致全部的代理进程都受到影响,因此和容器技术相比,安全性更好。
28.单应用的操作系统通常是轻量级的操作系统,例如,可以是轻量级的虚拟机,具体可以是虽然由linux的kvm构建,但是精简了功能且限制为只允许在其中执行与指定应用相关的进程。
附图说明
29.通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
30.图1是三层结构的数据中心的示意图;
31.图2示出了图1的分层的数据中心中各部件的物理连接;
32.图3是图2中的服务器的示例图;
33.图4是本公开实施例提供的单应用环境的示例性框图;
34.图5是本公开实施例提供的进程空间的示意性框图;
35.图6和图7是应用于本公开实施例的两种io选择的示例性框图;
36.图8是根据本公开实施例提供的各个进程部署和启动的流程图。
具体实施方式
37.以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
38.在下文中至少一个实施例中提及的处理器组件可以是单一处理器核的处理器,也可以是包括多个处理器核的处理器,还可以包括中央处理器、数字处理器、专用处理器(例如各种用于执行神经网络模型的加速单元)等一种或多种的组合处理器。但处理器组件的具体类别并不是本文发明的重点,因此在下述实施例中基本上可以将处理器组件作为一个整体对待。
39.在下文中提及的处理装置既可以是各种类型的计算机系统,包括但不限于台式机、服务器、笔记本和工作站,也可以是各种嵌入式产品,包括但不限于蜂窝电话、互联网协议设备、数字摄像机、个人数字助理(pda)、手持pc、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机。处理装置上部署有基于软硬件实现的控制系统,该控制系统可以是部分集成在处理装置中,部分通过安装的方式部署到处理装置中。
40.对于服务器,其上安装的操作系统通常是多用户管理模式,至少包括两个用户:普通权限用户和最高权限用户。多用户管理模式下的操作系统会将存储器的寻址空间在软件逻辑上划分为内核空间和至少一个用户空间,例如linux操作系统而言,将最高的1g字节(从虚拟地址0xc0000000到0xffffffff)作为内核空间,而将较低的3g字节(从虚拟地址
0x00000000到0xbfffffff)作为用户空间。内核空间中存放的是操作系统的代码和数据,用户空间中存放的是用户创建的用户程序的代码和数据。处理器的工作模式可分为内核态和用户态。处理器在内核态下比在用户态下具有更多权限,例如处理器在内核态下工作可以能够访问内核空间和用户空间中的所有数据和指令,并且可以经由设备驱动程序能够访问包括外围设备,例如硬盘,网卡。处理器在用户态下执行仅能够访问自身用户空间中的数据和指令。但是处理器在用户空间工作时,可以经由系统调用、异常和外围设备的中断从用户空间切换到内核空间,即从用户态切换到内核态。
41.数据中心
42.数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。在传统的大型数据中心,网络结构通常是图1所示的三层结构,即分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
43.接入层(access layer)103:有时也称为边缘层,包括接入交换机130和接入交换机所连接的各服务器140。各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。接入交换机130是用来让这些服务器接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(top of rack)交换机,它们物理连接服务器。
44.汇聚层(aggregation layer)102:有时候也称为分发层,包括汇聚交换机120。每台汇聚交换机120连接多台接入交换机,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
45.核心层(core layer)101:包括核心交换机110。核心交换机110为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性。整个数据中心的网络分为l3层路由网络和l2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的l3层路由网络。
46.通常情况下,汇聚交换机120是l2和l3层路由网络的分界点,汇聚交换机120以下的是l2网络,以上是l3网络。每组汇聚交换机管理一个传送点(pod,point of delivery),每个pod内都是独立的vlan网络。服务器在pod内迁移不必修改ip地址和默认网关,因为一个pod对应一个l2广播域。
47.汇聚交换机120和接入交换机130之间通常使用生成树协议(stp,spanning tree protocol)。stp使得对于一个vlan网络只有一个汇聚层交换机120可用,其他的汇聚层交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚层,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
48.图2示出了图1的分层的数据中心中各部件的物理连接。如图2所示,一个核心交换机110连接多个汇聚交换机120,一个汇聚交换机120连接多个接入交换机130,一个接入交换机130接入多个服务器140。服务器140是数据中心真实的计算装置。
49.服务器140是基于软硬件协作执行计算任务的处理装置。如图3所示,服务器140包括存储装置201和处理系统300。处理系统300包括经由互联单元302耦接的存储控制器301、i/o控制器303、处理器组件304以及存储设备306。在一些实施例中,处理系统300可视为一个芯片封装,即为片上系统。
50.存储控制器301与外部的存储装置201耦接,通过存储控制器301控制对存储装置201的读写操作。在一些实施例中,存储控制器301和存储装置201集成为一个物理元件。存储装置306和存储装置201可以基于范围广泛的多种信息存储技术的任何技术实现。通常而言,存储装置306比存储装置201具有更高的存储效率,但存储装置201比存储装置202具有更大的存储容量。在一些实施例中,存储设备306例如为只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双数据率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存,等等,而存储装置201则为组织成独立磁盘冗余阵列或raid阵列的多个铁磁性磁盘驱动器。应注意的是,虽然图上存储装置示为独立元件,但其可以包括多个基于相同或不同存储技术的元件。
51.处理器组件304可包含一个或多个处理器核,多个处理器核例如可包括更高速度、更高复杂度的高功率核和较低速度、较低复杂度的低功率核。这些处理器核具有相同或者不同的指令集,通过指令集,处理器核可对包含用户空间3051或内核空间3052内的程序指令进行译码执行。
52.i/o控制器303与i/o设备202耦接,i/o设备202例如可以为显示屏、键盘、网络等设备,通过i/o控制器303可操作i/o设备202。在一些实施例中,i/o控制器303与i/o设备202集成为一个物理元件。
53.存储装置201通常用于存储各种应用程序的代码和数据。存储装置306既用于存储一些核心代码和数据,例如操作系统的代码和数据、驱动程序的代码和数据,还可以提供各种程序(包括操作系统、驱动程序和应用程序)运行时所需的进程运行空间。
54.当服务器上电启动后,通过操作系统,存储装置306的进程运行空间被划分为内核空间3052和一个或多个用户空间3051。用户空间331是用户程序的运行空间,内核空间3052是操作系统和系统程序的运行空间。
55.在内核空间内,存储有转换表3053、用户权限表3054、块缓冲器3055、中断表3056、页面表3057等诸多与操作系统运行相关的表项。页面表3057将页的虚拟地址和页的物理地址相关的表项。块缓冲器3055用于将存储装置201中的数据以块的形式缓存,并能够提供以页形式检索的页数据。转换表3053将页面的虚拟地址和包括该页面的内容的存储装置201内一个或多个数据块的标识符相关。用户权限表3054是多个用户和权限的关系表。同时内核空间3052为由模式控制器3401、存储驱动器3402、i/o驱动器3403等组成的操作系统340提供运行环境。模式控制器3401、存储驱动器3402、i/o驱动器3403可在内核空间3053中具有各自独立的运行环境。每个运行环境可存储一些待执行代码、一些输入数据以及一些中间运算数据和一些最终结果数据。操作系统340可以为目前普遍适用的windows
tm
操作系统版本、unix操作系统、linux操作系统、android操作系统、realtime os操作系统中的一种。
56.用户空间3051用于提供各种应用进程的运行环境,每个应用程序的运行环境都可以存储包括该应用程序的一些待执行代码、一些输入数据、一些中间运算结果和一些最终结果数据。
57.处理器组件304可从用户空间3051读取各个应用程序的代码并逐一执行。处理器组件304可从内核空间3052中读取操作系统340的代码并逐一执行。其中,将执行内核空间3052的代码的处理器状态称为内核态,将执行用户空间3051的代码的处理器状态称为用户态。由于处理器组件304可以包括一个或多个处理器核,因此当处理器组件304包含多个处
理器核,则关于处理器处于何种状态存在三种情况:所有处理器核都处于内核态;所有处理器核都处于用户态;以及一部分处理器核处于用户态,另一部分处理器核处于内核态。
58.处理器核在内核态下比在用户态下具有更多权限,例如处理器核在内核态下工作可以能够访问内核空间和用户空间中的所有数据和指令,并且可以经由设备驱动程序能够访问包括外围设备,例如硬盘,网卡。处理器核在用户态下执行仅能够访问自身用户空间中的数据和指令。但是处理器核在用户空间工作时,可以经由系统调用、异常和外围设备的中断从用户空间切换到内核空间,即从用户态切换到内核态。此外,应理解,在多用户的操作系统中,处理器核在不同用户的用户态下仅能访问对应用户的资源,例如,处理器核切换到user1的用户态下,则仅能够访问user1具有权限的资源。
59.虽然未示出,但是作为可选的部署方式,还可以在操作系统至少部署多个虚拟机,如果虚拟机也是多用户模式,则虚拟机的存储空间也可以划分为内核空间和用户空间,从而将应用程序部署在虚拟机内部的用户空间中,内核空间中运行着虚拟机的内核组件。作为示例,kvm(用于基于内核的虚拟机)是针对x86硬件上的linux的完整虚拟化解决方案,包含虚拟化扩展(intel vt或amd-v)。它由提供核心虚拟化基础架构的可加载内核模块kvm.ko和处理器特定模块kvm-intel.ko或kvm-amd.ko组成。使用kvm,可以运行多个运行未修改的linux或windows映像的虚拟机。每个虚拟机都有专用的虚拟硬件:网卡、磁盘、图形适配器等。
60.图4是本公开实施例提供的单应用环境的示例性框图。单应用环境200位于图中所示的软件内核层之上。软件内核层之上可以构建多个单应用环境200。图中,单应用环境200为针对一个指定应用构建的执行环境。单应用环境200包括影子进程201和单应用的操作系统202。在单应用的操作系统202中执行应用进程2021和代理进程2022。应用进程2021是与该指定应用对应的执行进程。代理进程2022是将应用进程2021和软件内核层122隔离开来并为应用进程2021提供针对系统资源的访问策略和访问控制,所述系统资源包括i/o、存储、网络。具体地,代理进程2022针对指定应用设定访问策略,当接收到从应用进程2021发送过来的访问请求之后,先根据访问策略进行权限检查,将通过权限检查的访问请求发送给软件内核层122,并从软件内核层122得到审核结果。
61.在一些实施例中,软件内核层122包括宿主机操作系统和虚拟机软件(或者仅包括宿主机操作系统)。软件内核层122对应用进程2021的访问请求进行处理,例如,如果访问请求是请求访问某个io设备,代理进程2022在权限检查通过后,将请求发送给软件内核层122,软件内核层122将该io设备的操作句柄返回给代理进程2022,代理进程2022再返回给应用进程2021,再例如,如果访问请求是申请内存空间,则代理进程2022在权限检查通过后,将请求发送给软件内核层122,软件内核层122通过内存管理系统将特定内存空间的访问地址提供给应用进程2021和代理进程2022。
62.作为一个具体实现,应用进程2021可先执行一个函数调用,该调用将要访问的资源标识信息作为参数,通过该调用使得程序执行跳转到代理进程2022中(对应图上步骤1),代理进程2022执行权限检查模块,权限检查模块基于预定的访问策略判断该应用进程是否对要访问的资源具有访问权限,如果有,则通过宿主机操作系统提供的系统调用使得程序执行跳转到宿主机操作系统中执行(对应图上步骤2))。宿主机操作系统为应用进程2021申请资源,并将资源访问的句柄和权限返回给代理进程2022(对应图上步骤7),然后由代理进
程2022将句柄和权限提供给应用进程2021(对应图上步骤8)。即图上步骤1、2、7和8组成闭环的资源访问的处理逻辑。
63.作为另一个具体实现,代理进程2022可先执行一个代理内核调用,该调用将要访问的资源标识信息作为参数,通过该调用使得程序执行跳转到代理进程2022中(对应图上步骤1),代理进程2022执行权限检查模块,权限检查模块基于预定的访问策略判断该应用进程是否对要访问的资源具有访问权限,如果有,则通过宿主机操作系统提供的系统调用使得程序执行跳转到宿主机操作系统中执行(对应图上步骤2)。宿主机操作系统将请求发送给影子进程201(对应图上步骤3),然后影子进程201将针对访问请求进行处理,并将请求发送给宿主机操作系统(对应图上步骤4),宿主机操作系统申请资源并将资源地址提供给影子(对应图上步骤5),影子进程201记录资源使用信息,并传送给宿主机操作系统(对应图上步骤6),宿主机操作系统将资源的句柄和权限提供给代理进程2022(对应图上步骤7),然后代理进程2022将资源的句柄和权限提供给应用进程2021。即图上步骤1-8组成闭环的资源访问的处理逻辑。增加影子进程的原因是,程序执行从代理进程中要跳出执行宿主机操作系统时,处理器没办法直接从用户态的单用户的操作系统跳转到内核态的宿主机操作系统中,因此需要通过影子进程做切换,同时影子进程的存在,也使得宿主机操作系统认为所有资源请求都来自影子进程,单应用的操作系统对其是透明的。图5是本公开实施例提供的进程空间的示意性框图。单应用空间可以看作是代理的操作系统视角下的进程空间。全局空间可以看作宿主机操作系统视角下的进程空间。影子空间可以看作是影子进程视角下的进程空间。如图上所示,在宿主机操作系统视角下,应用进程2021的进程空间和代理进程2022的进程空间都是其管理的内存空间的一部分,宿主机操作系统可以对其进行任意操作(包括读写),影子空间是与单应用空间一一对应的地址空间,影子进程201对于影子空间的任何操作都会作用到单应用空间。
64.在一些实施例中,宿主机操作系统负责维护全局空间和多个单应用空间之间的地址映射数据,例如通过一个全局地址表维护全局空间和所有单应用空间之间的地址映射数据,这全局地址表可包括应用进程的进程名称、进程id、单应用空间的起止地址。每个代理进程2022则维护与自身相关的局部地址表,每个影子进程同样维护与其对应的代理进程2022的局部地址表(影子进程和代理进程是一一对应的)。代理进程2022的局部地址表可包括代码起止地址和数据起止地址。举例说明,在全局地址表中,应用a的单应用空间的起始地址为addr1,大小1m,在应用a的局部地址表中,指定代理进程的数据起始地址为dataaddr1,大小为1m,代码起始地址为codeaddr1,大小为1m,应用进程的数据地址为dataaddr2,大小为1m,代码起始地址为codeaddr2,大小为2m。
65.在另一些实施例中,宿主机操作系统的全局地址表内记录了所有应用的地址映射数据,该地址映射数据包括每个应用的数据起止地址和代码起止地址,而每个代理进程则维护以与自身相关的数据副本,每个影子进程同样维护一个这样的副本。
66.在一些实施例中,如图所示,单应用空间中的代理进程2022的进程空间为高特权级空间,应用进程2021的进程空间为低特权级空间,并且,应用进程2021的进程空间从0地址开始编址,由此在应用进程2021的视角内,代理进程2022的进程空间并不存在,这样可避免应用进程2021访问代理进程2022的进程空间,从而实现应用进程和代理进程之间的隔离。如果使用linux系统或unix系统,则高特权级空间可对应于内核空间,低特权级空间可
对应于用户空间,即代理进程2022的进程空间属于内核空间,而应用进程2021的进程空间属于用户空间,相应地,处理器在内核态下执行代理进程2022的代码,在用户态下执行应用进程2021的代码。
67.上述实施例将针对计算机资源的访问策略控制从软件内核层分离出来,放在独立的代理进程中实现,逻辑上区分访问控制和资源管理,并且和虚拟机技术相比,单应用的操作系统更加轻量级,更加节省资源。同时,由于多个应用针对计算机资源的访问策略控制分布在不同的代理进程中,不会由于某个代理进程受到攻击导致全部的代理进程都受到影响,因此和容器技术相比,安全性更好。
68.图6和图7是应用于本公开实施例的两种io选择的示例性框图。如图6所示,一种实现中是单应用的操作系统202包括一个文件系统组件(如果是linux系统,则该组件为sandboxed host linux fs),以支持应用进程2021调用一个系统级的针对文件的读写操作(syscall),该读写操作被直接转发到宿主机,从而完成针对文件的读写操作。如图7所示,在另一种实现中,可以向应用2021呈现独立的文件系统,或者符合某种标准的存储api(virtual fs/storgae api)。此时应用2021针对文件的读写由代理进程2022基于虚拟化技术完成。
69.上述两种灵活的io实现机制,即对应于选择基于宿主机的文件系统或者基于虚拟设备的io实现io。
70.图8是根据本公开实施例提供的各个进程部署和启动的流程图。如图上所示,步骤s01是为指定应用构建一个单应用空间,并将和该应用相关的代码加载到单应用空间中。通常,启动linux操作系统,先加载并执行操作系统的动态库文件ld.so文件,在该库文件执行过程中,会实现设备驱动、内存管理等一系列的操作,其中包括为指定应用构建一个单应用空间,并将该应用相关的代码加载到单应用空间中。该应用相关的代码包括上述代理进程的代码。
71.步骤s02是构建单应用的操作系统并将其与单应用空间关联。例如,动态库文件ld.so文件在执行过程中,会调用一个加载器container loader,用于构建一个单应用的操作系统,该单应用的操作系统可以理解为一个虚拟机或者一个轻量级的虚拟机,该操作系统设定为可操作单应用空间,即可读、写和执行单应用空间内的代码。在可选的实施方式中,步骤s01将单应用的操作系统的代码也存放在单应用空间中,container loader加载单应用空间的单应用的操作系统的代码构建起单应用的操作系统。
72.步骤s03是切换进单应用的操作系统中,并通过执行代理进程的代码以启动代理进程。当处理器切换进单进程操作系统时,只能对单应用空间进行读写和执行操作,以此将单应用空间和宿主机操作系统隔离,进而在单应用的操作系统中去启动代理进程。
73.步骤s04是代理进程执行应用进程的代码以启动应用进程。应用进程用于完成指定应用的功能。应用进程可经由代理进程访问外部的资源,代理进程负责审核并转换应用进程提供的资源访问请求,并将检查通过的资源访问请求提供给单应用的操作系统和宿主机操作系统。应注意,本步骤中,应用进程的代码可以是由代理进程在执行应用进程的代码之前将其加载到单应用空间中,也可以是在步骤s01执行“将代理进程的代码加载到单应用空间”时,一并将应用进程的代码加载到单应用空间中。
74.步骤s05是启动影子进程。影子进程用于审核来自应用进程的资源访问请求并记
录宿主机操作系统关于资源访问请求的处理结果。影子进程通常建立与单应用空间完全相同的地址映射数据。
75.基于本实施例,宿主机操作系统在初始化时,构建一个单应用空间,然后将代理进程的代码加载到单应用空间中,然后构建一个单应用的操作系统(类似轻量级的计算机系统),并进入到单应用的操作系统中执行单应用空间内的代理进程的代码,以完成代理进程的启动。
76.但应注意,代理进程在单应用的操作系统中启动,而影子进程在宿主机操作系统中启动,代理进程和影子进程并不能直接交互,两者必须通过宿主机操作系统和/或单应用的操作系统实现。
77.基于本实施例,将针对计算机资源的访问策略控制从宿主机操作系统分离出来,放在独立的代理进程中实现,逻辑上区分访问控制和资源管理。可以将应用代理部署在宿主机操作系统上,也可以在宿主机操作系统之上再建立一个单应用的操作系统,如果将应用部署在单应用的操作系统中,则将指定应用迁移到其他单应用的操作系统上,可以实现热迁移,迁移效率也更高。
78.单应用的操作系统通常是轻量级的,例如轻量级的虚拟机,更具体地,可以是虽然由linux的kvm构建,但是精简了功能且限制为只允许在其中执行与指定应用相关的进程的虚拟机。
79.在一些实施例中,本实施例提供的方法可由一个多核处理器(例如图3的处理器组件304)执行,该多核处理器可包括多个功能等效或者至少使用相同的指令集架构的处理器核。每个处理器核可以以独立于其他处理器核的方式处于内核态或者用户态。每个处理器核在内核态下执行宿主机操作系统,每个处理器核上执行的宿主机操作系统实例互相配合,为被执行时要部署的指定应用分配一个单应用空间,使用其内部的调度器(scheduler)选择任意一个处理器核作为该单应用空间所执行的处理器核,并且将与指定应用相关的代码存放在该单应用空间内。在多个处理器核上执行的宿主机操作系统使用其内部的调度器进行判断,在认为适当的时刻,在所选择的处理器核切换到用户态,再进入单应用空间,以执行其中的代码,从而启动单应用的操作系统以及与指定应用相关的进程。如此,可通过多个处理器核分别部署和执行多个应用来提高系统的处理性能。作为特例,可以选择多个处理器核中的某些处理器核作为主处理器核,专门负责调度从处理器核的分配,主处理器核可在内核态下执行宿主机操作系统,宿主机操作系统被执行时为要部署的多个应用分别分配一个单应用空间和一个协处理器核,并且将相应应用相关的代码存放在相应的单应用空间内,然后驱动相应的协处理器核在用户态下访问相应的单应用空间下,以执行其中的代码。
80.在一些实施例中,单应用空间被划分为高特权级和低特权级空间,并且,代理进程能够访问所有空间,而应用进程只能访问低特权级的空间。
81.在一些实施例中,单应用的操作系统采用多用户管理模式,因此至少包括两种类型的用户:普通权限用户和最高权限用户,以最高权限用户启动代理进程,以普通权限用户启动应用进程,从而代理进程能够访问所有空间,而应用进程只能访问低特权级的空间。如果基于linux操作系统实现单应用的操作系统,则这里的高特权级空间可以视为linux操作系统中的内核空间,低特权级空间为用户空间。
82.在一些实施例中,单应用的操作系统对高特权级空间和低特权级空间进行重新编址,使得从应用进程视角下,低特权级空间的首地址为0,并且,高特权级空间不可见,以避免应用进程访问高特权级空间。
83.与上述实施例对应,本公开还提供一种计算机存储介质,所述计算机存储介质例如为非易失性存储器等各种存储、磁盘等存储设备,这种存储设备通常与处理器耦接集成在处理装置内部,当处理装置工作时,处理器能够从存储设备中读取并执行计算机指令。这种计算机存储介质中存储的计算机指令在被处理器执行时,能够完成以下操作:构建单应用空间,并将和指定应用相关的代码加载到单应用空间中;构建单应用的操作系统,并将其与单应用空间关联;切换进单应用的操作系统中,并在其中执行所述指定应用相关的代码,其中所述指定应用包括完成指定应用功能的应用进程和代理进程。
84.本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
85.可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
86.计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
87.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,以及上述任意合适的组合。
88.可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如java、c ,还可以包括常规的过程式程序设计语言,例如c。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
89.以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同
替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献