CN113168353A - 具有共享的基本操作系统的相同类型子系统的并行执行 - Google Patents
具有共享的基本操作系统的相同类型子系统的并行执行 Download PDFInfo
- Publication number
- CN113168353A CN113168353A CN201980078819.0A CN201980078819A CN113168353A CN 113168353 A CN113168353 A CN 113168353A CN 201980078819 A CN201980078819 A CN 201980078819A CN 113168353 A CN113168353 A CN 113168353A
- Authority
- CN
- China
- Prior art keywords
- api
- api set
- host
- application
- contract
- 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
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 17
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/64—Retargetable
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
- G06F9/44542—Retargetable
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
一种用于执行并行相同类型子系统的方法包括将多个应用程序编程接口(API)集合模式存储到存储器中。API集合模式中的第一API集合模式将API集合合约解析为第一主机二进制件,API集合模式中的第二API集合模式将API集合合约解析为不同主机二进制件。该方法还包括:响应于在第一运行时间上下文内所接收的由API集合合约标识的API调用的接收,执行第一主机二进制件的元素;以及响应于在第二运行时上下文内的API调用的接收,执行第二主机二进制件的元素。
Description
背景技术
近年来,家庭中的移动电子设备的数目已经显著增加。用户拥有两个或更多个用于执行本地和/或基于云的应用的个人设备并不少见。移动电子行业的发展迫使了多种不同类型的操作系统的设计和市场化生产。一些操作系统被设计为具有较高的存储器要求,以支持存储器密集型应用(诸如针对游戏和图形设计的应用)的本地执行。其他操作系统被设计为具有较低存储器要求,以便集成到更便宜和功能更弱的电子产品中。在某些情况下,这些不同操作系统共享相同代码库并且紧密相关,诸如Windows桌面和Windows Mobile。
应用利用应用程序编程接口(API)与操作系统进行通信并且命令硬件元件执行处理操作以及绘制图形。应用被设计为使用的一组特定API调用可以与单个操作系统兼容。
当前,存在用于在同一设备上运行针对不同操作系统而设计的应用的有限数目的模式。最常见的解决模式是使用虚拟机,该虚拟机允许两个不同操作系统并行(side byside)执行。但是,同时运行两个完整的操作系统(包括其相应内核和两个不同系统的各种驱动)会占用大量存储器。
附图说明
图1示出了用于在同一基本操作系统上运行的相同类型子系统的并行执行的示例系统。
图2示出了用于在同一基本操作系统上运行的相同类型子系统的并行执行的另一示例系统的各方面。
图3示出了用于在同一基本操作系统上运行的不同的相同类型子系统的并行执行的另一示例系统。
图4示出了用于在共享基本操作系统上执行的相同类型子系统的并行执行的示例操作。
图5示出了适合于实现所公开的技术的各方面的处理设备的示例示意图。
发明内容
一种用于共同执行同一基本操作系统上的相同类型子系统的方法提供了将第一API集合模式(API set schema)和第二API集合模式加载到存储器中。第一API集合模式将API集合合约(API set contract)解析为第一主机二进制件(binary),并且第二API集合模式将API集合合约解析为不同的第二主机二进制件。该方法还提供了:响应于置于第一运行时上下文内的API集合合约内的所标识的API调用的接收而执行第一主机二进制件的元素,以及响应于置于第二运行时上下文内的API调用的接收而执行不同的第二主机二进制件的元素。
提供本“发明内容”以便以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。通过阅读以下详细说明,这些以及各种其他特征和优点将变得很清楚。
具体实施方式
当应用向操作系统(OS)发送命令以发起处理操作或绘制图形时,这些命令由高级子系统接收和处理,该高级子系统将命令转换为低级命令并且最终转换为硬件控制信号。可以构建高级子系统,以解释被称为API集合的特定一组函数调用并且将这些API函数调用解析(resolve)为对应二进制可执行件(executable)。
不同操作系统可以包括被构造为利用不同API集合的相同类型的不同子系统。如本文中使用的,“子系统”是指由操作系统提供的功能的子集(例如,图形、音频、无线LAN等)。当两个操作系统被设计为提供操作系统功能的相同子集(诸如图形绘制、音频制作等)时,它们被称为“相同类型”的子系统。例如,Windows 10是一种被设计用于台式机计算设备的Microsoft操作系统,而Windows Mobile是一种被设计用于在较低存储器设备(诸如电话和平板电脑)上运行的Microsoft操作系统。Windows 10包括第一图形子系统win32kfull.sys,Windows Mobile包括第二图形子系统win32kmin.sys。这些相同类型子系统中的每个在与其兼容应用和较低级操作系统组件进行通信时使用不同API集合。
API集合通常在操作系统级别处被全局定义。例如,电子设备中的第一图形子系统可以支持在合约“foo.dll”中定义的一组API。无论哪些应用从foo.dll合约调用API,设备的操作系统都会将该合约映射到同一主机二进制件,该主机二进制件在对“foo.dll”的应用调用被接收时由图形子系统执行。相同类型的不同子系统(诸如相同类型的图形子系统win32kmin.sys和win32kfull.sys)可以支持不同API集合,这些API集合具有旨在对应于不同主机二进制件的一些重复合约名称和/或重复函数名称。例如,较高存储器图形子系统(例如,win32kfull.sys)和较低存储器图形子系统(win32min.sys)可以分别定义名为“drawshape.dll”的、用于调用不同可执行件并且绘制不同类型的图形的函数。这说明了设计现代操作系统的挑战,该操作系统可以运行最初为与不同操作系统兼容而编写的各种应用。
所公开的技术允许在运行基本操作系统的单个实例的一个系统内同时执行为不同操作系统而设计的两个或更多个应用。例如,系统运行单个基本操作系统和相同类型子系统的并行版本,这些子系统利用不同API集合与兼容应用通信。如本文中使用的,术语“基本操作系统”是指至少一个操作系统内核和使得内核能够与硬件设备交互的内核模式设备驱动。
在同一基本操作系统之上执行多个相同类型子系统(例如,图形子系统)的能力通过减少在共同执行为不同操作系统而设计的应用时所消耗的存储器量来改进计算机系统。例如,这消除了需要使用虚拟机来执行完整的第二操作系统以及在主机上执行的主操作系统。
根据一种实现,前述内容部分地通过一种软件工具来实现,该软件工具评估API调用置于(place)其中的上下文。在一种实现中,在每个应用的基础上评估上下文(例如,上下文评估为由一个应用进行的每个调用返回相同值)。基于对API元素的调用的关联上下文,API元素被解释为属于多个预加载API集合模式之一。本质上,这允许相同API(函数)调用在第一上下文内被调用时被映射到第一主机二进制件,而在第二上下文内被调用时被映射到第二主机二进制件。
图1示出了用于在同一基本操作系统上运行的多个相同类型子系统的并行执行的第一示例系统100。系统100包括处理设备102和硬件126(诸如处理器、显示器等)和存储器108。存储器108存储操作系统116,操作系统116包括基本操作系统120和至少两个相同类型子系统(例如,子系统122、124),子系统在与所支持的子集的一个或多个应用110交互时利用不同API集合。尽管考虑了其他实现,但是在一种实现中,第一子系统122、124是与基本操作系统120通信以响应于由一个或多个应用110发起的API调用而绘制图形和/或执行计算操作的子系统。例如,第一子系统122可以利用第一API(例如,功能集)来发起针对应用110的第一子集的图形绘制操作,并且子系统124可以利用第二API来发起针对应用110的第二子集的图形绘制操作。
系统100允许用户(未示出)与最初被设计用于与两个不同操作系统兼容的应用110中的至少两个应用(应用A和应用B)交互。应用A是最初被设计用于与运行高存储器(high-memory)操作系统112的处理设备兼容并且在其上使用的应用。例如,高存储器操作系统112可以是为诸如Windows 10等台式计算机而设计的操作系统。高存储器操作系统112包括第一子系统122的实例,其也被包括在处理设备102的操作系统116内。
与应用A相比,应用B是最初被设计用于与运行低存储器(low-memory)操作系统114(与高存储器操作系统112的存储器需求相比)的处理设备兼容并且在其上使用的应用。例如,与执行高存储器操作系统112的台式计算机相比,低存储器操作系统114可以是被设计用于具有减少的存储器和/或处理能力的轻型移动电话或平板电脑的操作系统。低存储器操作系统114包括第二子系统124的实例,其也被包括在处理设备102的操作系统116内。
应用A是软件可执行件,其在运行时声明其消耗(consume)多个合约,包括例如第一API集合合约128。如本文中使用的,“API集合合约”是指与所声明的一组API函数相对应的API集合名称。在一种实现中,第一API集合合合约是在高存储器操作系统112中被全局定义并且由第一子系统122利用的第一API集合模式的一部分。术语“API集合模式(API setschema)”是指一种数据结构,其允许从API集合合约到托管API集合合约的实现的关联二进制件的映射在运行时被获取。
与应用A相比,应用B是一种软件可执行件,其在运行时将其声明为另一组合约,包括例如第二API集合合约130。在一种实现中,第二API集合合约是在低存储器操作系统114中被全局定义的第二API集合模式的一部分。
在所提供的特定示例中,第一API集合合约128和第二API集合合约130两者在系统内由相同的API集合名称(“foo.dll”)标识。尽管有这个通用API集合名称,但是第一API集合合约和第二API集合合约可以声明不同API集合。此外,由第一API集合合约和第二API集合合约声明的某些API可以具有相同的函数名称,即使这些函数被设计为对应于不同主机二进制件。
当第一子系统122和第二子系统124分别在为与应用A和应用B兼容而设计的不同基本操作系统上执行时,对于哪个主机二进制件对应于每个API集合合约没有任何歧义。高存储器操作系统112全局了解单个API集合模式,低存储器操作系统114全局了解不同的单个API集合模式。然而,当第一子系统122和第二子系统124在处理设备102内的同一基本操作系统120上运行时,如图1所示,存在两个不同主机二进制件,该主机二进制件被有效地映射到相同的API集合合约。运行时上下文评估器118实现逻辑,以将每个不同应用的API调用解析为两个不同的主机二进制件中的相关联的主机二进制件。
例如,在被编译时,应用A和应用B可以声明消耗API集合合约“foo.dll”。在针对任一应用的运行时,操作系统116采取措施以确定哪个主机二进制件将解析API集合合约(“foo.dll”)。为了解决这个问题,处理设备102包括运行时上下文评估器118,运行时上下文评估器118评估运行时环境的上下文以确定可用于将来自应用的API调用解析为相关联的主机二进制件的调用上下文标识符。
例如,API调用上下文标识符可以确定应用110中的哪个应用正在尝试解析API集合合约“foo.dll”和/或可以标识调用置于其中的对应用户登录会话。基于该调用上下文信息,运行时上下文评估器118选择被加载到基本操作系统120的存储器空间中的多个API集合模式之一。然后,该运行时上下文评估器118使用选定API集合模式来将所接收的API函数调用解析为对应主机二进制件。
在所示的示例中,图1的运行时上下文评估器118确定应用A是试图解析名为“foo.dll”的合约的应用,并且进一步确定应用A与由第一子系统122利用的第一API集合模式存储器关联。在这种情况下,操作系统116利用第一子系统122的第一API集合模式来将由应用放置的API调用解析为对应主机二进制件。
图2示出了支持在同一基本操作系统上的相同类型子系统的并行执行的另一示例系统200的各方面。系统200包括运行时上下文评估器202,运行时上下文评估器202在一种实现中与图1的运行时上下文评估器118相同或相似。
运行时上下文评估器202包括APIsetschema选择器204。在应用的运行时,运行时上下文评估器202接收将由应用声明的API集合合约解析为相关联的主机二进制件的指令。响应于该指令,运行时上下文评估器202评估一个或多个运行时因素以确定调用上下文标识符。APIsetschema选择器204使用所确定的调用上下文标识符将所指定的API集合合约解析为被加载到相关联的设备操作系统的存储器中的多个API集合模式之一。
如以上关于图1所解释的,每个API集合合约定义它显露(expose)的一组API。例如,下表1示出了由名为“api-ms-win-core-com-L1-1-0.dll”的API集合合约显露的示例性API的列表。
表1:
在编译时,应用可以声明一个或多个API集合合约,其中每个所声明的合约定义由应用调用的一组API。例如,下表2示出了应用“notepad.exe”声明由该应用调用的一组API以及显露每个API的API集合合约名称(“api-ms-win-core-com-l1-1-0.dll”)。
表2:
在引导时,系统200将第一API集合模式206和第二API集合模式208安装在设备操作系统内并且安装到内核地址空间中。被加载到存储器中的预加载的API集合模式中的每个都是可用于将多个API集合合约(例如,合约214、216、218)解析为相关联的主机二进制件(例如,主机二进制件220、222、224)的数据结构。在一种实现中,第一API集合模式206和第二API集合模式208各自被嵌入在便携式可执行件(PE)文件(例如,分别命名为apisetschema_1.dll和apisetschema_2.dll)中并且被加载到内核存储器空间中。
在图2的示例中,一些API集合合约名称是重复的,被包括在由第一API集合模式206提供的映射中以及也被包括在由第二API集合模式208提供的映射中。然而,这些不同API集合模式各自将这些重复的API集合名称映射为不同主机二进制件。例如,第一API集合模式206将API集合合约“api-ms-win-core-com-l1-1-0”映射到主机二进制件“%windire%\system32\combase.dll”,而第二API集合模式208将相同的API集合合约“api-ms-win-core-com-l1-1-0”映射到不同的主机二进制件“%windire%\system32\combase_2.dll”。
基于所确定的调用上下文标识符,APIsetschema选择器204选择多个预加载的API集合模式之一(例如,API集合模式206或API集合模式208),以在特定应用的运行时解析由应用声明的(多个)API集合模式。
图3示出了用于在同一基本操作系统上运行的不同相同类型子系统的并行执行的另一示例系统300。系统300包括执行具有用户模式322和内核模式324的操作系统308的计算机326。除其他软件组件(未示出)以外,用户模式322还包括统一图形子系统306,统一图形子系统306包括多个图形二进制件文件(例如,GraphicsBinary1、GraphicsBinary2、……、Graphics BinaryN)。在一种实现中,这些各种图形二进制件文件表示图形子系统可执行件,每个图形子系统可执行件被设计为在不同操作系统平台上提供图形支持。个体地,图形二进制件文件中的每个图形二进制件文件托管相关联的API集合合约的实现,该API集合合约可以由一个或多个兼容应用在编译时声明。
除了各种图形二进制件文件(例如,不同图形子系统的并行实现)以外,操作系统308还包括运行时上下文评估器302,运行时上下文评估器302包括APIsetschema选择器304。响应于每个所检测到的应用启动事件,运行时上下文评估器302基于一个或多个运行时因素328来确定调用上下文标识符,一个或多个运行时因素328描述相关联的应用在其中被启动的运行时上下文(例如,运行时环境)。
APIsetschema选择器304使用所标识的调用上下文标识符来选择多个预加载的API集合模式340、342之一,以将应用的API解析为相关联的主机二进制文件。
作为示例而非限制,图3将运行时因素328示出为包括会话ID和/或应用ID(例如,应用标识符)。在不同实现中,这些运行时因素328可以单独地、组合地或与其他运行时因素结合地用作调用上下文标识符,该调用上下文标识符用于选择多个预加载的API集合模式340、342中的哪个来将由应用声明的API集合合约解析为相关联的主机二进制文件。
在一种实现中,调用上下文标识符包括登录会话ID。在图3的示例中,操作系统308已经用会话标识符“会话0”和“会话1”初始化了两个示例性登录会话。登录会话可以理解为由代表单个用户的登录会话的所有过程和其他系统对象(例如,窗口、桌面和窗口站)组成。例如,会话0可以与第一用户帐户相关联,而会话1可以在第二用户帐户内相关联。在另一实现中,会话0是专门的会话,在该会话中,交互式服务的GUI组件(例如,窗口、对话框、弹出窗口等)以与会话1中显示的窗口中的桌面外壳图形和用户应用完全隔离的方式显示。
在一些实现中,会话ID标识相关联的应用在其中被启动的容器。例如,会话中的每个会话(会话0、会话1)可以在由操作系统308创建的不同容器中被引导。通常,术语“容器”是指在主机或虚拟机上运行的隔离的、资源控制的和可移植的运行时环境。在容器中运行的每个应用或过程与所有必需的依赖项和配置文件被打包在一起。在一种实现中,会话1和会话2在共享操作系统内核314的不同容器中运行,并且在不使用虚拟机的情况下并行执行。
在一种实现中,会话ID由操作系统在会话创建时分配给运行该会话的初始过程(例如,登录过程)。然后,初始过程的每个子过程和后代过程都将继承该会话ID。在调用上下文标识符包括会话ID的一种实现中,运行时上下文评估器302查询在启动序列期间负责启动应用A的父过程。根据该查询,运行时上下文评估器302确定正在会话1中启动应用A,并且将该会话ID提供给APIsetschema选择器304。APIsetschema选择器304确定会话1与在内核存储器空间中加载的多个API集合模式340、342中的第一API集合模式在存储器中关联。因此,APIsetschema选择器304选择第一API集合模式作为在解析应用A的新初始化实例的API时要使用的模式。
在又一实现中,运行时上下文评估器302基于每个应用来标识调用上下文标识符,诸如基于应用标识符(应用ID),应用标识符标识正在为其启动API解析请求的应用。例如,APIsetschema选择器304可以实现逻辑以在启动应用A时选择第一API集合模式并且在启动另一应用(例如,应用B)时选择第二API集合模式。在一种实现中,运行时上下文评估器302针对应用在运行时查询包含应用ID列表的数据库,其中每个应用ID与预先指定用于与每个应用ID相关联的API集合模式相关联。运行时上下文评估器302选择与当前被启动的应用的应用ID在数据库中预先关联的API集合模式。
在另一实现中,运行时上下文评估器302使用附接到正在被启动的应用的性质来选择API集合模式以用于解析由应用放置的API调用。例如,某些操作系统针对每个应用支持“功能”性质。在这种情况下,应用的能力可以确定运行时上下文评估器302如何选择API集合模式。
在其他情况下,调用上下文标识符基于多个运行时因素328,诸如彼此结合或与未在图3中示出的其他因素结合的会话ID和应用ID,包括但不限于诸如系统的当前负载或由应用请求的服务质量级别等因素。例如,API集合模式可以访问提供加速实现某些功能的硬件,并且API集合模式可以基于所请求的服务质量级别来选择。在一种实现中,APIsetschema选择器304可以引用表,该表标识当多个运行时因素共同满足相关联的定义的运行时条件时要选择的多个API集合模式中的选定API集合模式。例如,当在容器0或1中启动应用A时或在容器2中启动应用B时,一个示例性运行时条件可以提供对第一API集合模式340的选择。同时,另一示例性运行时条件可以提供:当在容器2中启动应用A或在容器0或1中启动应用B时,选择第二API集合模式342。
在图3中,用户执行触发在会话1内启动应用A的操作。在应用A被启动时,应用A向操作系统传输请求,以请求在编译时解析由应用声明的所指定的API集合合约。
在接收到解析所指定的API集合合约的请求时,操作系统采用运行时上下文评估器302确定如何解析由请求标识的API集合合约。运行时上下文评估器302评估一个或多个运行时因素328,并且基于该评估来确定调用上下文标识符。通常,调用上下文标识符是表征API调用的上下文的标识符,该API调用将由应用A在应用A的实例中进行,该实例由发起API集合合约解析请求的用户动作启动。APIsetschema选择器304确定多个预加载的API集合模式340、342中的哪个与所确定的调用上下文标识符在存储器中关联,并且选择该API集合模式以解析由应用放置的API调用。
操作系统308的二进制加载器(未示出)通过查找并且加载由运行时上下文评估器302选择的所选择的API集合模式来执行合约到主机二进制文件解析。在执行应用时,由应用放置的每个API函数调用由操作系统308解析为由所选择的API集合模式标识的主机二进制文件(例如,GraphicsBinary1、GraphicsBinary2、……、GraphicsBinaryN之一)。
除了上述以用户模式322执行的组件以外,操作系统308还包括以内核模式324执行的各种软件组件,以促进响应于由以用户模式322执行的(多个)应用放置的各种API函数调用而生成给命令设备硬件320的控制信号。内核模式324表示示例性基本操作系统,它为同一系统子系统的并行执行提供支持。
除了其他组件,内核模式324还包括操作系统内核314、图形子系统驱动312和各种其他驱动(例如,其他内核模式驱动316),诸如文件系统驱动和控制外围硬件(诸如显示器、键盘等)的驱动。
在一种实现中,图形子系统驱动312是内核模式设备驱动,其为统一图形子系统306提供内核模式支持。图形子系统驱动312是较低级图形管线的一部分,并且用作统一图形子系统306与设备硬件320之间的接口。例如,图形子系统驱动312可以控制窗口显示,管理屏幕输出;从外围配件(诸如键盘和鼠标)收集输入,并且将所收集的输入传递给用户模式应用。
值得注意的是,图形子系统驱动312可以利用与用户模式322下使用的API集合不同的用于与硬件抽象层318和设备硬件320通信的API集合。为此,该技术的一些实现可以提供一种机制,以用于在内核模式存储器空间中加载多个内核模式API集合模式,并且选择性地在内核模式API集合模式之间切换,以为在用户模式322中在应用层发起的处理动作提供内核模式扩展。例如,可以在应用运行时利用间接表(未示出)来动态地选择与由运行时上下文评估器302已经选择的用户模式API集合模式相对应的内核模式API集合模式中的任何一个。
此外,操作系统308还包括统一服务表310,该统一服务表310充当用户模式API(诸如由统一图形子系统306使用的API)与在内核模式324内使用的API之间的转换层。统一服务表310通过显露由跨所有所支持的API集合模式的API集合合约到主机映射的联合调用的内核模式服务的联合,来使得共享操作系统内核314能够服务于多个环境(例如,相同类型子系统)及其相关联的API集合模式。
例如,在图3中,GraphicsBinary1可以调用内核模式服务S1,而Graphics Binary2可以调用内核模式服务S2。由于内核模式由相同类型子系统共享,因此统一服务表310包括S1和S2两者。GraphicsBinary1或GraphicsBinary2(例如,两个相同类型的图形子系统)。
由于内核模式324和统一服务表310由统一图形子系统306内的所有子系统共享,因此任何应用均可以调用统一服务表310中的所有服务,而与所选择的API集合模式无关。这会造成潜在的安全漏洞,因为恶意应用可以手工调用通常通过应用的关联API集合模式无法访问的服务。例如,由运行时上下文评估器302分配给APIsetschema_1.dll的应用可以直接调用服务S2,服务S2通常只能通过被分配给APIsetschema_2.dll的应用来唯一地访问。
在一种实现中,操作系统308通过在每次统一服务表310被访问时再次执行运行时上下文评估器302的逻辑来缓解该潜在安全漏洞。例如,运行时上下文评估器302可以在应用启动序列期间评估运行时因素328中的一个或多个以确定启动应用被分配给APIsetschema_1.dll。当应用随后针对服务S1向统一服务表310放置调用时,运行时上下文评估器302可以再次实时地检查(多个)运行时因素328(例如,会话ID、应用ID)以确认哪个API集合模式被选择并且验证所选择的API集合模式是否支持所请求的服务S1。例如,该实时检查可以防止分配给使用APIsetschema_1.dll的应用调用服务S2,该服务S2被设计用于分配给使用不同的API集合模式的应用。
图4示出了用于在共享基本操作系统上执行的相同类型子系统的并行执行的示例操作400。加载操作405在引导序列期间将多个API集合模式加载到设备的易失性存储器中。API集合模式中的每个API集合模式将一个或多个API集合合约解析为托管合约的实现的相关联的二进制件。API集合合约中包括的每个API集合合约声明由合约导出的一组关联的API函数。
接收操作410接收将API集合合约中的所选择的API集合合约解析为相关联的主机二进制件的请求。评估操作415评估与该请求相关联的运行时参数以确定调用上下文标识符。选择操作420使用所确定的调用上下文标识符来选择多个API集合模式之一以用于将API集合合约解析为相关联的主机二进制件。例如,调用上下文标识符可以标识放置API集合合约解析请求的应用或针对请求应用正在其中执行的容器的会话ID。解析操作425根据由所选择的API集合模式定义的映射来将API集合合约解析为所选择的主机二进制件,并且执行操作430响应于从应用接收到API调用而执行所选择的主机二进制件的元素。
图5示出了适合于实现所公开的技术的各方面的处理设备500的示例示意图。处理设备500包括一个或多个处理器单元502、存储器504、显示器506和其他接口508(例如,按钮)。存储器504通常包括易失性存储器(例如,RAM)和非易失性存储器(例如,闪存)。操作系统510(诸如操作系统、Mobile操作系统或专为游戏设备而设计的特定操作系统)驻留在存储器504中,并且由(多个)处理器单元502执行,尽管应当理解,可以采用其他操作系统。
一个或多个应用512被加载到存储器504中,并且由(多个)处理器单元502在操作系统510上执行。应用512可以从各种输入本地设备(诸如麦克风534、输入附件535(例如,键盘、鼠标、手写笔、触摸板、游戏板、赛车轮、操纵杆))接收输入。此外,应用512可通过使用一个或多个通信收发器530和天线538通过有线或无线网络与这样的设备通信以提供网络连接性(例如,移动电话网络、 )来从一个或多个远程设备(诸如位于远程的智能设备)接收输入。处理设备500还可以包括各种其他组件,诸如定位系统(例如,全球定位卫星收发器)、一个或多个加速度计、一个或多个相机、音频接口(例如,麦克风534、音频放大器和扬声器和/或音频插孔)和存储装置528。也可以采用其他配置。
处理设备500还包括电源516,电源516由一个或多个电池或其他电源供电并且向处理设备500的其他组件提供电力。电源516也可以连接到外部电源(未示出),该外部电源替代内置电池或其他电源或为其充电。在示例实现中,任务调度推荐工具可以包括由存储在存储器504和/或存储装置528中并且由(多个)处理器单元502处理的指令所体现的硬件和/或软件。存储器504可以是主机设备或耦合到主机的附件的存储器。
处理设备500可以包括各种有形计算机可读存储介质和无形计算机可读通信信号。有形计算机可读存储可以由处理设备500可以访问的任何可用介质来体现,并且包括易失性和非易失性存储介质、可移动和不可移动存储介质。有形计算机可读存储介质不包括无形和暂态通信信号,并且包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动存储介质。有形计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CDROM、数字多功能磁盘(DVD)或其他光盘存储、磁带、磁带、磁盘存储或其他磁性存储设备、或者可以用于存储期望信息并且可以由处理设备500访问的任何其他有形介质。与有形计算机可读存储介质相反,无形计算机可读通信信号可以体现计算机可读指令、数据结构、程序模块或驻留在调制数据信号(诸如载波或其他信号传输机制)中的其他数据。术语“调制数据信号”是指具有以将信息编码在信号中的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,无形通信信号包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外和其他无线介质等无线介质。
一些实现可以包括一种制品。该制品可以包括用于存储逻辑的有形存储介质(存储器设备)。存储介质的示例可以包括能够存储电子数据的一种或多种类型的处理器可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。逻辑的示例可以包括各种软件元素,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、操作段、方法、过程、软件接口、应用程序编程接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或其任何组合。在一种实现中,例如,制品可以存储可执行计算机程序指令,该可执行计算机程序指令在由计算机执行时引起计算机执行根据所描述的实现的方法和/或操作。可执行计算机程序指令可以包括任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。可执行计算机程序指令可以根据预定义的计算机语言、方式或语法来实现,以指示计算机执行特定操作段。指令可以使用任何合适的高级、低级、面向对象、可视、编译和/或解释的编程语言来实现。
本文中公开的一种示例方法包括:将第一应用程序编程接口(API)集模式加载到存储器中,第一API集合模式将API集合合约解析为第一主机二进制件;将第二API集合模式加载到存储器中,第二API集合模式将API集合合约解析为不同的第二主机二进制件;响应于第一运行时上下文内的所接收的API调用的接收,执行第一主机二进制文件的元素,API调用由API集合合约标识;以及响应于第二运行时上下文内的API调用的接收,执行不同的第二主机二进制文件的元素。
根据任何前述方法的另一示例方法还包括:接收将API集合合约解析为相关联的主机二进制件文件的请求,API集合合约定义由应用调用的一组API;评估请求的运行时上下文以确定与请求相关联的调用上下文标识符;以及基于调用上下文标识符来选择第一API集合模式和第二API集合模式中的一项以解析请求。
在任何前述方法的又一示例方法中,调用上下文标识符包括针对应用在其中被加载的容器的会话标识符。
在任何前述方法的又一示例方法中,调用上下文标识符包括应用标识符,应用标识符针对发起将API集合合约解析为相关联的主机二进制件文件的请求的应用。
在任何前述方法的又一示例方法中,第一主机二进制件和不同的第二主机二进制件是共享计算设备中的基本操作系统的相同类型子系统的可执行件。
在任何前述方法的又一示例方法中,第一主机二进制件和不同的第二主机二进制件是图形子系统。
在任何前述方法的又一示例方法中,基本操作系统包括用于在图形管线中的内核侧元素与每个相同类型子系统之间进行接口连接的统一服务表。
本文中公开的一种示例系统包括存储器,该存储器存储第一应用程序编程接口(API)集模式和第二API集合模式,第一API集合模式将API集合合约解析为第一主机二进制件,第二API集合模式将API集合合约解析为不同的第二主机二进制件。该系统还包括操作系统,该操作系统使用第一API集合模式来解析置于第一运行时上下文内的API调用并且使用第二API集合模式来解析置于第二运行时上下文内的API调用,API调用由API集合合约标识。
在任何前述系统的另一示例系统中,操作系统包括运行时上下文评估器,运行时上下文评估器存储在存储器中并且可执行以:接收将API集合合约解析为相关联的主机二进制件文件的请求;评估请求的运行时上下文以确定与请求相关联的调用上下文标识符;以及基于调用上下文标识符来选择第一API集合模式和第二API集合模式中的一项以解析请求。
在任何前述系统的又一示例系统中,调用上下文标识符包括针对容器的会话标识符,相关联的应用在容器中发起将API集合合约解析为相关联的主机二进制件文件的请求。
在任何先前系统的又一示例系统中,调用上下文标识符包括针对应用的应用标识符,该应用发起将API集合合约解析为相关联的主机二进制件文件的请求。
在任何先前系统的又一示例系统中,第一主机二进制件和不同的第二主机二进制件是共享计算设备中的基本操作系统的相同类型子系统的可执行件。
在任何先前系统的又一示例系统中,第一主机二进制件和不同的第二主机二进制件是图形子系统。
在任何先前系统的又一示例系统中,基本操作系统包括用于在图形管线中的内核侧元素与相同类型子系统中的每个相同类型子系统之间进行接口连接的统一服务表。
本文中公开的一种示例存储器设备编码有用于执行计算机过程的处理器可执行指令,该计算机过程包括:将第一应用程序编程接口(API)集模式加载到存储器中,第一API集合模式将API集合合约解析为第一主机二进制件;将第二API集合模式加载到存储器中,第二API集合模式将API集合合约解析为不同的第二主机二进制件;响应于置于第一运行时上下文内的API调用的接收,执行第一主机二进制件的元素,API调用由API集合合约标识;以及响应于置于第二运行时上下文内的API调用的接收,执行不同的第二主机二进制件的元素。
在任何先前的存储器设备的另一示例存储器设备上,该计算机过程还包括:接收将API集合合约解析为相关联的主机二进制件文件的请求,API集合合约定义由应用调用的一组API;评估请求的运行时上下文以确定与请求相关联的调用上下文标识符;以及基于调用上下文标识符来选择第一API集合模式和第二API集合模式中的一项以解析请求。
在任何先前存储器设备的又一示例存储器设备中,调用上下文标识符包括针对应用在其中被加载的容器的会话标识符。
在任何先前存储器设备的又一示例存储器设备中,调用上下文标识符包括针对用于发起将API集合合约解析为相关联的主机二进制件文件的请求的应用的应用标识符。
在任何先前的存储器设备的又一示例存储器设备中,第一主机二进制件和不同的第二主机二进制件是共享计算设备中的基本操作系统的相同类型子系统的可执行件。
在任何先前的存储器设备的又一示例存储器设备中,第一主机二进制件和不同的第二主机二进制件是图形子系统。
本文中描述的实现被实现为一个或多个计算机系统中的逻辑步骤。逻辑操作可以被实现为(1)在一个或多个计算机系统中执行的一系列处理器实现的步骤,以及(2)一个或多个计算机系统中的互连的机器或电路模块。实现是选择问题,具体取决于所使用的计算机系统的性能要求。因此,构成本文中描述的实现的逻辑操作被不同地称为操作、步骤、对象或模块。此外,应当理解,逻辑操作可以任何顺序执行,除非另外明确声明,或者权利要求语言固有地需要特定顺序。上面的说明书、示例和数据以及所附的附录一起提供示例性实现的结构和使用的完整描述。
Claims (15)
1.一种方法,包括:
将第一应用编程接口(API)集合模式加载到存储器中,所述第一API集合模式将API集合合约解析为第一主机二进制件;
将第二API集合模式加载到存储器中,所述第二API集合模式将所述API集合合约解析为不同的第二主机二进制件;
响应于在第一运行时上下文内所接收的API调用的接收,执行所述第一主机二进制件的元素,所述API调用由所述API集合合约标识;以及
响应于在第二运行时上下文内的所述API调用的接收,执行所述不同的第二主机二进制件的元素。
2.根据权利要求1所述的方法,还包括:
接收将所述API集合合约解析为相关联的主机二进制件文件的请求,所述API集合合约定义由应用调用的一组API;
评估所述请求的运行时上下文以确定与所述请求相关联的调用上下文标识符;以及
基于所述调用上下文标识符来选择所述第一API集合模式和所述第二API集合模式中的一项来解析所述请求。
3.根据权利要求2所述的方法,其中所述调用上下文标识符包括针对容器的会话标识符,所述应用被加载在所述容器中。
4.根据权利要求2所述的方法,其中所述调用上下文标识符包括针对所述应用的应用标识符,所述应用发起将所述API集合合约解析为所述相关联的主机二进制件文件的所述请求。
5.根据权利要求1所述的方法,其中所述第一主机二进制件和所述不同的第二主机二进制件是共享计算设备中的基本操作系统的相同类型子系统的可执行件。
6.根据权利要求1所述的方法,其中所述第一主机二进制件和所述不同的第二主机二进制件是图形子系统。
7.根据权利要求5所述的方法,其中所述基本操作系统包括统一服务表,所述统一服务表用于在图形管线中的内核侧元素与所述相同类型子系统中的每个子系统之间进行接口连接。
8.一种系统,包括:
存储器,存储第一应用编程接口(API)集模式和第二API集合模式,所述第一API集合模式将API集合合约解析为第一主机二进制件,所述第二API集合模式将所述API集合合约解析为不同的第二主机二进制件;以及
操作系统,使用所述第一API集合模式来解析置于第一运行时上下文内的API调用并且使用所述第二API集合模式来解析置于第二运行时上下文内的API调用,所述API调用由所述API集合合约标识。
9.根据权利要求8所述的系统,其中所述操作系统包括运行时上下文评估器,所述运行时上下文评估器被存储在存储器中并且可执行以:
接收将所述API集合合约解析为相关联的主机二进制件文件的请求;
评估所述请求的运行时上下文以确定与所述请求相关联的调用上下文标识符;以及
基于所述调用上下文标识符来选择所述第一API集合模式和所述第二API集合模式中的一项来解析所述请求。
10.根据权利要求9所述的系统,其中所述调用上下文标识符包括针对容器的会话标识符,在所述容器中,相关联的应用发起将所述API集合合约解析为所述相关联的主机二进制件文件的所述请求。
11.根据权利要求9所述的系统,其中所述调用上下文标识符包括针对应用的应用标识符,所述应用发起将所述API集合合约解析为所述相关联的主机二进制件文件的所述请求。
12.根据权利要求8所述的系统,其中所述第一主机二进制件和所述不同的第二主机二进制件是共享计算设备中的基本操作系统的相同类型子系统的可执行件。
13.根据权利要求8所述的系统,其中所述第一主机二进制件和所述不同的第二主机二进制件是图形子系统。
14.根据权利要求12所述的系统,其中所述基本操作系统包括统一服务表,所述统一服务表用于在图形管线中的内核侧元素与所述相同类型子系统中的每个子系统之间进行接口连接。
15.一种或多种存储器设备,编码有用于执行计算机过程的处理器可执行指令,所述计算机过程包括:
将第一应用编程接口(API)集模式加载到存储器中,所述第一API集合模式将API集合合约解析为第一主机二进制件;
将第二API集合模式加载到存储器中,所述第二API集合模式将所述API集合合约解析为不同的第二主机二进制件;
响应于置于第一运行时上下文内的API调用的接收,执行所述第一主机二进制件的元素,所述API调用由所述API集合合约标识;以及
响应于置于第二运行时上下文内的API调用的接收,执行所述不同的第二主机二进制件的元素。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/206,368 | 2018-11-30 | ||
US16/206,368 US10977095B2 (en) | 2018-11-30 | 2018-11-30 | Side-by-side execution of same-type subsystems having a shared base operating system |
PCT/US2019/062898 WO2020112578A1 (en) | 2018-11-30 | 2019-11-24 | Side-by-side execution of same-type subsystems having a shared base operating system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113168353A true CN113168353A (zh) | 2021-07-23 |
Family
ID=68841256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980078819.0A Pending CN113168353A (zh) | 2018-11-30 | 2019-11-24 | 具有共享的基本操作系统的相同类型子系统的并行执行 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10977095B2 (zh) |
EP (1) | EP3887954A1 (zh) |
CN (1) | CN113168353A (zh) |
WO (1) | WO2020112578A1 (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253257B1 (en) * | 1997-07-31 | 2001-06-26 | Bea Systems, Inc. | Software Interface for dynamic API mapping |
US20060282840A1 (en) * | 2005-05-25 | 2006-12-14 | Stone Peter S | Dynamic mapping of shared libraries |
CN101470621A (zh) * | 2007-12-28 | 2009-07-01 | 埃森哲环球服务有限公司 | 虚拟机配置系统 |
CN101901207A (zh) * | 2010-07-23 | 2010-12-01 | 中国科学院计算技术研究所 | 异构共享存储多处理机系统的操作系统及其工作方法 |
US20140366045A1 (en) * | 2013-06-07 | 2014-12-11 | Microsoft Corporation | Dynamic management of composable api sets |
US20160328817A1 (en) * | 2014-11-21 | 2016-11-10 | Intel Corporation | Apparatus and method for efficient graphics processing in a virtual execution environment |
CN106133688A (zh) * | 2014-03-28 | 2016-11-16 | 亚马逊技术有限公司 | 协调容器布置和执行的服务的实施 |
US20180121261A1 (en) * | 2016-10-31 | 2018-05-03 | Intuit Inc. | Processing application programming interface (api) queries based on variable schemas |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763458B1 (en) | 1999-09-27 | 2004-07-13 | Captaris, Inc. | System and method for installing and servicing an operating system in a computer or information appliance |
US6452600B1 (en) * | 1999-10-28 | 2002-09-17 | Nintendo Co., Ltd. | Graphics system interface |
US7818443B2 (en) | 2000-12-01 | 2010-10-19 | O2Micro International Ltd. | Low power digital audio decoding/playing system for computing devices |
US7272832B2 (en) * | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
US8549114B2 (en) * | 2002-06-12 | 2013-10-01 | Bladelogic, Inc. | Method and system for model-based heterogeneous server configuration management |
DE10348113A1 (de) | 2003-10-16 | 2005-05-19 | Kuka Roboter Gmbh | Verfahren und Einrichtung zum Betreiben eines Sekundärbetriebssystems neben einem Primärbetriebssystem |
US20070180509A1 (en) | 2005-12-07 | 2007-08-02 | Swartz Alon R | Practical platform for high risk applications |
US8281169B2 (en) | 2008-08-27 | 2012-10-02 | Wireless Silicon Group, Inc. | Method and system for power management for a handheld mobile electronic device executing-in-place an application kernel from execute-in-place non-volatile memory (XIP NVM) |
US8239667B2 (en) | 2008-11-13 | 2012-08-07 | Intel Corporation | Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory |
US8171280B2 (en) | 2009-06-22 | 2012-05-01 | Matthew Laue | Method of running multiple operating systems on an X86-based computer system having a dedicated memory region configured as a do not use region |
US9389877B2 (en) | 2009-07-20 | 2016-07-12 | Google Technology Holdings LLC | Multi-environment operating system |
WO2012079153A1 (en) | 2010-12-15 | 2012-06-21 | Userful Corporation | Multiple user computing method and system for same |
CN102567103B (zh) | 2010-12-27 | 2015-03-25 | 联想(北京)有限公司 | 一种终端及切换方法 |
US8763018B2 (en) * | 2011-08-22 | 2014-06-24 | Solarflare Communications, Inc. | Modifying application behaviour |
US20130297924A1 (en) | 2012-04-03 | 2013-11-07 | Insyde Software | Method of running multiple operating systems on an x86-based computer |
US8615766B2 (en) | 2012-05-01 | 2013-12-24 | Concurix Corporation | Hybrid operating system |
US10438169B2 (en) * | 2013-03-14 | 2019-10-08 | Google Llc | Systems and methods for providing binary data files for real-time collaboration |
US9380054B2 (en) * | 2014-04-18 | 2016-06-28 | Cellco Partnership | Application signing |
US9569195B2 (en) | 2014-05-13 | 2017-02-14 | Zscaler, Inc. | Systems and methods for live operating system upgrades of inline cloud servers |
US10834054B2 (en) * | 2015-05-27 | 2020-11-10 | Ping Identity Corporation | Systems and methods for API routing and security |
US10069629B2 (en) * | 2015-06-17 | 2018-09-04 | Airwatch Llc | Controlled access to data in a sandboxed environment |
CN105100074A (zh) * | 2015-07-01 | 2015-11-25 | 小米科技有限责任公司 | 数据操作处理方法、装置以及终端设备 |
JP6643832B2 (ja) * | 2015-08-31 | 2020-02-12 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
US9898354B2 (en) | 2016-03-21 | 2018-02-20 | Microsoft Technology Licensing, Llc | Operating system layering |
US10120734B1 (en) * | 2016-08-29 | 2018-11-06 | Equinix, Inc. | Application programming interface and services engine with application-level multi-tenancy |
US10791197B2 (en) * | 2017-01-20 | 2020-09-29 | Apple Inc. | Managing access to media accounts |
US9817675B1 (en) | 2017-01-31 | 2017-11-14 | Hytrust, Inc. | Methods and systems for attaching an encrypted data partition during the startup of an operating system |
US11620034B2 (en) * | 2020-10-07 | 2023-04-04 | Microsoft Technology Licensing, Llc | Systems and methods for providing tab previews via an operating system user interface |
-
2018
- 2018-11-30 US US16/206,368 patent/US10977095B2/en active Active
-
2019
- 2019-11-24 EP EP19817914.5A patent/EP3887954A1/en active Pending
- 2019-11-24 CN CN201980078819.0A patent/CN113168353A/zh active Pending
- 2019-11-24 WO PCT/US2019/062898 patent/WO2020112578A1/en unknown
-
2021
- 2021-02-25 US US17/185,689 patent/US11748175B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253257B1 (en) * | 1997-07-31 | 2001-06-26 | Bea Systems, Inc. | Software Interface for dynamic API mapping |
US20060282840A1 (en) * | 2005-05-25 | 2006-12-14 | Stone Peter S | Dynamic mapping of shared libraries |
CN101470621A (zh) * | 2007-12-28 | 2009-07-01 | 埃森哲环球服务有限公司 | 虚拟机配置系统 |
CN101901207A (zh) * | 2010-07-23 | 2010-12-01 | 中国科学院计算技术研究所 | 异构共享存储多处理机系统的操作系统及其工作方法 |
US20140366045A1 (en) * | 2013-06-07 | 2014-12-11 | Microsoft Corporation | Dynamic management of composable api sets |
CN106133688A (zh) * | 2014-03-28 | 2016-11-16 | 亚马逊技术有限公司 | 协调容器布置和执行的服务的实施 |
US20160328817A1 (en) * | 2014-11-21 | 2016-11-10 | Intel Corporation | Apparatus and method for efficient graphics processing in a virtual execution environment |
US20180121261A1 (en) * | 2016-10-31 | 2018-05-03 | Intuit Inc. | Processing application programming interface (api) queries based on variable schemas |
Also Published As
Publication number | Publication date |
---|---|
EP3887954A1 (en) | 2021-10-06 |
US11748175B2 (en) | 2023-09-05 |
US20210182125A1 (en) | 2021-06-17 |
US20200174850A1 (en) | 2020-06-04 |
US10977095B2 (en) | 2021-04-13 |
WO2020112578A1 (en) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795660B1 (en) | Live code updates | |
US8555280B2 (en) | Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform | |
EP3128421B1 (en) | Method, device, and system for achieving java application installation by cloud compilation | |
US9639329B2 (en) | System and method for automatic invocation of constructor code for superclasses | |
US10089119B2 (en) | API namespace virtualization | |
US8739147B2 (en) | Class isolation to minimize memory usage in a device | |
US9678767B2 (en) | Unified extensible firmware interface (UEFI) driver and protocol | |
US20140297999A1 (en) | Computer system and method for controlling acpi information | |
US8103740B1 (en) | Cross-domain linking of data types | |
CN111223036B (zh) | 一种gpu虚拟化共享方法、装置及电子设备和存储介质 | |
US20200159536A1 (en) | Unicontainers | |
US9183011B2 (en) | Method and system for runtime environment emulation | |
CN108845800B (zh) | 一种组件扩展功能的实现方法、装置、设备及存储介质 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN109408256B (zh) | 应用调用方法和装置 | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
CN106775608B (zh) | 独立系统进程的实现方法和装置 | |
US8250589B2 (en) | Method for simplifying interfaces having dynamic libraries | |
US11748175B2 (en) | Side-by-side execution of same-type subsystems having a shared base operating system | |
US8745605B2 (en) | Execution contexts with polymorphic type implementations | |
CN110427224B (zh) | 一种ejb模块加载方法、装置、服务器及可读存储介质 | |
US8572561B1 (en) | Multiple java ME MIDlet execution in single-instance CLDC JVM | |
US9110793B2 (en) | Inner process | |
CN117519668A (zh) | 数据分发方法、装置、电子设备及存储介质 | |
CN114356604A (zh) | 合约调用方法、装置、电子设备和存储介质 |
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 |