CN112596921A - 系统调用处理方法及处理装置 - Google Patents
系统调用处理方法及处理装置 Download PDFInfo
- Publication number
- CN112596921A CN112596921A CN202011494289.9A CN202011494289A CN112596921A CN 112596921 A CN112596921 A CN 112596921A CN 202011494289 A CN202011494289 A CN 202011494289A CN 112596921 A CN112596921 A CN 112596921A
- Authority
- CN
- China
- Prior art keywords
- operating system
- guest
- instruction
- system call
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
系统调用处理方法及处理装置,应用于客操作系统,所述客操作系统运行于客户机中,所述客户机通过具有硬件虚拟化功能的物理处理器虚拟化得到,所述方法包括:接收系统调用请求;执行预设的第一指令,使所述系统调用请求进入主操作系统中运行,以完成系统调用操作。采用上述方案,能够提高系统调用的处理效率。
Description
技术领域
本说明书实施例涉及计算机虚拟化技术领域,尤其涉及一种系统调用处理方法及处理装置。
背景技术
现有的计算机从软件角度而言,大体上可以认为由操作系统(Operating System,OS)和应用程序(Application)组成,其中,操作系统为管理计算机硬件与软件资源的计算机程序,如windows操作系统和linux操作系统等;应用程序为完成某些特定工作的计算机程序,通俗而言就是在计算机上使用的工具,如办公软件,浏览器等。
通过虚拟化(Virtualization)技术,能够在物理硬件上抽象出一个或多个虚拟计算机,简称为虚拟机(Virtual Machine,VM),从而提升物理资源的利用效率。对于物理计算机而言,虚拟机就是其上运行的应用程序,其与一般应用程序不同的是包含了操作系统和应用程序。
在虚拟化后,物理计算机可以称为宿主机(Host Machine),物理计算机上运行的操作系统可以称为主操作系统(Host Operating System,Host OS),在物理计算机上运行的虚拟机可以称为客户机(Guest Machine),在虚拟机上运行的操作系统可以称为客操作系统(Guest Operating System,Guest OS)。
在目前的计算机架构中,应用程序无法直接使用操作系统的物理资源,而是通过系统调用(System Call)的方式向操作系统进行请求,由操作系统实施相关的硬件功能。因此,在虚拟化后,若客操作系统无法处理客户机的应用程序提出的系统调用请求,只能通过指令退出客户机并返回宿主机,再通过宿主机的应用程序调取客操作系统无法处理的系统调用请求,使得主操作系统知晓所需处理的系统调用请求,并进行处理,系统调用请求处理完成之后,还需要通过宿主机的应用程序向主操作系统发出返回请求,才能再次进入客户机。
由上可知,对于客户机无法处理的系统调用请求,往往涉及较为复杂的处理流程,存在较大的系统开销,影响虚拟化的工作效率。
发明内容
有鉴于此,本说明书实施例提供一种系统调用处理方法及处理装置,能够提高系统调用的处理效率。
本说明书实施例提供了一种系统调用处理方法,应用于客操作系统,所述客操作系统运行于客户机中,所述客户机通过具有硬件虚拟化功能的物理处理器虚拟化得到,所述方法包括:
接收系统调用请求;
执行预设的第一指令,使所述系统调用请求进入主操作系统中运行,以完成系统调用操作。
可选地,在所述执行预设的第一指令之前,所述系统调用处理方法还包括:
确定所述系统调用请求超出处理权限。
可选地,所述客户机设置于隔离环境中;所述确定所述系统调用请求超出处理权限,包括:
根据隔离配置信息确定所述系统调用请求超出处理权限。
可选地,所述系统调用处理方法还包括:
通过预设的第二指令,获取所述主操作系统反馈的系统调用操作结果;
其中,所述第二指令由所述主操作系统在完成所述系统调用操作后执行。
本说明书实施例还提供了一种系统调用处理方法,应用于操作系统,所述操作系统运行于具有硬件虚拟化功能的物理处理器中,包括客操作系统和主操作系统,其中:所述主操作系统运行于宿主机中;所述客操作系统运行于通过物理处理器虚拟化得到的客户机中;所述方法包括:
所述客操作系统接收客应用程序的系统调用请求;
所述客操作系统执行预设的第一指令,使所述系统调用请求进入主操作系统中运行;
所述主操作系统响应于所述系统调用请求,进行系统调用操作。
可选地,所述系统调用处理方法还包括:
所述主操作系统在完成所述系统调用操作后,通过预设的第二指令,向对应的客操作系统反馈系统调用操作结果。
本说明书实施例还提供了一种处理装置,包括:
存储模块,适于存储能够在物理处理器上运行的指令集,所述指令集中包括第一指令;
物理处理器,具有硬件虚拟化功能,适于在用户态虚拟化得到客户机,所述客户机包括客操作系统和客应用程序,其中,所述客操作系统适于接收所述客应用程序的系统调用请求,并执行预设的第一指令,使所述系统调用请求进入内核态的主操作系统中运行,以完成系统调用操作。
可选地,所述物理处理器在所述用户态运行的隔离环境中设置客户机,所述客操作系统适于根据隔离配置信息确定所述系统调用请求是否超出处理权限。
可选地,所述物理处理器通过所述用户态的可配置内核模块实现所述隔离环境,所述内核模块经过配置后运行所述客户机的客操作系统。
可选地,所述指令集中还包括第二指令;
所述主操作系统在完成所述系统调用操作后,通过所述第二指令向对应的客操作系统反馈系统调用操作结果。
采用本说明书实施例的系统调用处理方案,客操作系统通过第一指令将运行环境转换为主操作系统,使得所述系统调用请求能够直接运行于主操作系统,以便于所述主操作系统可以直接进行系统调用操作,无需通过宿主机的应用程序进行调取,避免了宿主机中应用程序和主操作系统的多次切换和指令交互,节约了系统调用的处理时间,提升了系统调用的处理效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对本说明书实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例中一种系统调用处理方法的流程图。
图2是本说明书实施例中另一种系统调用处理方法的流程图。
图3是本说明书实施例中另一种系统调用处理方法的流程图。
图4是一种现有的基于gVisor的系统调用处理流程框图。
图5是本说明书实施例中一种基于gVisor的系统调用处理流程框图。
图6是本说明书实施例中另一种系统调用处理方法的流程图。
图7是本说明书实施例中处理装置的结构框图。
具体实施方式
如背景技术所述,在虚拟化的运行环境中,当客户机的应用程序发出系统调用请求而客操作系统又无法处理时,往往需要退出至宿主机来进行处理,其中涉及主操作系统和宿主机的应用程序之间的多次切换和指令交互,流程过于复杂,系统开销较大,影响虚拟化的工作效率。
为了解决上述技术问题,本说明书实施例采用具有硬件虚拟化功能的物理处理器提供的指令,将运行环境从所述客操作系统转换为所述主操作系统,由此,所述系统调用请求能够从客操作系统直接转换到主操作系统中运行,所述主操作系统也可以直接进行系统调用操作,无需通过宿主机的应用程序进行调取,避免了宿主机中应用程序和主操作系统的多次交互,节约了系统调用的处理时间,提升了系统调用的处理效率。
可以理解的是,为了便于描述,在本说明书实施例中,运行在客户机的应用程序简称为客应用程序,运行在宿主机的应用程序简称为主应用程序。客应用程序和主应用程序之间并不限定主次、顺序或重要性。
为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书实施例的附图,对本说明书实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本说明书的一部分实施例,而不是全部的实施例。基于所描述的本说明书的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本说明书保护的范围。
从客户机角度出发,参照图1所示的一种系统调用处理方法的流程图,所述系统调用处理方法可应用于客操作系统,其中,所述客操作系统运行于客户机中,所述客户机通过具有硬件虚拟化功能的物理处理器虚拟化得到。在本说明书实施例中,所述方法可以包括以下步骤:
S01,接收系统调用请求。
其中,所述系统调用请求包括:访问操作,如读取操作、写入操作、打开操作等其中至少一种或多种。
在具体实施中,所述客户机可以包括虚拟处理器、虚拟内存、虚拟外设等虚拟资源,这些虚拟资源由物理处理器的硬件辅助虚拟化得到,所述客应用程序为了使用客户机的虚拟资源,需要向客操作系统发送系统调用请求。
S02,执行预设的第一指令,使所述系统调用请求进入主操作系统中运行,以完成系统调用操作。
采用本说明书实施例的系统调用处理方案,客操作系统通过第一指令将运行环境转换为主操作系统,使得所述系统调用请求能够直接运行于主操作系统,以便于所述主操作系统可以直接进行系统调用操作,无需通过宿主机的应用程序进行调取,避免了宿主机中应用程序和主操作系统的多次切换和指令交互,节约了系统调用的处理时间,提升了系统调用的处理效率。
在具体实施中,所述第一指令由具有硬件虚拟化功能的物理处理器提供,可以存储于物理处理器的指令集中。进一步地,所述第一指令可以为一条汇编指令,根据实际场景中采用的物理处理器类型,所述第一指令可以对应不同的操作码,例如,第一指令在一种处理器上的操作码可以为0F 01D9,而在另一种处理器上的操作码可以为0F 01C1。本说明书实施例对于第一指令对应的操作码不做具体限制。
可以理解的是,在实际应用中,所述第一指令在不同类型的物理处理器中的名称可能不相同,只要其能够实现系统调用请求从客操作系统进入主操作系统中运行的功能,即可认为是本说明书实施例所述的第一指令。
例如,在一可实现操作中,所述第一指令可以为VMMCALL指令,所述客操作系统通过执行VMMCALL指令,能够将运行环境直接转换至主操作系统,使得系统调用请求进入主操作系统中运行,所述主操作系统根据运行的系统调用请求进行系统调用操作,完成所述系统调用请求的处理。本说明书实施例对于第一指令的名称不做具体限制。
在具体实施中,在进行运行环境的转换之前,所述客操作系统可以对物理处理器中的硬件寄存器进行配置,使得硬件寄存器中的信息适配于主操作系统,然后,客操作系统通过执行第一指令,能够将运行环境转换为主操作系统。
在具体实施中,为了避免在进入客户机的过程中产生的主应用程序和主操作系统之间的多次切换和指令交互,提升系统调用的处理效率,如图2所示,为另一种系统调用处理方法的流程图,应用于客操作系统,其中步骤S01和步骤S02可以参考上述相关部分的描述,在此不再赘述,所述方法还包括:
S11,通过预设的第二指令,获取所述主操作系统反馈的系统调用操作结果。
其中,所述第二指令由所述主操作系统在完成所述系统调用操作后执行。
在具体实施中,所述第二指令由具有硬件虚拟化功能的物理处理器提供,可以存储于物理处理器的指令集中。进一步地,所述第二指令可以为一条汇编指令,根据实际场景中采用的物理处理器类型,所述第二指令可以对应不同的操作码,例如,第二指令在一种处理器上的操作码可以为0F 01D8。本说明书实施例对于第二指令对应的操作码不做具体限制。
在具体实施中,为了使主操作系统在完成系统调用操作后可以自行转换运行环境,进入对应的客户机,而不是在主应用程序发起返回请求后再转换运行环境,可以将请求返回客户机的代码存储于主操作系统对应的代码区域,由此,在所述主操作系统完成系统调用操作后,通过执行请求返回客户机的代码,在主操作系统中直接生成返回请求,使得主操作系统进行相应的返回客户机操作。
可以理解的是,在实际应用中,所述第二指令在不同类型的物理处理器中的名称可能不相同,只要其能够实现主操作系统向对应的客操作系统反馈系统调用操作结果的功能,即可认为是本说明书实施例所述的第二指令。
例如,在一可实现操作中,所述第二指令可以为VMRUN指令,所述主操作系统通过执行VMRUN指令,能够将运行环境从主操作系统转换至系统调用请求对应的客户机的客操作系统。本说明书实施例对于第二指令的名称不做具体限制。
在具体实施中,在进行运行环境的转换之前,所述主操作系统可以对物理处理器中的硬件寄存器进行配置,使得硬件寄存器中的信息适配于客操作系统,然后,主操作系统通过执行第二指令,能够将运行环境转换为主操作系统。
在具体实施中,在运行环境进入客操作系统后,客操作系统可以向客应用程序反馈系统调用操作结果,使得客应用程序能够执行后续操作。
例如,在客应用程序中,一个任务按顺序执行a、b、c三个步骤,其中,步骤a和步骤c使用虚拟资源,在客应用程序中执行相应代码进行处理即可,步骤b需要使用物理资源,客应用程序在处理步骤b时向客操作系统发出系统调用请求,若客操作系统无法处理该系统调用请求,还需要通过第一指令使系统调用请求进入主操作系统中运行,在主操作系统中执行相应代码处理步骤b的系统调用请求。在主操作系统处理完该系统调用请求的处理后,执行第二指令将运行环境转换至所述系统调用请求对应的客操作系统,客操作系统继续执行相应代码完成步骤b,并继续处理步骤c。
可选地,在运行环境从客操作系统转换至主操作系统之前,可以在物理处理器的硬件存储模块中存储客户机信息,以便于后续重新进行虚拟化,得到系统调用请求对应的客户机。所述主操作系统在完成系统调用请求之后,加载保存在硬件存储模块里的客户机信息,设置虚拟处理器作为客户机的虚拟硬件,运行客操作系统,然后,主操作系统通过调用第二指令进入客操作系统。
在具体实施中,客户机和宿主机可以运行于物理处理器的不同工作模式下,通过物理处理器所处的工作模式,可以确定程序的运行环境。具体而言,所述物理处理器的工作模式可以包括:第一工作模式和第二工作模式,其中,当所述物理处理器处于所述第一工作模式时,程序运行于客户机,所述物理处理器执行客操作系统的代码,以实现客户机中的客操作系统;当所述物理处理器处于第二工作模式时,程序运行于主操作系统,所述物理处理器执行主操作系统的代码,以实现宿主机中的主操作系统。
基于此,客操作系统执行预设的第一指令,使所述系统调用请求进入主操作系统中运行,具体可以包括:客操作系统通过第一指令将物理处理器的工作模式从第一工作模式转换为第二工作模式,物理处理器执行主操作系统的代码,从而使所述系统调用请求在主操作系统中运行,由主操作系统完成系统调用请求的处理。
客操作系统通过第二指令,获取所述主操作系统反馈的系统调用操作结果,具体可以包括:客操作系统通过第二指令将物理处理器的工作模式从第二工作模式转换为第一工作模式,物理处理器执行客操作系统的代码,从而将运行环境转换至客操作系统,客操作系统获取主操作系统的系统调用操作结果。
可选地,在所述物理处理器的工作模式从第一工作模式转换为第二工作模式之前,可以在物理处理器的硬件寄存单元中存储客户机信息,以便于后续重新进行虚拟化,得到系统调用请求对应的客户机。
可以理解的是,在实际应用中,所述物理处理器的工作模式在不同类型的物理处理器中的名称可能不相同,只要其能够区分程序的运行环境,即可认为是本说明书实施例所述的工作模式。例如,在一可实现操作中,所述第一工作模式可以称为非根(non-root)模式,第二模式可以称为根(root)模式;又例如,在一可实现操作中,所述第一工作模式可以称为客(guest)模式,第二模式可以称为主(host)模式。本说明书实施例对此不做限制。
在具体实施中,若客应用程序的系统调用请求均由主操作系统处理,将会降低计算机的整体工作效率,且使得主操作系统存在安全隐患,容易遭受恶意程序的攻击,为此,可以对物理资源进行划分,使得客操作系统能够使用部分物理资源,当客操作系统接收到这部分物理资源对应的系统调用请求时,可以处理这些系统调用请求。
换而言之,根据客操作系统被允许直接使用的物理资源种类,客操作系统存在处理权限,当客应用程序发起的系统调用请求对应允许客操作系统使用的物理资源种类时,所述系统调用请求未超出处理权限,客操作系统可以进行处理;当客应用程序发起的系统调用请求对应未允许客操作系统使用的物理资源种类时,所述系统调用请求超出处理权限,客操作系统无法进行处理。
基于上述描述,若客操作系统被允许直接使用至少部分的物理资源,则在执行预设的第一指令之前,还可以包括以下步骤:
判断所述系统调用请求是否超出处理权限。
由此,将超出客操作系统处理权限的系统调用请求通过主操作系统进行处理,而未超出客操作系统处理权限的系统调用请求由客操作系统自行处理。
例如,如图3所示,为另一种系统调用处理方法的流程图,在所述步骤S01和步骤S02之间,还包括步骤S21:判断所述系统调用请求是否超出处理权限,如果是,则执行步骤S02,否则,执行步骤S22,由客操作系统处理所述系统调用请求,完成系统调用操作。
在具体实施中,为了提高虚拟化的运行环境的安全性,防止客户机中恶意代码对宿主机的访问,可以采用一些隔离方法为客户机中运行的程序提供独立安全的运行环境。
例如,将所述客户机设置于容器(Container)中,通过容器有效地将单个客操作系统的虚拟资源隔离至孤立的组中,以便更好的在孤立的组之间平衡有冲突的物理资源使用需求。
又例如,可以将所述客户机设置于沙箱(Sandbox)中,使得客户机中的至少部分程序在沙箱提供的隔离环境中运行,无需交由宿主机处理。
基于上述描述,所述客操作系统的处理权限由隔离配置信息确定,在根据隔离配置信息确定所述系统调用请求超出处理权限后,客操作系统可以调用所述第一指令将运行环境转换至客操作系统,使得所述系统调用请求直接在主操作系统中运行,并由主操作系统完成处理。
需要说明的是,无论是采用容器、沙箱或者沙箱与容器结合的隔离方法,对于客户机无法处理的系统调用请求,仍然存在背景技术所述的问题,以下通过一具体应用场景来详细说明。
在一实施例中,如图4所示,为一种现有的基于gVisor的系统调用处理流程框图。其中,gVisor为一种沙箱,虚拟机设置于gVisor中,gVisor可以处理客应用程序的部分系统调用请求。
具体地,gVisor基于完全虚拟化架构,如内核虚拟机(Kernel-based VirtualMachine,KVM),可以获取客应用程序通过系统调用指令(如SYSCALL指令)发送的系统调用请求,并交由gVisor中的内核模块sentry处理,sentry即为客户机的客操作系统。
但是,sentry对物理资源的访问存在限制,当sentry无法访问客应用程序请求的物理资源时,所述系统调用请求超出了sentry的处理权限,需要通过更高权限的主操作系统进行处理。
假设sentry无法处理客应用程序的系统调用请求A,则sentry通过退出指令(如HLT指令)使得物理处理器从guest模式退出,进入host模式,由于只是工作模式的切换,而对于宿主机而言,gVisor及其包含的客户机只是一个主应用程序,在从gVisor退出后,系统调用请求A运行于主应用程序中。
在物理处理器处于host模式后,主操作系统完成退出指令(如HLT指令)的处理。由于系统调用请求A运行于主应用程序中,主操作系统无法知晓需要处理的系统调用请求,需要主操作系统通过返回指令(如SYSRET指令)返回主应用程序,主应用程序通过系统调用指令(如SYSCALL指令),向主操作系统发送系统调用请求A,主操作系统处理系统调用请求A。
在系统调用请求A完成处理后,对于主操作系统而言,是主应用程序发起的系统调用请求,因此,主操作系统通过返回指令(如SYSRET指令)向主应用程序反馈处理完成,主应用程序向主操作系统发起调用虚拟化运行指令(如VMRUN指令)的请求,相当于再向主操作系统发送一次系统调用请求B,使主操作系统进行返回对应客户机(即gVisor中的客户机)的操作。主操作系统处理VMRUN指令后,物理处理器从host模式退出,进入guest模式;运行环境返回gVisor中的客操作系统,客操作系统通过返回指令(如SYSRET指令)返回客应用程序,进行后续操作。
结合图4及上述描述可知,当客操作系统无法处理客应用程序发出的系统调用请求时,需要主操作系统和主应用程序之间的多次切换和指令交互(如图4中点虚线框所示部分)来处理系统调用请求,流程过于复杂,系统开销较大,影响虚拟化的工作效率。
在实际应用中,采用本说明书实施例提供的系统调用处理方法,可以避免主操作系统和主应用程序之间的多次切换和指令交互。
继续以基于gVisor的计算机虚拟化为例,如图5所示,为一种采用本说明书实施例提供的系统调用方法的基于gVisor的系统调用处理流程框图,假设sentry无法处理客应用程序通过系统调用指令(如SYSCALL指令)发送的系统调用请求A,则sentry通过第一指令(如VMMCALL指令)将物理处理器从guest模式转换为host模式,将运行环境转换为主操作系统,使得所述系统调用请求A能够直接在主操作系统中运行。
在主操作系统完成系统调用请求A的处理后,根据主操作系统对应代码区域中存储的请求返回客户机的代码,生成返回请求,主操作系统执行第二指令,返回gVisor中的客户机,使物理处理器从host模式退出,进入guest模式;运行环境返回gVisor中的客操作系统,客操作系统通过返回指令(如SYSRET指令)返回客应用程序,进行后续操作。
由上可知,通过调用第一指令使得主操作系统能够直接处理系统调用请求,并在完成系统调用请求的处理后,主操作系统可以直接通过第二指令重新进入gVisor,从而避免了在主操作系统和主应用程序间的多次切换,将主操作系统对于系统调用请求和返回gVisor的请求的处理操作进行了优化,减少了处理gVisor系统调用的时间,提升了系统调用的处理效率。
可以理解的是,上文描述了本说明书实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本说明书披露、公开的实施例方案。
为使本领域技术人员更加清楚地了解及实施本说明书实施例的构思、实现方案及优点,以下参照附图,通过具体实施例详细说明操作系统的流程。
在一具体实施例中,如图6所示,为本说明书实施例中另一种系统调用处理方法的流程图,所述方法应用于操作系统,所述操作系统运行于具有硬件虚拟化功能的物理处理器中,包括客操作系统和主操作系统,其中:所述主操作系统运行于宿主机中;所述客操作系统运行于通过物理处理器虚拟化得到的客户机中。
参照图6,所述系统调用处理方法可以包括以下步骤:
S31,所述客操作系统接收客应用程序的系统调用请求。
S32,所述客操作系统执行预设的第一指令,使所述系统调用请求进入主操作系统中运行。
S33,所述主操作系统响应于所述系统调用请求,进行系统调用操作。
S34,所述主操作系统完成所述系统调用操作后,通过预设的第二指令,向对应的客操作系统反馈系统调用操作结果。
可以理解的是,上述各步骤可参考相关内容的描述,在此不再赘述。
本说明书还提供了与上述系统调用处理方法对应的处理装置,以下参照附图,通过具体实施例进行详细介绍。需要知道的是,下文描述的处理装置可以认为是为实现本说明书提供的系统调用处理方法所需的硬件;下文描述的处理装置的内容,可与上文描述的系统调用处理方法的内容相互对应参照。
在实际应用中,计算机体系架构可以分为用户态(也可以称为用户空间)和内核态(也可以称为内核空间)两种权限状态,通过不同的权限状态能够对程序进行权限控制,使不同的程序只能访问自身权限所允许访问的物理资源,减少有限资源的访问冲突及使用冲突。
内核态的权限高于用户态,为了使用户态程序能够使用内核态的物理资源,内核态程序为用户态程序提供访问的接口,通过系统调用实现接口使用。具体地,用户态程序发起系统调用请求,权限状态从用户态切换到内核态,并且程序跳转到系统调用请求对应的内核代码位置执行,执行完成之后再从内核态程序返回用户态程序。
在具体实施时,操作系统运行于内核态,应用程序运行于用户态。操作程序的权限高于用户程序。应用程序无法直接使用操作系统的物理资源,而是通过系统调用的方式向操作系统进行请求。相应地,在虚拟化中,主操作系统运行于内核态,主应用程序和客户机运行于用户态。
在具体实施中,参考图7所示的一种处理装置的结构框图,所述处理装置70可以包括存储模块71和物理处理器72,其中:
所述存储模块71,适于存储能够在物理处理器上运行的指令集,所述指令集中包括第一指令;
物理处理器72,具有硬件虚拟化功能,在用户态虚拟化得到客户机,所述客户机包括客操作系统和客应用程序,其中,所述客操作系统适于接收所述客应用程序的系统调用请求,执行预设的第一指令,使所述系统调用请求进入内核态的主操作系统中运行,以完成系统调用操作。
采用本说明书实施例的处理装置进行系统调用处理,客操作系统通过第一指令将运行环境转换为主操作系统,使得所述系统调用请求能够直接运行于主操作系统,以便于所述主操作系统可以直接进行系统调用操作,无需通过宿主机的应用程序进行调取,避免了宿主机中应用程序和主操作系统的多次切换和指令交互,节约了系统调用的处理时间,提升了系统调用的处理效率。
在具体实施中,所述物理处理器具体可以为单个处理器核心的处理器,也可以为有多个处理器核心的处理器。本说明书实施例对此不做限制。
在具体实施中,所述系统调用请求包括:访问操作,如读取操作、写入操作、打开操作等其中至少一种。
在具体实施中,所述客户机可以包括虚拟处理器、虚拟内存、虚拟外设等虚拟资源,这些虚拟资源由物理处理器的硬件辅助虚拟化得到,在客户机中也存在权限管理,所述客应用程序为了使用客户机的虚拟资源,需要向客操作系统发送系统调用请求。由此可知,客操作系统和客应用程序需要处于不同的权限状态。
在具体实施中,所述第一指令可以为一条汇编指令,根据实际场景中采用的物理处理器类型,所述第一指令可以对应不同的操作码,具体可参照上述相应部分内容,在此不再赘述。
可以理解的是,在实际应用中,所述第一指令在不同类型的物理处理器中的名称可能不相同,只要其能够实现系统调用请求从客操作系统进入主操作系统中运行的功能,即可认为是本说明书实施例所述的第一指令。
在具体实施中,所述指令集中还包括第二指令,所述物理处理器中运行的主操作系统在完成所述系统调用操作后,通过所述第二指令向对应的客操作系统反馈系统调用操作结果。
其中,为了使主操作系统在完成系统调用操作后可以自行转换运行环境,进入对应的客户机,而不是在主应用程序发起返回请求后再转换运行环境,可以将请求返回客户机的代码存储于主操作系统对应的代码区域,换而言之,就是将请求返回客户机的代码作为内核代码,存储基于内核态对应的代码区域,由此,在所述主操作系统完成系统调用操作后,通过执行请求返回客户机的代码,在主操作系统中直接生成返回请求,使得主操作系统进行相应的返回客户机操作。
采用上述方案,可以避免在进入客户机的过程中产生的主应用程序和主操作系统之间的多次切换和指令交互,提升系统调用的处理效率。
在具体实施中,所述第二指令为一条汇编指令,根据实际场景中采用的物理处理器类型,所述第二指令可以对应不同的操作码,具体可参照上述相应部分内容,在此不再赘述。
可以理解的是,在实际应用中,所述第二指令在不同类型的物理处理器中的名称可能不相同,只要其能够实现主操作系统向对应的客操作系统反馈系统调用操作结果的功能,即可认为是本说明书实施例所述的第二指令。
在具体实施中,客户机和宿主机可以运行于物理处理器的不同工作模式下,通过物理处理器所处的工作模式,可以确定程序的运行环境。具体而言,所述物理处理器的工作模式可以包括:第一工作模式和第二工作模式,其中,当所述物理处理器处于所述第一工作模式时,程序运行于客户机,所述物理处理器执行客操作系统的代码,以实现客户机中的客操作系统;当所述物理处理器处于第二工作模式时,程序运行于主操作系统,所述物理处理器执行主操作系统的代码,以实现宿主机中的主操作系统。具体可参照上述相关实施例的描述,在此不再赘述。
在具体实施中,所述物理处理器在所述用户态运行的隔离环境中设置客户机,所述客操作系统适于根据隔离配置信息确定所述系统调用请求是否超出处理权限。
在具体实施中,所述物理处理器通过用户态的可配置内核模块实现所述隔离环境,所述内核模块经过配置后运行所述客户机的客操作系统。具体可参考上述相关实施例的描述,在此不再赘述。
通过虚拟化技术,客户机上存在权限管理,如客操作系统的权限高于客应用程序,客操作系统和客应用程序需要处于不同的权限状态。为了便于描述,可以将宿主机中的用户态和内核态分别称为主用户态(Host Ring3,HR3)和主内核态(Host Ring0,HR0),将客户机中的用户态和内核态分别称为客用户态(Guest Ring3,GR3)和客内核态(Guest Ring0,GR0)。
从本质上而言,权限状态仍然只有两种,即用户态和内核态,由于物理处理器存在两种工作模式,与两种权限状态进行结合后,形成了四种权限状态。例如,对于物理处理器处于第一工作模式的用户态和内核态,可以认为是客用户态和客内核态,物理处理器处于第二工作模式的用户态和内核态,可以认为是主用户态和主内核态。
为使本领域技术人员更加清楚地了解本说明书实施例的技术方案和优点,继续对上述基于gVisor的计算机虚拟化实施例进行描述,结合参考图5,主操作系统处于主内核态HR0,主应用程序处于主用户态HR3,客操作系统sentry处于客内核态GR0,客应用程序处于客用户态GR3。
在本说明书实施例提供的处理装置中,物理处理器在主用户态HR3中设置有沙箱gVisor,在gVisor中虚拟化得到客户机,其中客应用程序处于客用户态GR3,内核模块sentry作为客操作系统处于客内核态GR0。
客应用程序的系统调用请求发送至sentry,如果sentry无法处理该系统调用请求,则通过第一指令(如VMMCALL指令),使物理处理器从Guest模式退出,并进入Host模式,运行环境从客操作系统进入主操作系统。
在Host模式下,主操作系统接收到第一指令(如VMMCALL指令)后,进入系统调用处理函数,进行系统调用请求处理。在系统调用请求处理完成后,根据处于主内核态HR0的请求返回客户机的代码,在主操作系统中直接生成返回请求,使得主操作系统进行重新进入客户机的准备工作,如加载需要进入的客户机信息,将虚拟化得到的虚拟处理器的模式设置为Guest。并且,通过调用第二指令(如VMRUN指令)进入客户机,完成系统调用请求的流程。
采用上述方案,通过调用第一指令进入主内核态,并在主内核态完成系统调用请求的处理,最后通过第二指令重新进入gvisor,减少了在主用户态和主内核态之间的多次切换和指令交互,减少了gvisor中需要处理系统调用请求的时间,提升了系统调用处理效率。
在实际应用中,所述处理装置可以为片上系统、处理芯片等,本说明书对此不做限制。
可以理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含的包括一个或者更多个该特征。而且,术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
虽然本说明书实施例披露如上,但本说明书实施例并非限定于此。任何本领域技术人员,在不脱离本说明书实施例的精神和范围内,均可作各种更动与修改,因此本说明书实施例的保护范围应当以权利要求所限定的范围为准。
Claims (10)
1.一种系统调用处理方法,其特征在于,应用于客操作系统,所述客操作系统运行于客户机中,所述客户机通过具有硬件虚拟化功能的物理处理器虚拟化得到,所述方法包括:
接收系统调用请求;
执行预设的第一指令,使所述系统调用请求进入主操作系统中运行,以完成系统调用操作。
2.根据权利要求1所述的系统调用处理方法,其特征在于,在所述执行预设的第一指令之前,还包括:
确定所述系统调用请求超出处理权限。
3.根据权利要求2所述的系统调用处理方法,其特征在于,所述客户机设置于隔离环境中;所述确定所述系统调用请求超出处理权限,包括:
根据隔离配置信息确定所述系统调用请求超出处理权限。
4.根据权利要求1至3任一项所述的系统调用处理方法,其特征在于,还包括:
通过预设的第二指令,获取所述主操作系统反馈的系统调用操作结果;
其中,所述第二指令由所述主操作系统在完成所述系统调用操作后执行。
5.一种系统调用处理方法,其特征在于,应用于操作系统,所述操作系统运行于具有硬件虚拟化功能的物理处理器中,包括客操作系统和主操作系统,其中:所述主操作系统运行于宿主机中;所述客操作系统运行于通过物理处理器虚拟化得到的客户机中;所述方法包括:
所述客操作系统接收客应用程序的系统调用请求;
所述客操作系统执行预设的第一指令,使所述系统调用请求进入主操作系统中运行;
所述主操作系统响应于所述系统调用请求,进行系统调用操作。
6.根据权利要求5所述的系统调用处理方法,其特征在于,还包括:
所述主操作系统在完成所述系统调用操作后,通过预设的第二指令,向对应的客操作系统反馈系统调用操作结果。
7.一种处理装置,其特征在于,包括:
存储模块,适于存储能够在物理处理器上运行的指令集,所述指令集中包括第一指令;
物理处理器,具有硬件虚拟化功能,适于在用户态虚拟化得到客户机,所述客户机包括客操作系统和客应用程序,其中,所述客操作系统适于接收所述客应用程序的系统调用请求,并执行预设的第一指令,使所述系统调用请求进入内核态的主操作系统中运行,以完成系统调用操作。
8.根据权利要求7所述的处理装置,其特征在于,所述物理处理器在所述用户态运行的隔离环境中设置客户机,所述客操作系统适于根据隔离配置信息确定所述系统调用请求是否超出处理权限。
9.根据权利要求8所述的处理装置,其特征在于,所述物理处理器通过所述用户态的可配置内核模块实现所述隔离环境,所述内核模块经过配置后运行所述客户机的客操作系统。
10.根据权利要求7所述的处理装置,其特征在于,所述指令集中还包括第二指令;
所述主操作系统在完成所述系统调用操作后,通过所述第二指令向对应的客操作系统反馈系统调用操作结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011494289.9A CN112596921A (zh) | 2020-12-17 | 2020-12-17 | 系统调用处理方法及处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011494289.9A CN112596921A (zh) | 2020-12-17 | 2020-12-17 | 系统调用处理方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112596921A true CN112596921A (zh) | 2021-04-02 |
Family
ID=75196950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011494289.9A Pending CN112596921A (zh) | 2020-12-17 | 2020-12-17 | 系统调用处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596921A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579302A (zh) * | 2022-02-23 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 资源调度方法以及装置 |
CN115437717A (zh) * | 2021-06-01 | 2022-12-06 | 北京小米移动软件有限公司 | 跨操作系统的调用方法、装置及电子设备 |
WO2023066079A1 (zh) * | 2021-10-20 | 2023-04-27 | 北京字节跳动网络技术有限公司 | 虚拟机资源分配方法、装置、介质及设备 |
CN116795557A (zh) * | 2022-03-15 | 2023-09-22 | 华为技术有限公司 | 通信方法、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的系统虚拟机 |
US20140359614A1 (en) * | 2013-06-04 | 2014-12-04 | Vmware, Inc. | High-performance processing in a virtualization environment |
CN106575236A (zh) * | 2014-08-18 | 2017-04-19 | 比特梵德知识产权管理有限公司 | 用于在退出虚拟机器后暴露当前处理器指令的系统及方法 |
CN108241801A (zh) * | 2016-12-26 | 2018-07-03 | 华为技术有限公司 | 处理系统调用的方法和装置 |
CN111459623A (zh) * | 2019-01-18 | 2020-07-28 | 华为技术有限公司 | 应用程序恢复运行的方法、装置及计算机 |
-
2020
- 2020-12-17 CN CN202011494289.9A patent/CN112596921A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的系统虚拟机 |
US20140359614A1 (en) * | 2013-06-04 | 2014-12-04 | Vmware, Inc. | High-performance processing in a virtualization environment |
CN106575236A (zh) * | 2014-08-18 | 2017-04-19 | 比特梵德知识产权管理有限公司 | 用于在退出虚拟机器后暴露当前处理器指令的系统及方法 |
CN108241801A (zh) * | 2016-12-26 | 2018-07-03 | 华为技术有限公司 | 处理系统调用的方法和装置 |
CN111459623A (zh) * | 2019-01-18 | 2020-07-28 | 华为技术有限公司 | 应用程序恢复运行的方法、装置及计算机 |
Non-Patent Citations (2)
Title |
---|
刘腾红: "操作系统", 《操作系统》, 31 December 2008 (2008-12-31), pages 150 - 151 * |
陈少强,谢厚亮: "《操作系统原理与应用(Linux)》", 中国纺织出版社, pages: 209 - 211 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115437717A (zh) * | 2021-06-01 | 2022-12-06 | 北京小米移动软件有限公司 | 跨操作系统的调用方法、装置及电子设备 |
WO2023066079A1 (zh) * | 2021-10-20 | 2023-04-27 | 北京字节跳动网络技术有限公司 | 虚拟机资源分配方法、装置、介质及设备 |
CN114579302A (zh) * | 2022-02-23 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 资源调度方法以及装置 |
CN116795557A (zh) * | 2022-03-15 | 2023-09-22 | 华为技术有限公司 | 通信方法、电子设备及可读存储介质 |
CN116795557B (zh) * | 2022-03-15 | 2024-07-23 | 华为技术有限公司 | 通信方法、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112596921A (zh) | 系统调用处理方法及处理装置 | |
US5553291A (en) | Virtual machine control method and virtual machine system | |
US6253224B1 (en) | Method and system for providing a hardware machine function in a protected virtual machine | |
JP5160176B2 (ja) | 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム | |
US6711605B2 (en) | Multi OS configuration method and computer system | |
US8635612B2 (en) | Systems and methods for hypervisor discovery and utilization | |
US7757231B2 (en) | System and method to deprivilege components of a virtual machine monitor | |
EP1080407B1 (en) | Computer system with an emulation coprocessor and method for executing an emulated application program | |
JP5015665B2 (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
US9304794B2 (en) | Virtual machine control method and virtual machine system using prefetch information | |
CN107479943B (zh) | 基于工业互联网操作系统的多操作系统运行方法及装置 | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
JPH1115793A (ja) | 資源の保全性を保護する方法 | |
CN113778612A (zh) | 基于微内核机制的嵌入式虚拟化系统实现方法 | |
US20090241112A1 (en) | Recording medium recording virtual machine control program and virtual machine system | |
CN113391881A (zh) | 中断的管理方法、装置、电子设备及计算机存储介质 | |
US20050251803A1 (en) | Method of performing kernel task upon initial execution of process at user level | |
US20050246708A1 (en) | Method of assigning virtual process identifier to process within process domain | |
US6148325A (en) | Method and system for protecting shared code and data in a multitasking operating system | |
WO2024208268A1 (zh) | 计算设备中访问tpm的方法和计算设备 | |
JPH02153434A (ja) | データ処理システム | |
US20140068734A1 (en) | Managing Access to a Shared Resource Using Client Access Credentials | |
US20200334070A1 (en) | Management of dynamic sharing of central processing units | |
KR0136111B1 (ko) | 데이터요소의 수정장치 및 그 방법 | |
US20080072009A1 (en) | Apparatus and method for handling interrupt disabled section and page pinning apparatus and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40049841 Country of ref document: HK |