CN111124664B - 第一操作系统访问第二操作系统资源的方法和装置 - Google Patents
第一操作系统访问第二操作系统资源的方法和装置 Download PDFInfo
- Publication number
- CN111124664B CN111124664B CN201911156149.8A CN201911156149A CN111124664B CN 111124664 B CN111124664 B CN 111124664B CN 201911156149 A CN201911156149 A CN 201911156149A CN 111124664 B CN111124664 B CN 111124664B
- Authority
- CN
- China
- Prior art keywords
- operating system
- kernel
- page table
- address space
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 148
- 230000015654 memory Effects 0.000 claims abstract description 120
- 238000012545 processing Methods 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 39
- 238000004891 communication Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 230000005856 abnormality Effects 0.000 claims description 11
- 238000013519 translation Methods 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 230000035897 transcription Effects 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 22
- 238000005259 measurement Methods 0.000 description 16
- 208000008469 Peptic Ulcer Diseases 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 238000002955 isolation Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/46—Indexing scheme relating to G06F9/46
- G06F2209/463—Naming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种第一操作系统访问第二操作系统资源的方法和装置。该第一操作系统访问第二操作系统资源的方法包括:第一操作系统初始化时,将存储内核页表和用户页表的内存配置到低位地址空间,预留出高位地址空间,并且从第二操作系统获取该第二操作系统的内核页表的寄存器配置信息,基于该第二操作系统的内核页表的寄存器配置信息配置第一操作系统的高位地址空间的寄存器,从而启用高位地址空间直接访问第二操作系统的内核资源。本申请提供的技术方案能够提高第一操作系统直接访问第二操作系统资源的性能。
Description
技术领域
本申请涉及计算机技术领域,并且更具体地,涉及一种第一操作系统访问第二操作系统资源的方法和装置。
背景技术
随着计算机技术的不断发展,电子设备安全问题越来越受到关注。电子设备上的一般运行环境(rich execution environment,REE)技术已经无法满足安全要求,为了提高安全性,提出可信执行环境(trusted execution environment,TEE)的概念,确保敏感数据在安全可信的隔离操作系统中处理,不被其它恶意第三方软件应用所篡改。TEE操作系统(operating system,OS)是与电子设备上的REE OS并存的运行环境,给REE OS提供可靠安全服务,具有自身的执行空间,比REE OS的安全级别更高,且TEE OS所能访问的软硬件资源与REE OS是分离的,是一个隔离操作系统。TEE OS需要访问对端REE OS资源时,受限于两个操作系统中不同的页表(page table),TEE OS无法直接访问到REE OS资源,从而导致部署在TEE OS中的动态度量模块为REE OS提供完整性保护的性能较差。因此,如何提高第一操作系统访问第二操作系统资源的性能,成为亟待解决的问题。
发明内容
本申请提供一种第一操作系统访问第二操作系统资源的方法和装置,通过预留第一操作系统中的高位地址空间,并且第一操作系统复用第二操作系统的内核页表的寄存器配置,使得第一操作系统能够通过启用高位地址空间直接访问第二操作系统的内核空间的资源,提高第一操作系统访问第二操作系统资源的性能。
第一方面,提供了一种第一操作系统访问第二操作系统资源的方法,可以由第一操作系统执行,也可以由第一操作系统中的芯片或者电路执行,为了便于描述下文中以第一操作系统执行该方法为例进行说明。
该第一操作系统访问第二操作系统资源的方法包括:在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间,为所述第二操作系统预留第二地址空间,其中,所述第一操作系统的内存虚拟地址空间包括所述第一地址空间和所述第二地址空间;所述第一操作系统获取所述第二操作系统的内核页表的寄存器配置信息;所述第一操作系统根据所述第二操作系统的内核页表的寄存器配置信息配置所述第一操作系统的第二寄存器,所述第二寄存器对应所述第一操作系统的所述第二地址空间;所述第一操作系统使用所述第二地址空间访问所述第二操作系统的内核空间的资源。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统通过预留第一操作系统中的高位地址空间以及基于第二操作系统的内核页表的寄存器配置信息配置第一操作系统高位地址空间对应的第二寄存器,使得第一操作系统启用预留的高位地址空间时能够直接访问第二操作系统的内核空间的资源,从而提高了第一操作系统访问第二操作系统资源的性能。
结合第一方面,在第一方面的某些实现方式中,所述第一地址空间为高位地址空间;所述第二地址空间为低位地址空间,所述第一操作系统的高位地址空间与所述第二操作系统的内核地址空间范围一致。
应理解,上述的“第一地址空间”和“第二地址空间”分别指代第一操作系统中的低位地址空间和高位地址空间,为了避免描述上的限定,描述为“第一地址空间”和“第二地址空间”,对本申请的保护范围不构成限定。
另外,为了第一操作系统启用预留的高位地址空间时能够直接访问第二操作系统的内核空间的资源,上述的第一操作系统的高位地址空间与第二操作系统的内核地址空间范围一致。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一操作系统接收所述第二操作系统发送的内核符号表信息;所述第一操作系统解析所述内核符号表信息,得到的所述第二操作系统高位地址空间转换关系,获取用户进程的用户页表基地址信息,利用所述转换关系逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。
进一步地,上述的第一操作系统可以获取第二操作系统的内核符号表信息,从而得到的上述第二操作系统高位地址空间转换关系和用户进程的用户页表基地址信息,在已知转换关系的前提下,可以逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。
结合第一方面,在第一方面的某些实现方式中,在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间包括:该第一操作系统将该第一操作系统中的内核页表和用户页表存储在第一地址空间的页表内存中;该第一操作系统将该第一地址空间的页表内存配置到该第一操作系统的第一寄存器。
提供一种预留高位地址空间的方式:将内核页表和用户页表均存储在低位地址空间的页表内存中。
结合第一方面,在第一方面的某些实现方式中,为所述第二操作系统预留第二地址空间包括:该第一操作系统基于第二操作系统的高位地址空间预留第二地址空间。
具体地,第一操作系统在预留高位地址空间的时候,参考了第二操作系统中高位地址空间的范围,从而使得第一操作系统能够成功基于第二操作系统的内核页表的寄存器配置信息配置第一操作系统高位地址空间对应的第二寄存器。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:该第一操作系统接收该第二操作系统发送的请求消息,该请求消息中携带内核符号表信息和该第二操作系统的内核页表的寄存器配置信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一惭怍系统获取到上述的内核符号表信息和第二操作系统的内核页表的寄存器配置信息可以是接收到的第二操作系统发送的请求消息中携带有内核符号表信息和第二操作系统的内核页表的寄存器配置信息。
结合第一方面,在第一方面的某些实现方式中,该第一操作系统中部署客户端应用程序CA;该第一操作系统为所述第二操作系统预留第二地址空间包括:该CA初始化过程中,基于该第二操作系统的寄存器配置信息修改该第一操作系统的内核页表的寄存器的配置,使得该第一操作系统的第二寄存器的配置与该第二操作系统的高位寄存器配置相同。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统中部署了客户端应用程序(client application,CA),通过初始化该CA,基于接收到的第二操作系统的寄存器配置信息修改第一操作系统的寄存器的配置,使得该第一操作系统的第二寄存器的配置与该第二操作系统的高位寄存器配置相同,为第一操作系统如何复用第二操作系统的寄存器配置提供可行的方案。
结合第一方面,在第一方面的某些实现方式中,将该第一操作系统中的内核页表和用户页表存储在所述第一地址空间的页表内存中之前,该方法还包括:该第一操作系统在该内核页表上增加用户不可访问权限控制;该第一操作系统在该用户页表上增加不可执行特权PXN防护。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统中的内核页表和用户页表存储在同一个页表内存,为了满足内核页表和用户页表的安全需求,为内核页表上增加用户不可访问权限控制、为用户页表上增加不可执行特权PXN防护,使得内核页表和用户页表之间安全独立。
结合第一方面,在第一方面的某些实现方式中,该第二操作系统的内核页表的寄存器配置信息包括:地址翻译控制器配置信息、内存属性控制器配置信息和内核空间页表基地址寄存器配置信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统接收到的第二操作系统的寄存器配置信息包括多种配置信息,为第一操作系统复用第二操作系统的寄存器配置提供更加全面的选择。
结合第一方面,在第一方面的某些实现方式中,该第一操作系统中部署有动态度量模块,所述动态度量模块用于为所述第二操作系统提供安全服务。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统中可以包括动态度量模块,为第二操作系统提供安全防护。
结合第一方面,在第一方面的某些实现方式中,当该第一操作系统访问该第二操作系统的内核空间的资源异常时,该第一操作系统将该异常相关信息发送给该第二操作系统。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,跨系统访问资源出现异常的情况下,第一操作系统可以将该异常情况的相关信息通知给被访问的第二操作系统,使得第二操作系统能够获知到发生访问异常。
结合第一方面,在第一方面的某些实现方式中,该第一操作系统中部署有远端程序调录RPC服务;该第一操作系统将该异常相关信息发送给该第二操作系统包括:该RPC服务将该异常相关信息发送给该第二操作系统。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第一操作系统中可以部署有远端程序调录RPC服务,当发生访问异常的情况下,第一操作系统通过RPC服务向第二操作系统通知异常情况信息。
第二方面,提供了一种第一操作系统访问第二操作系统资源的方法,可以由第二操作系统执行,也可以由第二操作系统中的芯片或者电路执行,为了便于描述下文中以第二操作系统执行该方法为例进行说明。
该第一操作系统访问第二操作系统资源的方法包括:该第二操作系统获取该第二操作系统的内核页表的寄存器配置信息;该第二操作系统向该第一操作系统发送所述第二操作系统的内核页表的寄存器配置信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,跨系统访问资源场景下的被访问资源的第二操作系统中能够获取第二操作系统的内核页表的寄存器配置信息,并将该第二操作系统的内核页表的寄存器配置信息发送给第一操作系统,使得第一操作系统能够复用第二操作系统的内核页表的寄存器配置,提高系统间资源访问的性能。
结合第二方面,在第二方面的某些实现方式中,所述方法还包括:所述第二操作系统获取所述第二操作系统的内核符号表信息;所述第二操作系统向所述第一操作系统发送所述内核符号表信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,跨系统访问资源场景下的被访问资源的第二操作系统中能够获取第二操作系统的内核符号表信息,并将该内核符号表信息发送给第一操作系统,使得第一操作系统能够逐级访问第二操作系统的用户页表,提高系统间资源访问的性能。
结合第二方面,在第二方面的某些实现方式中,该第二操作系统中部署内核驱动模块;该第二操作系统获取内核符号表信息和/或该第二操作系统的内核页表的寄存器配置信息:该内核驱动模块获取该内核符号表信息和/或该第二操作系统的内核页表的寄存器配置信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第二操作系统中能够获取自身的内核符号表信息和该第二操作系统的寄存器配置信息可以是在第二操作系统中部署内核驱动模块,通过该内核驱动模块获取该内核符号表信息和该第二操作系统的寄存器配置信息。
结合第二方面,在第二方面的某些实现方式中,该第二操作系统的内核页表的寄存器配置信息包括:地址翻译控制器配置信息、内存属性控制器配置信息和内核空间页表基地址寄存器配置信息。
本申请实施例提供的第一操作系统访问第二操作系统资源的方法,第二操作系统的寄存器配置信息包括多种配置信息,为第一操作系统复用第二操作系统的寄存器配置提供更加全面的选择。
第三方面,提供一种第一操作系统访问第二操作系统资源的装置,所述第一操作系统访问第二操作系统资源的装置包括处理器,用于实现上述第一方面描述的方法中第一操作系统的功能。
可选地,所述第一操作系统访问第二操作系统资源的装置还可以包括存储器,所述存储器与所述处理器耦合,所述处理器用于实现上述第一方面描述的方法中第一操作系统的功能。在一种可能的实现中,所述存储器用于存储程序指令和数据。所述存储器与所述处理器耦合,所述处理器可以调用并执行所述存储器中存储的程序指令,用于实现上述第一方面描述的方法中第一操作系统的功能。
可选地,所述第一操作系统访问第二操作系统资源的装置还可以包括通信接口,所述通信接口用于所述第一操作系统访问第二操作系统资源的装置与其它设备进行通信。当该第一操作系统访问第二操作系统资源的装置为第一操作系统时,所述通信接口为收发器、输入/输出接口、或电路等。
在一种可能的设计中,所述第一操作系统访问第二操作系统资源的装置包括:处理器和通信接口,
所述处理器用于运行计算机程序,以是的所述第一操作系统访问第二操作系统资源的装置实现上述第一方面描述的任一种方法;
所述处理器利用所述通信接口与外部通信。
可以理解,所述外部可以是处理器以外的对象,或者是所述装置以外的对象。
在另一种可能的设计中,该第一操作系统访问第二操作系统资源的装置为芯片或芯片系统所述通信接口可以是该芯片或芯片系统上输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。所述处理器也可以体现为处理电路或逻辑电路。
第四方面,提供一种第一操作系统访问第二操作系统资源的装置,所述第一操作系统访问第二操作系统资源的装置包括处理器,用于实现上述第二方面描述的方法中第二操作系统的功能。
可选地,所述第一操作系统访问第二操作系统资源的装置还可以包括存储器,所述存储器与所述处理器耦合,所述处理器用于实现上述第二方面描述的方法中第二操作系统的功能。在一种可能的实现中,所述存储器用于存储程序指令和数据。所述存储器与所述处理器耦合,所述处理器可以调用并执行所述存储器中存储的程序指令,用于实现上述第二方面描述的方法中第二操作系统的功能。可选地,所述第一操作系统访问第二操作系统资源的装置还可以包括通信接口,所述通信接口用于所述第一操作系统访问第二操作系统资源的装置与其它设备进行通信。当该第一操作系统访问第二操作系统资源的装置为第二操作系统时,所述通信接口为收发器、输入/输出接口、或电路等。
在一种可能的设计中,所述第一操作系统访问第二操作系统资源的装置包括:处理器和通信接口,
所述处理器利用所述通信接口与外部通信;
所述处理器用于运行计算机程序,以是的所述第一操作系统访问第二操作系统资源的装置实现上述第二方面描述的任一种方法。
可以理解,所述外部可以是处理器以外的对象,或者是所述装置以外的对象。
在另一种可能的设计中,该第一操作系统访问第二操作系统资源的装置芯片或芯片系统。所述通信接口可以是该芯片或芯片系统上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。所述处理器也可以体现为处理电路或逻辑电路。
第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被通信装置执行时,使得所述通信装置实现第一方面以及第一方面的任一可能的实现方式中的方法。
第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被通信装置执行时,使得所述通信装置实现第二方面以及第二方面的任一可能的实现方式中的方法。
第七方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得通信装置实现第一方面以及第一方面的任一可能的实现方式中的方法。
第八方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得通信装置实现第二方面以及第二方面的任一可能的实现方式中的方法。
第九方面,提供了一种电子设备,包括第三方面所示的第一操作系统访问第二操作系统资源的装置和第四方面所示的第一操作系统访问第二操作系统资源的装置。
附图说明
图1是两个操作系统的示意性框图。
图2是本申请实施例提供的一种共享内存的示意性框图。
图3示出了电子设备300的结构示意图。
图4是本申请实施例提供的一种第一操作系统访问第二操作系统资源的方法的示意性流程图。
图5是本申请实施例提供的一种第一操作系统访问第二操作系统资源的示意性框图。
图6是本申请实施例提供的一种用户页表访问的流程示意图。
图7是本申请实施例提供的一种缺页异常处理流程示意图。
图8是本申请实施例提供的一种异常处理流程示意图。
图9是本申请实施例提供的一种操作系统软件示意性框图。
图10是本申请提出的第一操作系统访问第二操作系统资源的装置10的示意图。
图11是适用于本申请实施例的第一操作系统的结构示意图。
图12是本申请提出的第一操作系统访问第二操作系统资源的装置20的示意图。
图13是适用于本申请实施例的第二操作系统的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例的技术方案可以应用于两个操作系统中。图1是两个操作系统的示意性框图。如图1所示两个操作系统包括本端操作系统和对端操作系统,其中,本端操作系统和对端操作系统具有各自独立的中央处理单元(central processing unit,CUP)、内存管理单元(memory management unit,MMU)、转换检测缓冲区(translation lookasidebuffer,TLB)以及页全局目录(page global directory,PGD)等内部模块,还可以具有各自独立的外部设备,图1中未示出操作系统外部设备,本申请对此也并不限制。
具体地,本端操作系统中的某个程序被分割成多块程序分别装入内存,在物理上该多块程序不用彼此相连,在逻辑上使用页表将离散分布的多块程序串起来形成逻辑上连续的程序。其中,将程序分成等长的小块,这些小块叫做页(page),同样内存也被分成和页同样大小的页框(frame),一个页可以装到一个页框里,需要给CPU提供当前任务的页表,CPU在执行程序的时候根据页表去查找某个页在内存的某个页框中,由此完成逻辑地址到物理地址的映射。图1所示的两个操作系统中本端操作系统需要访问对端操作系统资源时,受限于本端操作系统和对端操作系统不同的页表,本端操作系统无法直接访问对端操作系统资源。不同的操作系统需要访问同一物理内存的数据资源时,该不同的操作系统均需要建立新的页表关系。
例如,图1中所示的,本端操作系统基于本端操作系统中的页表根据虚拟地址#1找到对应的物理地址#1,该物理地址#1对应物理内存块#1、对端操作系统基于对端操作系统中的页表根据上述的虚拟地址#1找到对应的物理地址#2,该物理地址#2对应物理内存块#2,物理内存块#1与物理内存块#2相异,所以本端操作系统和对端操作系统基于不同的页表,访问到不同的物理内存块。如果需要本端操作系统和对端操作系统基于上述的虚拟地址#1均能找到上述的物理内存块#2,则本端操作系统和对端操作系统中的页表需要包括虚拟地址#1和物理内存块#2之间的映射关系,也就是说需要更新本端操作系统中的页表,使得本端操作系统基于本端操作系统中的页表根据虚拟地址#1找到对应的物理地址#2。
应理解,本申请实施例中对于操作系统基于页表访问物理内存块的具体流程并不限制,可以参考目前协议的规定。还应理解,本申请中将两个操作系统中的两个不同的操作系统称为本端操作系统和对端操作系统只是举例,对本申请的保护范围不构成任何限定。例如,本端操作系统可以称之为第一操作系统、对端操作系统可以称之为第二操作系统;本端操作系统还可以称之为安全隔离操作系统、对端操作系统还可以称之为主流操作系统。还应理解,两个操作系统也可以称之为双系统、多处理器系统等。
当第一操作系统为TEE OS,第二操作系统为REE OS的情况下。REE OS的安全问题包括机密性、完整性以及可用性等。一种可能的实现方式,使用动态度量技术为REE OS提供完整性安全服务,具体地,动态度量技术通过分析REE OS内存数据,探测REE OS是否受到的威胁从而保护REE OS内存数据避免未授权的修改。而动态度量模块的自身安全性保护,可以通过将动态度量模块部署在TEE OS中以保证动态度量模块的自身安全性,动态度量模块部署在TEE OS中,访问REE OS资源,主要涉及访问REE OS用户进程代码段、内核代码段、动态共享库代码段等度量对象。
但是部署在TEE OS中的动态度量模块需要通过监控REE OS资源完整性以确保REEOS可信,在此情况下,由于TEE OS和REE OS隔离,导致动态度量模块无法高效实时地访问REE OS资源。本申请实施例提供的第一操作系统访问第二操作系统资源的方法,在该情况下能够提高部署在TEE OS中的动态度量模块访问REE OS资源的性能,下文中将结合实施例进行说明。
可选地,本申请中涉及的REE OS包括Linux操作系统、安卓(Android)操作系统等。具体地,本申请中第一、第二以及各种数字编号是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。并不用来限制本申请实施例的范围。例如,区分不同的操作系统等。同理,本申请中“#1”、“#2”等标号也是用于区别类似的对象,例如,区分不同的地址等。
进一步地,不同的操作系统能够共享内存。如果采用共享内存的机制,可以使得本端操作系统和对端操作系统访问同一个物理内存块。具体实现流程如图2所示,图2是本申请实施例提供的一种共享内存的示意性框图。
从图2中可以看出,本端操作系统访问对端操作系统中运行的应用程序代码段,需要提前知道对端操作系统中运行的应用程序代码段物理地址。通过操作系统间物理地址交互,对端操作系统主动将该物理地址传递给本端操作系统。本端操作系统收到该物理地址后,主动映射此物理页框,添加到本端操作系统的页表条目中,这样对端操作系统、本端操作系统就可以通过类似共享内存方式直接访问这块内存块。
应理解,当对端操作系统中的进程代码段的物理地址不连续,呈现离散分布,本端操作系统需要映射很多的物理内存块,性能非常差,并且本端操作系统映射对端操作系统所有资源,本端操作系统的安全性受影响;当本端操作系统无法识别物理内存块的内容时,也会影响本端操作系统使用内存块的内容;当对端操作系统发生页交换的情况下,本端操作系统访问对端操作系统中的数据存在不同步问题。
进一步地,本端操作系统还可以通过拷贝对端操作系统的页表资源实现访问对端操作系统资源的目的。例如,本端操作系统通过软件遍历方式,拷贝对端操作系统的内核页表(或用户页表)所有条目到本端操作系统页表内存中,本端操作系统依次逐级完成页表条目映射,如此本端操作系统和对端操作系统可以利用同等页表转换关系访问到同一个页框内容。
在Linux中的分页机制中,页全局目录(page global directory,PGD)包含若干页上级目录(page upper directory,PUD)的地址,PUD又依次包含若干页中间目录(pagemiddle directory,PMD)的地址,而PUD又包含若干页表(page table entry,PTE)的地址,每一个PTE指向一个页框。
以Linux用户页表为例,假设本端操作系统已知对端操作系统中用户程序虚拟地址(visual address,VA),用户进程页表基地址(通常PGD地址直接填入页表基地址寄存器)。从用户页表基地址开始遍历,将PGD物理地址映射到本端操作系统内核页表中,映射完之后,通过本端操作系统中页表转换关系得到PGD虚拟地址,读取此虚拟地址内容,获取到条目内容,存储的是一级页表(页上级目录,PUD)物理地址;利用同样机制,获取到PUD条目虚拟地址,判断当前PUD条目是否包含当前需要映射的VA,如果不包含当前的VA,则PUD条目偏移一个一级页表粒度,继续判断此PUD条目是否包含此VA,如果不包含,则返回空地址。如果包含,则Walk页中间目录条目,利用同样的方法,直到逐级找到真正的PTE,最后将对应的PTE映射给本端操作系统使用。
应理解,当对端操作系统中的页表条目很多的情况下,本端操作系统拷贝页表消耗的时间非常长。为了提高第一操作系统访问第二操作系统资源的性能,本申请提供一种第一操作系统访问第二操作系统资源的方法,本端操作系统复用对端操作系统的寄存器配置,从而免页表拷贝、页表同步等实现快速访问资源。
首先,为了便于理解本申请实施例中提供的第一操作系统访问第二操作系统资源的方法,下面简单介绍本申请中涉及到的几个基本概念:
1、TEE。
TEE是全球平台(global platform,GP)提出的概念。TEE OS是与设备上的REE OS并存的运行环境,并且给REE OS提供安全服务。TEE OS具有其自身的执行空间,比REE OS的安全级别更高。本申请中将以REE OS和TEE OS为例进行说明。
TEE OS是运行在电子设备中的,提供介于REE OS和安全环境(safe environment,SE)之间的安全性的框架。例如对于某些小额的支付,企业虚拟私人网络(virtual privatenetwork,VPN)等,所需要的安全保护强度并不高,还不需要一个单独的SE来保护,也不能直接放在REE OS中,以防由于REE OS的开放性被攻击。所以对于这类应用,可以通过TEE OS提供安全保护。
此外,TEE OS提供了可信应用(trusted application,TA)的安全执行环境,同时也保护TA的资源和数据的保密性,完整性和访问权限。在TEE中,每个TA是相互独立的,而且不能在未授权的情况下不能互相访问。
以下介绍了本申请实施例提供设计的电子设备、用于这样的电子设备的用户界面、和用于使用这样的电子设备的实施例。在一些实施例中,电子设备可以是还包含其它功能诸如便携式电子设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴电子设备(如智能手表)等。便携式电子设备的示例性实施例包括但不限于搭载或者其它操作系统的便携式电子设备。上述便携式电子设备也可以是其它便携式电子设备,诸如膝上型计算机(Laptop)等。还应当理解的是,在其他一些实施例中,上述电子设备也可以不是便携式电子设备,而是台式计算机。在一些实施例中,电子设备可以是智能家电,诸如智能音箱、智能家居设备。在一些实施例中,电子设备可以是车载设备、车辆等等。所述车载设备可以为智能驾驶计算平台或车载数据处理平台等具备处理能力的设备,前述的第一操作系统和第二操作系统运行在智能驾驶计算平台或车载数据处理平台上。所述智能驾驶计算平台或车载数据处理平台可以为移动数据中心(mobile data center,MDC)。
示例性的,图3示出了电子设备300的结构示意图。电子设备300可以包括处理器310,外部存储器接口320,内部存储器323,通用串行总线(universal serial bus,USB)接口330,充电管理模块340,电源管理模块343,电池342,天线1,天线2,移动通信模块350,无线通信模块360,音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,传感器模块380,按键390,马达393,指示器392,摄像头393,显示屏394,以及用户标识模块(subscriber identification module,SIM)卡接口395等。其中传感器模块380可以包括压力传感器380A,陀螺仪传感器380B,气压传感器380C,磁传感器380D,加速度传感器380E,距离传感器380F,接近光传感器380G,指纹传感器380H,温度传感器380J,触摸传感器380K,环境光传感器380L,骨传导传感器380M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备300的具体限定。在本申请另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件或软件和硬件的组合的形式实现。示例性的,当所述电子设备300为智能驾驶计算平台时,所述电子设备300可以不包含传感器模块380、扬声器370A、受话器370B、麦克风370C等部件,而是通过有线或无线的形式与传感器模块380、扬声器370A、受话器370B、麦克风370C进行数据传输。
2、页表。
页表是一种特殊的数据结构,放在操作系统空间的页表区,保存的是虚拟地址到物理地址的映射。其中,逻辑地址指的是中央处理单元(central processing unit,CPU)所生成的地址,具体地CPU产生的逻辑地址被分为页号(p)和页偏移(d),页号包含每个页在物理内存中的基址,用来作为页表的索引、页偏移与基址相结合,用来确定设备的物理内存地址;物理地址指的是内存单元所看到的地址。逻辑地址空间为2^m,且页大小为2^n,那么逻辑地址的高m-n位表示页号,低n位表示页偏移。实现从页号到物理块号的地址映射。
逻辑地址转换成物理地址的过程是:用页号p去检索页表,从页表中得到该页的物理块号,把它装入物理地址寄存器中。同时,将页内地址d直接送入物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
具体地,用固定大小的页来描述逻辑地址空间,用相同大小的页框来描述物理内存空间,由操作系统实现从逻辑页到物理页框的页面映射,同时负责对所有页的管理和进程运行的控制。
3、转换检测缓冲区(translation lookaside buffer,TLB)。
页表的缓存,TLB中每一行都保存着一个由单个页表项(page table entry,PTE)组成的块,这些块是当前最可能被访问到的页表项。如果页号在TLB中,得到帧号访问内存;否则从内存中的页表中得到帧号,将其存入TLB访问内存。
4、动态度量技术。
对内存中的进程和内核模块完整性进行度量,及时检测针对内存运行进程的恶意攻击。工作原理包括周期性/主动去度量操作系统运行时,内存中不变的部分,计算代表其完整性的哈希(hash)值,将该hash值与基准值做比较,据此判断是否有恶意攻击行为篡改了度量对象的内存映像。基线值可以通过进程首次加载到内存时的内存映像来计算,也可以通过离线的方式,根据应用程序对应的ELF文件来建立相应的基线值。
上文结合图1介绍了本申请实施例提供的第一操作系统访问第二操作系统资源的方法能够应用的场景,并结合图3详细介绍了本申请实施例中涉及的TEE OS和REE OS能够运行的电子设备。下面将结合附图详细介绍本申请实施例提供的第一操作系统访问第二操作系统资源的方法。
此外,为了便于理解本申请实施例,做出以下几点说明。
第一,在本申请中,“用于指示”可以包括用于直接指示和用于间接指示。当描述用于指示A时,可以包括该指示信息直接指示A或间接指示A,而并不代表该指示信息中一定包括有A。
用于指示的信息可以称为待指示信息,则具体实现过程中,对待指示信息进行指示的方式有很多种。例如,可以直接指示待指示信息,如待指示信息本身或者该待指示信息的索引等。也可以通过指示其他信息来间接指示待指示信息,其中该其他信息与待指示信息之间存在关联关系。还可以仅仅指示待指示信息的一部分,而待指示信息的其他部分则是已知的或者提前约定的。例如,还可以借助预先约定(例如协议规定)的各个信息的排列顺序来实现对特定信息的指示,从而在一定程度上降低指示开销。
第二,在本申请中第一、第二以及各种数字编号(例如,“#1”、“#2”)仅为描述方便进行的区分,并不用来限制本申请实施例的范围。例如,区分不同的操作系统等。
第三,在本申请中“保存”,可以是指的保存在一个或者多个存储器中。所述一个或者多个存储器,可以是单独的设置,也可以是集成在编码器、译码器、处理器、或通信装置中。所述一个或者多个存储器,也可以是一部分单独设置,一部分集成在编码器、译码器、处理器、或通信装置中。存储器的类型可以是任意形式的存储介质,本申请并不对此限定。
图4是本申请实施例提供的一种第一操作系统访问第二操作系统资源的方法的示意性流程图。执行主体包括第一操作系统和第二操作系统,从第一操作系统和第二操作系统之间的交互说明第一操作系统访问第二操作系统资源的方法。
本申请提供的第一操作系统访问第二操作系统资源的方法可以应用在图1所述的两个操作系统场景下,其中,第一操作系统和第二操作系统构成两个操作系统场景。可选地,第一操作系统和第二操作系统所属的体系架构一致,例如,第一操作系统和第二操作系统同属于x86体系架构,或者,第一操作系统和第二操作系统同属于ARM体系架构。
该第一操作系统访问第二操作系统资源的方法包括以下步骤中的全部或部分。
S110,第一操作系统初始化。
本申请实施例中第一操作系统初始化包括:
第一操作系统将第一操作系统中的内核页表和用户页表存储在低位地址空间的页表内存中。
应理解,本申请实施例中对于第一操作系统如何获得上述的内核页表和用户页表并不限制,可以参考目前协议的规定,第一操作系统中包括生成上述内核页表和用户页表的模块。
本申请实施例中涉及的内核页表包括存放在主内核页全局目录中的一段内存,硬件并不直接使用,内核页表中的内容为所有进程共享,内核页表由内核维护并更新。本申请实施例中涉及的用户页表包括每个进程各自的页表,放在进程的页目录中。
还应理解,本申请实施例中对于内核页表和用户页表的具体形式并不限制,可以参考目前协议中的描述,本申请实施例主要涉及存储页表的内存配置的寄存器。
第一操作系统将第一操作系统中的内核页表和用户页表存储在低位地址空间的页表内存之后,将低位地址空间的页表内存配置到第一寄存器,所述第一寄存器对应第一地址空间,第一操作系统基于第二操作系统的高位地址空间预留第二地址空间,其中,第一地址空间供用户和内核使用,第一地址空间和第二地址空间相异,第二地址空间为第一操作系统中虚拟地址空间中除已使用的第一地址空间之外的地址空间。
应理解,目前操作系统采用虚拟内存设计,以Linux系统为例,通常32位Linux内存虚拟地址空间划分0~3G为用户空间,3~4G为内核空间。其中,0~3G理解为低位地址空间、3~4G理解为高位地址空间,该高位地址空间供Linux系统内核使用,应用程序不可访问。低位地址空间供用户程序访问。
与目前操作系统不同的是,本申请实施例中的第一操作系统内核空间和用户空间均使用第一地址空间,第一地址空间理解为第一操作系统的内存虚拟地址空间中的低位地址空间,第一寄存器可以理解为低位地址空间对应的寄存器。第一操作系统将第二地址空间预留出来,未被第一操作系统的内核使用,第二地址空间理解为高位地址空间。也就是说第一操作系统在进行初始化的过程中,基于第二操作系统的虚拟地址空间中的高位地址空将第一操作系统的高位地址空间预留出来,例如,第二操作系统为32位Linux系统,则第二操作系统的虚拟地址空间划分0~3G为用户空间,3~4G为内核空间,在此情况下第一操作系统可以将第一操作系统的高位地址空间3~4G预留出来。
应理解,为了使得第一操作系统能够复用第二操作系统的内核页表的寄存器配置来对第一操作系统的改为地址空间对应的第二寄存器进行配置,第一操作系统的地址空间划分与第二操作系统的地址空间划分应该一致。例如,第一操作系统和第二操的虚拟地址空间划分均为0~3G为低位地址空间,3~4G为高位地址空间,其中,第一操作系统和第二操作系统虚拟地址空间划分均为0~3G为低位地址空间,3~4G为高位地址空间只是举例,对本申请的保护范围并不构成任何限定,其他可能的系统低位地址空间和高位地址空间的划分可以参考现有的划分方式,本申请对此不再赘述。
进一步地,为了提高安全性能,当第一操作系统内核空间和用户空间均使用低位地址空间时,第一操作系统配置内核页表时,在内核页表条目上增加用户不可访问权限控制、第一操作系统配置用户页表时,在用户页表条目上增加不可执行特权(privilegedexecute never,PXN)防护,该PXN防护的目的是阻止内核执行用户代码。
为了使得第一操作系统能够访问第二操作系统的内核空间的资源,本申请实施例中第一操作系统能够获取第二操作系统的内核页表的寄存器配置信息。
作为一种可能的实现方式,第一操作系统主动获取第二操作系统的内核页表的寄存器配置信息。例如,第一操作系统中部署有获取模块,用于获取第二操作系统的内核页表的寄存器配置信息。
作为另一种可能的实现方式,第一操作系统接收来自第二操作系统的第二操作系统的内核页表的寄存器配置信息。例如,第一操作系统中部署有接收模块,用于接收第二操作系统的内核页表的寄存器配置信息。
进一步地,第一操作系统还可以获取第二操作系统的内核符号表信息,并解析内核符号表信息,得到的第二操作系统高位地址空间转换关系,获取用户进程的用户页表基地址信息,利用转换关系逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。其中,内核符号表信息包括用户进程内核栈的信息以及结构体偏移(进程的地址空间描述符(例如,代码段、数据段、堆栈、文件系统信息等等)、进程描述符)。根据内核栈的信息以及结构体偏移,获取用代码段或者数据段的地址范围。
可选地,为了使得第一操作系统能够获取第二操作系统的内核页表的寄存器配置信息和/或第二操作系统的内核符号表信息。第二操作系统中可以部署有内核驱动模块,该内核驱动模块用于获取第二操作系统的内核符号表信息、第二操作系统的内核页表的寄存器配置信息。
作为一种可能的实现方式,该内核驱动模块获取到上述的第二操作系统的内核符号表信息、第二操作系统的内核页表的寄存器配置信息之后,可以存储在第二操作系统本地存储模块中,使第一操作系统能够主动获取得到。
作为另一种可能的实现方式,该内核驱动模块获取到上述的第二操作系统的内核符号表信息、第二操作系统的内核页表的寄存器配置信息之后,可以发起主动请求,将获取的第二操作系统的内核符号表信息、第二操作系统的内核页表的寄存器配置信息通知给第一操作系统,则图4所示的方法流程还可以包括:
S120,第二操作系统向该第一操作系统发送请求消息。
该请求消息中携带上述的内核符号表信息和/或第二操作系统的内核页表的寄存器配置信息,该请求消息用于请求第一操作系统修改第一操作系统的寄存器配置。
具体地,由于请求消息中包括上述的第二操作系统的内核符号表信息和/或第二操作系统的内核页表的寄存器配置信息,第一操作系统接收到请求消息之后,可以基于接收到的第二操作系统的内核页表的寄存器配置信息配置第一操作系统的寄存器配置,使得第一操作系统的高位地址空间对应的寄存器配置与第二操作系统的高位地址空间对应的寄存器配置相同,可以理解为第一操作系统的高位地址空间对应的寄存器配置复用第二操作系统的高位地址空间对应的寄存器配置。即图4所示的方法流程还包括:S130,第一操作系统配置寄存器。
作为一种可能的实现方式,在接收到上述的请求消息之前第一操作系统中部署客户端用户程序(client application,CA),该CA基于接收到的第二操作系统的内核页表的寄存器配置信息配置第一操作系统的高位地址空间对应的寄存器配置;
作为另一种可能的实现方式,在接收到上述的请求消息之后第一操作系统中部署上述的CA,该CA基于接收到的第二操作系统的内核页表的寄存器配置信息配置第一操作系统的高位地址空间对应的寄存器配置;
作为又一种可能的实现方式,在接收到上述的请求消息时第一操作系统中部署上述的CA,该CA基于接收到的第二操作系统的内核页表的寄存器配置信息配置第一操作系统的高位地址空间对应的寄存器配置。
应理解,本申请实施例中对于第一操作系统何时部署上述的CA并不限制。
其中,第二操作系统的内核页表的寄存器配置包括地址翻译控制器、内存属性控制器、高位空间页表基地址寄存器等配置。当第一操作系统完成第一操作系统的高位地址空间对应的寄存器配置之后,第一操作系统与第二操作系统具有相同的高位空间页表基地址寄存器配置。
可选地,第一操作系统接收到请求消息之后,可以获取第二操作系统的内核符号表信息,第一操作系统可以存储上述的第二操作系统的内核符号表信息。
具体地,当第一操作系统根据第二操作系统的内核页表的寄存器配置信息配置第一操作系统的高位地址空间对应的第二寄存器的情况下,第一操作系统启用高位地址空间之后,第一操作系统拥有直接访问第二操作系统内核空间的资源的权限,可以访问和第二操作系统同样的高位地址空间。
当第一操作系统接收到上述的内核符号表信息之后,能够得到的第二操作系统高位地址空间转换关系,获取用户进程的用户页表基地址信息,利用转换关系逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。
为了便于直观地理解,结合图5详细说明上述的S110-S130所示的流程。图5是本申请实施例提供的一种第一操作系统访问第二操作系统资源的示意性框图。
可选地,以第一操作系统为ARM 64位体系的操作系统,第二操作系统为Linux OS为例,进一步说明上述的第一操作系统如何实现复用第二操作系统的寄存器配置。LinuxOS通常将64位地址空间中0x0000-0000-0000-0000~0x0000-7fff-ffff-f000的128T地址用于用户空间,0xffff-8000~0000-0000为系统内核空间地址。
第一操作系统初始化时,将内核页表和用户页表存储在同一块连续内存中,将内存基址配置到TTBR0_EL1(低位空间页表基地址寄存器)中,内核空间和用户空间全部使用低位地址空间。具体地,第一操作系统配置内核页表时,增加用户态不可访问权限控制、配置用户页表,增加PXN防护;并且需要保证第一操作系统的高位地址空间范围与第二操作系统的内核地址空间保持一致(例如,保证第一操作系统的64位地址空间中0xffff-8000~0000-0000为高位地址空间)。
进一步地,部署内核驱动模块到Linux OS中,用于获取Linux OS的内核符号表信息以及一些关键系统寄存器配置(内核页表相关的寄存器配置信息,例如,TCR_EL1(地址翻译控制器配置),TTBR1_EL1(低位空间页表基地址寄存器),MAIR_EL1(内存属性寄存器)等寄存器配置),并将获取到的内核符号表信息以及一些关键系统寄存器配置发送给第一操作系统,使得第一操作系统复用第二操作系统的高位地址空间配置,因此第一操作系统可以访问第二操作系统高位地址空间范围数据。
X86体系的操作系统架构也类似,寄存器配置也需要保证本端操作系统(第一操作系统)高位地址空间范围需要与对端操作系统(第二操作系统)的内核地址空间范围保持一致。寄存器名字可能和ARM体系的操作系统架构存在差别,但是原理是一样的,本申请对此不再赘述。
进一步地,第一操作系统可以以软件(软件关系:Table_Entry[(VA>>(39-Level*9))&0x1FF],Level为页表级别)的形式访问第二操作系统用户页表资源,即图4所示的方法流程还包括S140:第一操作系统访问第二操作系统用户页表资源。
具体地,第一操作系统以遍历的方式访问第二操作系统用户页表资源。下面以一个具体的例子说明第一操作系统访问第二操作系统用户页表资源的具体流程。如图6所示,图6是本申请实施例提供的一种用户页表访问的流程示意图。假设第二操作系统是四级分页机制:PGD包含若干PUD的地址、PUD包含若干PMD的地址、PMD包含若干PTE的地址,每一个PTE指向一个页框。第一操作系统需要访问某个VA对应的物理页框内容。
具体访问流程如下:
首先,第一操作系统利用已有的高位地址转换关系(无需像前文中所示的拷贝第二操作系统的页表资源),获取到第二操作系统中的用户进程PGD对应的VA,根据进该VA的偏移以及利用PGD[(VA>>(39-3*9))&0x1FF]读取一级页表条目的条目内容,确定该条目内容对应的包含该VA在内的二级页表条目(PUD条目物理地址)。其次,判断该二级页表条目是否是有效条目,如果是有效条目则,利用PUD[(VA>>(39-2*9))&0x1FF],获取到该二级页表条目物理地址,逐级最后可以获取进程代码段对应的真实页框。最后,利用第二操作系统高位地址线性关系对PTE页框做虚实转换,第一操作系统就可以访问第二操作系统虚拟地址的内容;整体只需要4步简单线性转换,就可以快速获取到第二操作系统具体的物理页框上资源。即用户页表资源访问,第一操作系统可以通过软件快速索引方式快速访问。
第一操作系统通过地址总线可以访问连接在地址总线上的所有外设,包括物理内存、IO设备等等,但从第一操作系统发出的访问地址并非是这些外设在地址总线上的物理地址,而是一个虚拟地址,由MMU将虚拟地址转换成物理地址再从地址总线上发出,MMU上的这种虚拟地址和物理地址的转换关系是需要创建的,当没有创建一个虚拟地址到物理地址的映射或者程序设计不当导致访问了非法地址,MMU将会通知第一操作系统产生一个缺页异常。
本申请实施例中当第一操作系统访问所述第二操作系统的资源异常时,所述第一操作系统将所述异常相关信息发送给所述第二操作系统,具体地第一操作系统中部署有远端程序调录(remote procedure call,RPC)服务,该RPC服务将所述异常相关信息发送给所述
第二操作系统。
例如,当第一操作系统访问第二操作系统用户进程,软件快速索引用户页框时,访问到空条目,第一操作系统无法正常读取第二操作系统应用程序内容。此时第一操作系统需要额外设计缺页处理机制。如图7所示,图7是本申请实施例提供的一种缺页异常处理流程示意图。
第一操作系统中部署有RPC服务,第一操作系统中的CA程序借助RPC服务将缺页异常RPC请求透传回第二操作系统,并主动传递缺页进程号,及缺页对应的虚拟地址;第二操作系统收到来自第一操作系统的RPC请求后,利用第二操作系统缺页处理程序,设置相关的内存页后,并将内存页锁住在内存中,回复第一操作系统的RPC请求。第一操作系统中的CA根据第二操作系统返回的结果,进行后续相应处理,如果第二操作系统返回结果成功,那么第二操作系统就可以正常访问该用户进程资源,否则拒绝访问。
还例如,第一操作系统访问某地址出现数据终止异常(data abort exception)时,第一操作系统需要设计异常处理机制。如图8所示,图8是本申请实施例提供的一种异常处理流程示意图。第一操作系统进行异常处理,首先需要分析地址来源,如果是第一操作系统地址访问错误,则进入第一操作系统异常处理程序中处理,否则借助RPC服务,路由回第二操作系统中处理,交由第二操作系统处理。
作为一种可能的实现方式,图4所示的方法可以用用在图1所示的异操作系统中,具体地图1所示的异操作系统对应的软件操作系统如图9所示,图9是本申请实施例提供的一种操作系统软件示意性框图。其中,符号起始的块(block started by symbol,BSS)段:通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS段属于静态内存分配。
数据段(data segment):通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段(code segment/text segment):通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆栈:用户存放程序临时创建的局部变量,可以把堆栈看成一个寄存、交换临时数据的内存区,由操作系统分配的,内存的申请与回收都由系统管理。
BIN文件是原始二进制(raw binary)文件,这种文件只包含机器码。ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。本申请中对于操作系统软件具体划分并不限定,可以参考目前两个操作系统的软件划分。
上述操作系统软件分为两个域:安全域和非安全域,其中,安全域对应安全隔离操作系统,非安全域对应主流操作系统。安全隔离操作系统中可以部署动态度量(dynamicintegrity measurement,DIM)模块,本申请实施例中安全隔离操作系统可以称为本端操作系统,也可以称为第一操作系统、主流操作系统可以称为对端操作系统,也可以称为第二操作系统。也就是说本申请中的第一操作系统中可以部署有动态度量模块,为第二操作系统提供安全防护。本申请提供的第一操作系统访问第二操作系统资源的方法可以应用在自动驾驶领域,例如,第二操作系统和用户进行交互,软件安全服务访问部署在第一操作系统中。
应理解,上述方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上面结合图4-图9详细介绍了本申请实施例提供的第一操作系统访问第二操作系统资源的方法,下面结合图10-图13详细介绍本申请实施例提供的第一操作系统访问第二操作系统资源的装置。
参见图10,图10是本申请提出的第一操作系统访问第二操作系统资源的装置10的示意图。如图10所示,装置10包括处理单元110和接收单元120。
处理单元110,用于在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间,为所述第二操作系统预留第二地址空间,其中,所述第一操作系统的内存虚拟地址空间包括所述第一地址空间和所述第二地址空间;
接收单元120,用于获取所述第二操作系统的内核页表的寄存器配置信息;
所述处理单元110,还用于根据所述第二操作系统的内核页表的寄存器配置信息配置所述第一操作系统的第二寄存器,所述第二寄存器对应所述第一操作系统的所述第二地址空间;
所述处理单元110,还用于使用所述第二地址空间访问所述第二操作系统的内核空间的资源。
装置10和方法实施例中的第一操作系统完全对应,装置10可以是方法实施例中的第一操作系统,或者方法实施例中的第一操作系统内部的芯片或功能模块。装置10的相应单元用于执行图4所示的方法实施例中由第一操作系统执行的相应步骤。
其中,装置10中的处理单元110执行方法实施例中第一操作系统内部实现或处理的步骤。例如,执行图4中初始化的步骤S110、还用于执行图4中配置寄存器的步骤S130。
接收单元120执行方法实施例中第一操作系统接收的步骤。例如,执行图4中接收来自第二操作系统的请求消息的步骤S120。
装置10还可以包括发送单元,用于执行第一操作系统发送的步骤,例如,向其他设备发送信息。发送单元和接收单元120可以组成收发单元,同时具有接收和发送的功能。其中,处理单元110可以是处理器。发送单元可以是发射器,接收单元120可以是接收器。接收器和发射器可以集成在一起组成收发器。
参见图11,图11是适用于本申请实施例的第一操作系统的结构示意图。该第一操作系统可应用于图1所示出的两个操作系统中。为了便于说明,图11仅示出了第一操作系统的主要部件。如图11所示,第一操作系统包括处理器1110(对应于图10中所示的处理单元110)、存储器1120、收发器1130(对应于图10中所示的接收单元120)。处理器用于控制收发器收发信息,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,以执行本申请提出的第一操作系统访问第二操作系统资源的方法中由第一操作系统执行的相应流程和/或操作。此处不再赘述。
本领域技术人员可以理解,为了便于说明,图11仅示出了一个存储器和处理器。在实际的第一操作系统中,可以存在多个处理器和存储器。存储器也可以称为存储介质或者存储设备等,本申请实施例对此不做限制。
参见图12,图12是本申请提出的第一操作系统访问第二操作系统资源的装置20的示意图。如图12所示,装置20包括处理单元210和发送单元220。
处理单元210,用于获取所述第二操作系统的内核页表的寄存器配置信息;
发送单元220,用于向所述第一操作系统发送所述第二操作系统的内核页表的寄存器配置信息。
装置20和方法实施例中的第二操作系统完全对应,装置20可以是方法实施例中的第二操作系统,或者方法实施例中的第二操作系统内部的芯片或功能模块。装置20的相应单元用于执行图4所示的方法实施例中由第二操作系统执行的相应步骤。
其中,装置20中的发送单元220执行方法实施例中第二操作系统发送的步骤。例如,执行图4中向第一操作系统发送请求消息的步骤S120。
装置20中的处理单元210执行方法实施例中第二操作系统内部实现或处理的步骤。
装置20还可以包括接收单元,用于执行第二操作系统接收的步骤,例如,接收其他设备发送的信息。接收单元和发送单元210可以组成收发单元,同时具有接收和发送的功能。其中,处理单元110可以是处理器。发送单元210可以是发射器。接收单元可以是接收器。接收器和发射器可以集成在一起组成收发器。
参见图13,图13是适用于本申请实施例的第二操作系统的结构示意图。该第二操作系统可应用于图1所示出的两个操作系统中。为了便于说明,图13仅示出了第二操作系统的主要部件。如图13所示,第一操作系统包括处理器1310(对应于图12中所示的处理单元210)、存储器1320、收发器1330(对应于图12中所示的发送单元220)。处理器用于控制收发器收发信息,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,以执行本申请提出的第一操作系统访问第二操作系统资源的方法中由第一操作系统执行的相应流程和/或操作。此处不再赘述。
本申请实施例还提供一种电子设备,其包括前述的第一操作系统和第二操作系统。该电子设备还可以包括其他外设如图3所示,其中第一操作系统和第二操作系统均可以设置于处理器310中。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述如图4所示的方法中第一操作系统执行的各个步骤。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述如图4所示的方法中第二操作系统执行的各个步骤。
本申请还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如图4所示的方法中第一操作系统执行的各个步骤。
本申请还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如图4所示的方法中第二操作系统执行的各个步骤。
本申请还提供一种芯片,包括处理器。该处理器用于读取并运行存储器中存储的计算机程序,以执行本申请提供的第一操作系统访问第二操作系统资源的方法中由第一操作系统执行的相应操作和/或流程。可选地,该芯片还包括存储器,该存储器与该处理器通过电路或电线与存储器连接,处理器用于读取并执行该存储器中的计算机程序。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理。该通信接口可以是该芯片上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。所述处理器也可以体现为处理电路或逻辑电路。
本申请还提供一种芯片,包括处理器。该处理器用于读取并运行存储器中存储的计算机程序,以执行本申请提供的第一操作系统访问第二操作系统资源的方法中由第二操作系统执行的相应操作和/或流程。可选地,该芯片还包括存储器,该存储器与该处理器通过电路或电线与存储器连接,处理器用于读取并执行该存储器中的计算机程序。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理。该通信接口可以是该芯片上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。所述处理器也可以体现为处理电路或逻辑电路。
应理解,上述的芯片也可以替换为芯片系统,这里不再赘述。
本申请中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;本申请中术语“至少一个”,可以表示“一个”和“两个或两个以上”,例如,A、B和C中至少一个,可以表示:单独存在A,单独存在B,单独存在C、同时存在A和B,同时存在A和C,同时存在C和B,同时存在A和B和C,这七种情况。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (31)
1.一种第一操作系统访问第二操作系统资源的方法,其特征在于,包括:
在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间,为所述第二操作系统预留第二地址空间,其中,所述第一操作系统的内存虚拟地址空间包括所述第一地址空间和所述第二地址空间;
所述第一操作系统获取所述第二操作系统的内核页表的寄存器配置信息;
所述第一操作系统根据所述第二操作系统的内核页表的寄存器配置信息配置所述第一操作系统的第二寄存器,所述第二寄存器对应所述第一操作系统的所述第二地址空间;
所述第一操作系统使用所述第二地址空间访问所述第二操作系统的内核空间的资源。
2.根据权利要求1所述的方法,其特征在于,
所述第一地址空间为高位地址空间;所述第二地址空间为低位地址空间,所述第一操作系统的高位地址空间与所述第二操作系统的内核地址空间范围一致。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一操作系统接收所述第二操作系统发送的内核符号表信息;
所述第一操作系统解析所述内核符号表信息,得到的所述第二操作系统高位地址空间转换关系,获取用户进程的用户页表基地址信息,利用所述转换关系逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。
4.根据权利要求1或2所述的方法,其特征在于,在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间包括:
所述第一操作系统将所述第一操作系统中的内核页表和用户页表存储在所述第一地址空间的页表内存中;
所述第一操作系统将所述第一地址空间的页表内存配置到所述第一操作系统的第一寄存器。
5.根据权利要求1或2所述的方法,其特征在于,为所述第二操作系统预留第二地址空间包括:所述第一操作系统基于所述第二操作系统的高位地址空间预留所述第二地址空间。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一操作系统接收所述第二操作系统发送的请求消息,所述请求消息中携带内核符号表信息和所述第二操作系统的内核页表的寄存器配置信息。
7.根据权利要求1或2所述的方法,其特征在于,所述第一操作系统中部署客户端应用程序CA;
所述第一操作系统为所述第二操作系统预留第二地址空间包括:
所述CA初始化过程中,基于所述第二操作系统的内核页表的寄存器配置信息修改所述第一操作系统的寄存器的配置。
8.根据权利要求4所述的方法,其特征在于,所述第一操作系统将所述第一操作系统中的内核页表和用户页表存储在所述第一地址空间的页表内存中之前,所述方法还包括:
所述第一操作系统在所述内核页表上增加用户不可访问权限控制;
所述第一操作系统在所述用户页表上增加不可执行特权PXN防护。
9.根据权利要求1或2所述的方法,其特征在于,所述第二操作系统的内核页表的寄存器配置信息包括:
地址翻译控制器配置信息、内存属性控制器配置信息和内核空间页表基地址寄存器配置信息。
10.根据权利要求1或2所述的方法,其特征在于,所述第一操作系统中部署有动态度量模块,所述动态度量模块用于为所述第二操作系统提供安全服务。
11.根据权利要求1或2所述的方法,其特征在于,当所述第一操作系统访问所述第二操作系统的内核空间的资源异常时,所述第一操作系统将异常相关信息发送给所述第二操作系统。
12.根据权利要求11所述的方法,其特征在于,所述第一操作系统中部署有远端程序调录RPC服务;
所述第一操作系统将所述异常相关信息发送给所述第二操作系统包括:
所述RPC服务将所述异常相关信息发送给所述第二操作系统。
13.一种第一操作系统访问第二操作系统资源的方法,其特征在于,包括:
所述第二操作系统获取所述第二操作系统的内核页表的寄存器配置信息;
所述第二操作系统向所述第一操作系统发送所述第二操作系统的内核页表的寄存器配置信息。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述第二操作系统获取所述第二操作系统的内核符号表信息;
所述第二操作系统向所述第一操作系统发送所述内核符号表信息。
15.根据权利要求13或14所述的方法,其特征在于,所述第二操作系统中部署内核驱动模块;
所述第二操作系统获取内核符号表信息和/或所述第二操作系统的内核页表的寄存器配置信息包括:
所述内核驱动模块获取所述内核符号表信息和/或所述第二操作系统的内核页表的寄存器配置信息。
16.一种第一操作系统访问第二操作系统资源的装置,其特征在于,包括:
处理单元,用于在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间,为所述第二操作系统预留第二地址空间,其中,所述第一操作系统的内存虚拟地址空间包括所述第一地址空间和所述第二地址空间;
接收单元,用于获取所述第二操作系统的内核页表的寄存器配置信息;
所述处理单元,还用于根据所述第二操作系统的内核页表的寄存器配置信息配置所述第一操作系统的第二寄存器,所述第二寄存器对应所述第一操作系统的所述第二地址空间;
所述处理单元,还用于使用所述第二地址空间访问所述第二操作系统的内核空间的资源。
17.根据权利要求16所述的装置,其特征在于,所述接收单元,还用于接收所述第二操作系统发送的内核符号表信息;
所述处理单元,还用于解析所述内核符号表信息,得到的所述第二操作系统高位地址空间转换关系,获取用户进程的用户页表基地址信息,利用所述转换关系逐级读取用户页表条目内容,访问第二操作系统的用户空间的资源。
18.根据权利要求16或17所述的装置,其特征在于,所述处理单元在所述第一操作系统的第一地址空间配置所述第一操作系统的内核空间和用户空间包括:
所述处理单元,用于将所述第一操作系统中的内核页表和用户页表存储在所述第一地址空间的页表内存中。
19.根据权利要求16或17所述的装置,其特征在于,所述处理单元为所述第二操作系统预留第二地址空间包括:所述处理单元基于所述第二操作系统的高位地址空间预留所述第二地址空间。
20.根据权利要求16或17所述的装置,其特征在于,所述装置还包括:
接收单元,用于接收所述第二操作系统发送的请求消息,所述请求消息中携带内核符号表信息和所述第二操作系统的内核页表的寄存器配置信息。
21.根据权利要求16或17所述的装置,其特征在于,所述装置中部署客户端应用程序CA;
所述处理单元为所述第二操作系统预留第二地址空间包括:
所述CA初始化过程中,所述处理单元基于所述第二操作系统的内核页表的寄存器配置信息修改所述第一操作系统的寄存器的配置。
22.根据权利要求21所述的装置,其特征在于,所述处理单元将所述第一操作系统中的内核页表和用户页表存储在所述第一地址空间的页表内存中之前,所述处理单元,还用于在所述内核页表上增加用户不可访问权限控制以及在所述用户页表上增加不可执行特权PXN防护。
23.根据权利要求16或17所述的装置,其特征在于,所述装置中部署有动态度量模块,所述动态度量模块用于为所述第二操作系统提供安全服务。
24.根据权利要求16或17所述的装置,其特征在于,当所述处理单元访问所述第二操作系统的资源异常时,所述装置还包括:
发送单元,用于将异常相关信息发送给所述第二操作系统。
25.根据权利要求24所述的装置,其特征在于,所述装置中部署有远端程序调录RPC服务;
所述发送单元将所述异常相关信息发送给所述第二操作系统包括:
所述RPC服务将所述异常相关信息发送给所述第二操作系统。
26.一种第一操作系统访问第二操作系统资源的装置,其特征在于,包括:
处理单元,用于获取所述第二操作系统的内核页表的寄存器配置信息;
发送单元,用于向所述第一操作系统发送所述第二操作系统的内核页表的寄存器配置信息。
27.根据权利要求26所述的装置,其特征在于,所述处理单元,还用于获取所述第二操作系统的内核符号表信息;
所述发送单元,还用于向所述第一操作系统发送所述内核符号表信息。
28.根据权利要求26或27所述的装置,其特征在于,所述装置中部署内核驱动模块;
所述处理单元获取内核符号表信息和/或所述第二操作系统的内核页表的寄存器配置信息:
所述内核驱动模块获取所述内核符号表信息和/或所述第二操作系统的内核页表的寄存器配置信息。
29.一种电子设备,其特征在于,包括如权利要求16-25中任一项所述的装置以及如权利要求26-28中任一项所述的装置。
30.一种计算机可读存储介质,其特征在于,包括:所述计算机可读存储介质存储有计算机程序;所述计算机程序在计算机上运行时,使得计算机执行权利要求1-15中任一项所述的方法。
31.一种芯片,其特征在于,包括通信接口、存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于读取并执行所述存储器中存储器的所述计算机程序,使得所述芯片实现如权利要求1-15中任一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911156149.8A CN111124664B (zh) | 2019-11-22 | 2019-11-22 | 第一操作系统访问第二操作系统资源的方法和装置 |
KR1020227020341A KR20220093379A (ko) | 2019-11-22 | 2020-07-15 | 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치 |
JP2022529685A JP7443519B2 (ja) | 2019-11-22 | 2020-07-15 | 第1のオペレーティングシステムが第2のオペレーティングシステムのリソースにアクセスするための方法及び装置 |
EP20890467.2A EP4053700A4 (en) | 2019-11-22 | 2020-07-15 | METHOD AND DEVICE FOR ENABLING A FIRST OPERATING SYSTEM TO ACCESS RESOURCES OF A SECOND OPERATING SYSTEM |
PCT/CN2020/102032 WO2021098244A1 (zh) | 2019-11-22 | 2020-07-15 | 第一操作系统访问第二操作系统资源的方法和装置 |
US17/749,627 US12007906B2 (en) | 2019-11-22 | 2022-05-20 | Method and apparatus for first operating system to access resource of second operating system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911156149.8A CN111124664B (zh) | 2019-11-22 | 2019-11-22 | 第一操作系统访问第二操作系统资源的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124664A CN111124664A (zh) | 2020-05-08 |
CN111124664B true CN111124664B (zh) | 2023-12-08 |
Family
ID=70498040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911156149.8A Active CN111124664B (zh) | 2019-11-22 | 2019-11-22 | 第一操作系统访问第二操作系统资源的方法和装置 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4053700A4 (zh) |
JP (1) | JP7443519B2 (zh) |
KR (1) | KR20220093379A (zh) |
CN (1) | CN111124664B (zh) |
WO (1) | WO2021098244A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124664B (zh) * | 2019-11-22 | 2023-12-08 | 华为技术有限公司 | 第一操作系统访问第二操作系统资源的方法和装置 |
CN114091110A (zh) * | 2020-08-04 | 2022-02-25 | 华为技术有限公司 | 一种完整性度量方法和完整性度量装置 |
CN112231124B (zh) * | 2020-12-14 | 2021-03-19 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护的应用间通信方法及装置 |
CN113538207B (zh) * | 2021-09-17 | 2022-03-01 | 北京鲸鲮信息系统技术有限公司 | 跨进程调用的图形渲染方法、装置、电子设备与存储介质 |
CN114090096B (zh) * | 2022-01-21 | 2022-04-15 | 成都云祺科技有限公司 | 一种网络虚拟文件系统实现方法、系统及存储介质 |
CN115658560B (zh) * | 2022-12-28 | 2023-03-14 | 北京紫光芯能科技有限公司 | 一种数据共享管理方法、装置、系统、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN1942859A (zh) * | 2003-10-01 | 2007-04-04 | 扎鲁纳股份有限公司 | 操作系统 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
CN110245001A (zh) * | 2019-05-05 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 数据隔离方法及装置、电子设备 |
CN110348252A (zh) * | 2018-04-02 | 2019-10-18 | 华为技术有限公司 | 基于信任区的操作系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005275629A (ja) * | 2004-03-23 | 2005-10-06 | Nec Corp | マルチプロセッサシステム、及び、メモリアクセス方法 |
JP2014089644A (ja) | 2012-10-31 | 2014-05-15 | Toshiba Corp | プロセッサ、プロセッサ制御方法及び情報処理装置 |
JP6129702B2 (ja) | 2013-09-24 | 2017-05-17 | 株式会社東芝 | 情報処理装置、情報処理システム、プログラム |
US9213840B2 (en) * | 2014-05-15 | 2015-12-15 | Lynx Software Technologies, Inc. | Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features |
JP6181004B2 (ja) | 2014-06-20 | 2017-08-16 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
JP6130612B1 (ja) | 2015-08-25 | 2017-05-17 | 株式会社Seltech | ハイパーバイザーを有するシステム |
CN111124664B (zh) * | 2019-11-22 | 2023-12-08 | 华为技术有限公司 | 第一操作系统访问第二操作系统资源的方法和装置 |
-
2019
- 2019-11-22 CN CN201911156149.8A patent/CN111124664B/zh active Active
-
2020
- 2020-07-15 JP JP2022529685A patent/JP7443519B2/ja active Active
- 2020-07-15 KR KR1020227020341A patent/KR20220093379A/ko not_active Application Discontinuation
- 2020-07-15 EP EP20890467.2A patent/EP4053700A4/en active Pending
- 2020-07-15 WO PCT/CN2020/102032 patent/WO2021098244A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN1942859A (zh) * | 2003-10-01 | 2007-04-04 | 扎鲁纳股份有限公司 | 操作系统 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
CN110348252A (zh) * | 2018-04-02 | 2019-10-18 | 华为技术有限公司 | 基于信任区的操作系统和方法 |
CN110245001A (zh) * | 2019-05-05 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 数据隔离方法及装置、电子设备 |
Non-Patent Citations (1)
Title |
---|
SANDRO PINTO等.Demystifying Arm TrustZone: A Comprehensive Survey.ACM Computing Surveys.2019,第51卷(第6期),第130:1-36页. * |
Also Published As
Publication number | Publication date |
---|---|
EP4053700A1 (en) | 2022-09-07 |
JP7443519B2 (ja) | 2024-03-05 |
KR20220093379A (ko) | 2022-07-05 |
US20220276968A1 (en) | 2022-09-01 |
JP2023503110A (ja) | 2023-01-26 |
EP4053700A4 (en) | 2022-11-23 |
CN111124664A (zh) | 2020-05-08 |
WO2021098244A1 (zh) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124664B (zh) | 第一操作系统访问第二操作系统资源的方法和装置 | |
US11783081B2 (en) | Secure public cloud | |
EP3629540B1 (en) | Apparatus and method for secure memory access using trust domains | |
US7870336B2 (en) | Operating system protection against side-channel attacks on secrecy | |
US10726120B2 (en) | System, apparatus and method for providing locality assertion between a security processor and an enclave | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
US7277972B2 (en) | Data processing system with peripheral access protection and method therefor | |
US9158690B2 (en) | Performing zero-copy sends in a networked file system with cryptographic signing | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及系统 | |
CN108491716B (zh) | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 | |
KR101460451B1 (ko) | 프로세스 주소 공간을 제어하는 장치 및 방법 | |
CN116680233A (zh) | 一种文件访问方法、系统、电子设备及机器可读存储介质 | |
US12007906B2 (en) | Method and apparatus for first operating system to access resource of second operating system | |
JP4853671B2 (ja) | アクセス権限判定システム、アクセス権限判定方法及びアクセス権限判定プログラム | |
CN107038388B (zh) | 一种多用户操作系统运行方法、装置及计算机设备 | |
WO2022078119A1 (zh) | 跨设备数据分享方法及相关设备 | |
CN111666579B (zh) | 计算机设备及其访问控制方法和计算机可读介质 | |
CN103164290A (zh) | 应用内存管理方法和装置 | |
CN112711546A (zh) | 内存配置方法、装置及存储介质 | |
CN114154163B (zh) | 漏洞检测方法和装置 | |
US10884673B2 (en) | Virtual one-time programmable memory management | |
US10705983B1 (en) | Transparent conversion of common virtual storage | |
EP4202702A1 (en) | Method and apparatus to set guest physical address mapping attributes for trusted domain | |
CN115357905A (zh) | 一种tee可信应用实例运行方法及系统 | |
CN116561824A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |