CN116136826A - 内存访问方法、芯片、电子设备及计算机可读存储介质 - Google Patents

内存访问方法、芯片、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN116136826A
CN116136826A CN202111361771.XA CN202111361771A CN116136826A CN 116136826 A CN116136826 A CN 116136826A CN 202111361771 A CN202111361771 A CN 202111361771A CN 116136826 A CN116136826 A CN 116136826A
Authority
CN
China
Prior art keywords
address interval
memory
virtual
virtual address
memory access
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.)
Granted
Application number
CN202111361771.XA
Other languages
English (en)
Other versions
CN116136826B (zh
Inventor
黄强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111361771.XA priority Critical patent/CN116136826B/zh
Publication of CN116136826A publication Critical patent/CN116136826A/zh
Application granted granted Critical
Publication of CN116136826B publication Critical patent/CN116136826B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种内存访问方法,涉及终端领域。在进程的启动参数中设置内存自管信息,以在用户空间建立第一虚拟地址区间与第一物理地址区间的映射,当接收到进程的内存访问请求时,从第一虚拟地址区间中选取与内存访问请求对应的第二虚拟地址区间;进入内核空间响应内存访问请求返回第三虚拟地址区间,记录第三虚拟地址区间与第二虚拟地址区间映射的物理地址的映射关系,及基于第三虚拟地址区间为进程分配虚拟内存。本申请实施例还提供一种电子设备、芯片及计算机可读存储介质。本申请通过预留一段映射了物理内存的虚拟地址区间,使得进程分配到的虚拟地址是已建立物理地址映射的,不会触发缺页异常,可实现进程内存访问的确定性。

Description

内存访问方法、芯片、电子设备及计算机可读存储介质
技术领域
本申请涉及终端领域,尤其涉及一种内存访问方法、芯片、电子设备及计算机可读存储介质。
背景技术
在现有的操作系统(如安卓系统)中,内核可以为应用程序进程分配虚拟内存地址,使得应用程序进程可以较方便地访问内存,操心系统可以通过内存映射将虚拟内存地址映射到配物理内存地址。内核可以为应用程序进程维护一张页表,页表记录虚拟内存地址与物理内存地址的映射关系。当应用程序进程访问的虚拟内存地址在页表中查找不到时,操作系统产生一个缺页异常,进入内核空间分配物理内存地址、更新页表,最后再返回用户空间,恢复进程的运行,增加了进程访问内存的时延。
操作系统进入内核空间分配物理内存地址时,可能出现内存分配失败,触发内存回收,内存回收成功后再进行物理内存地址分配,进一步增加了进程访问内存的时延,对于时延要求较低的应用程序使用场景,影响用户的使用体验。
发明内容
有鉴于此,有必要提供一种内存访问方法,通过预留一段映射了物理内存的虚拟地址区间,进程分配到的虚拟地址是已建立物理地址映射的,可实现进程内存访问的确定性。
本申请实施例第一方面公开了一种内存访问方法,应用于电子设备,电子设备安装有操作系统,操作系统包括用户空间与内核空间。内存访问方法包括:在进程的启动参数中设置内存自管的配置信息,其中配置信息用于在用户空间建立第一虚拟地址区间与第一物理地址区间的映射关系;接收进程的内存访问请求,从第一虚拟地址区间中选取一段与内存访问请求对应的第二虚拟地址区间,其中第二虚拟地址区间与第一物理地址区间中的第二物理地址区间建立有映射关系;基于内存访问请求发起系统调用;进入内核空间响应系统调用,返回第三虚拟地址区间;在内核空间记录第三虚拟地址区间与第二物理地址区间的映射关系;基于第三虚拟地址区间响应内存访问请求,为进程分配虚拟内存。
通过采用该技术方案,通过在进程的启动参数中设置内存自管的配置信息,实现在进程本地管理一段映射了物理内存区间的虚拟地址区间,进程后续分配到的虚拟地址是已建立物理地址映射的,不会触发缺页异常,可实现进程内存访问的确定性,可满足部分对内存访问时延有较高要求场景的需求。
在一些实施例中,用户空间包括库函数,内存访问方法还包括:在库函数中建立第一虚拟地址区间与第一物理地址区间的映射关系。
通过采用该技术方案,在库函数中建立第一虚拟地址区间与第一物理地址区间的映射关系,实现在进程本地管理一段映射了物理内存的虚拟地址区间,例如在Libc库中建立第一虚拟地址区间与第一物理地址区间的映射关系。
在一些实施例中,配置信息包括第一物理地址区间,在库函数中建立第一虚拟地址区间与第一物理地址区间的映射关系,包括:库函数基于第一物理地址区间向操作系统发起虚拟内存分配请求;操作系统响应虚拟内存分配请求返回第一虚拟地址区间;库函数建立第一虚拟地址区间与第一物理地址区间的映射关系。
通过采用该技术方案,库函数向操作系统申请为本地管理的物理内存地址区间分配虚拟内存地址区间,再建立物理内存地址区间与虚拟内存地址区间的映射关系,实现在进程本地管理一段映射了物理内存的虚拟地址区间。
在一些实施例中,内存访问请求包括进程请求访问的内存大小信息,从第一虚拟地址区间中选取一段与内存访问请求对应的第二虚拟地址区间,包括:库函数响应内存访问请求,从第一物理地址区间中分配一段与内存大小信息对应的第二物理地址区间;库函数查询与第二物理地址区间映射的第二虚拟地址区间。
通过采用该技术方案,库函数根据进程本次请求访问的内存大小信息,从本地管理的物理内存中分配一段与该内存大小对应的第二物理地址区间,再基于本地管理的物理内存区间与虚拟地址区间的映射关系,查新得到与第二物理地址区间映射的第二虚拟地址区间。
在一些实施例中,进入内核空间响应系统调用,返回第三虚拟地址区间,包括:库函数基于内存访问请求发起系统调用;库函数将第二虚拟地址区间和第二物理地址区间的信息传送给内核空间;内核空间响应系统调用,返回第三虚拟地址区间。
通过采用该技术方案,库函数将申请到的虚拟内存与物理内存的信息传送给内核空间,便于后续内核空间响应系统调用返回的虚拟内存,与库函数传来的虚拟内存共享物理内存。
在一些实施例中,内核空间包括内核,在内核空间记录第三虚拟地址区间与第二物理地址区间的映射关系,包括:内核建立第三虚拟地址区间与第二虚拟地址区间的映射关系;内核在与进程对应的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系。
通过采用该技术方案,对于宏内核架构,由宏内核建立第三虚拟地址区间与第二虚拟地址区间的映射关系,进而得到第三虚拟地址区间与第二物理地址区间的映射关系,同时可由宏内核在内核空间的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系,实现进程的内存数据访问。
在一些实施例中,内核空间包括内核与系统服务层,在内核空间记录第三虚拟地址区间与第二物理地址区间的映射关系,包括:系统服务层建立第三虚拟地址区间与第二虚拟地址区间的映射关系;内核在与进程对应的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系。
通过采用该技术方案,对于微内核架构,由系统服务层建立第三虚拟地址区间与第二虚拟地址区间的映射关系,进而得到第三虚拟地址区间与第二物理地址区间的映射关系,同时可由微内核在内核空间的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系,实现进程的内存数据访问。
在一些实施例中,内存访问方法还包括:库函数记录第三虚拟地址区间与第二虚拟地址区间的映射关系。
通过采用该技术方案,库函数进一步记录第三虚拟地址区间与第二虚拟地址区间的映射关系,便于管理本地可用的物理内存区间与虚拟内存区间。
在一些实施例中,库函数还包括malloc函数,基于第三虚拟地址区间响应内存访问请求,为进程分配虚拟内存,包括:当调用malloc函数为进程分配虚拟内存时,malloc函数将第三虚拟地址区间加入堆内存;malloc函数从添加有第三虚拟地址区间的堆内存中为进程选取一段虚拟地址区间。
通过采用该技术方案,malloc分配的虚拟地址是已经建立了物理地址映射的,不会触发缺页异常,可实现进程内存访问的确定,减小malloc时延的波动性,提高了malloc的最长路径性能,且可克服现有malloc只能在预先配分的地址区间中分配虚拟地址,导致返回的虚拟地址范围是固定的,在安全性上存在一定的限制和隐患的缺陷。
在一些实施例中,从第一虚拟地址区间中选取一段与内存访问请求对应的第二虚拟地址区间,包括:当调用malloc函数为进程分配虚拟内存且堆内存的虚拟地址不足于为进程分配虚拟内存时,从第一虚拟地址区间中选取一段与内存访问请求对应的第二虚拟地址区间。
通过采用该技术方案,当堆内存的虚拟地址无法满足分配需求时,对堆内存进行扩堆,扩堆的虚拟地址是已经与物理地址建立了映射关系的地址,使得访问从堆内存分配的地址不会触发缺页异常,可实现进程内存访问的确定,减小malloc时延的波动性。
在一些实施例中,库函数还包括mmap函数,基于第三虚拟地址区间响应内存访问请求,为进程分配虚拟内存,包括:当调用mmap函数为进程分配虚拟内存时,mmap函数将第三虚拟地址区间返回给进程。
通过采用该技术方案,mmap分配的虚拟地址是已经建立了物理地址映射的,不会触发缺页异常,可实现进程内存访问的确定,减小mmap时延的波动性,提高了mmap的最长路径性能,且可支持多种类型的mmap映射请求,例如匿名私有映射请求、文件映射请求、共享映射请求、指定或未指定起始地址的映射请求等。
在一些实施例中,库函数还包括brk函数,内存访问方法还包括:当调用brk函数进行堆内存扩堆时,brk函数将堆内存的最高地址指针往高地址方向推预设地址区间大小,其中预设地址区间大小等于第三虚拟地址区间的地址区间大小。
通过采用该技术方案,brk扩展得到的虚拟地址是已经建立了物理地址映射的,不会触发缺页异常,可实现进程内存访问的确定,减小brk时延的波动性,提高了brk的最长路径性能,可克服现有brk无法支持对扩展的虚拟地址的确定性时延访问。
在一些实施例中,库函数还包括unmap函数,内存访问方法还包括:当调用unmap函数对进程进行内存释放时,回收为内存访问请求分配的第二虚拟地址区间;在内核空间删除第三虚拟地址区间与第二物理地址区间的映射关系。
通过采用该技术方案,当执行unmap释放内存时,内核空间可以接触第三虚拟地址区间与第二物理地址区间的映射关系,同时用户空间的库函数也可回收为进程分配的第二虚拟地址区间,使得后续可以将第二虚拟地址区间的部分或者全部分配给其他进程,回收操作可以在内核解映射之前或者之后执行。
第二方面,本申请实施例提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面所述的内存访问方法。
第三方面,本申请实施例提供一种电子设备,电子设备包括处理器和存储器,存储器用于存储指令,处理器用于调用存储器中的指令,使得电子设备执行如第一方面所述的内存访问方法。
第四方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面所述的内存访问方法。
第五方面,提供一种装置(如芯片),该装置具有实现上述第一方面所提供的方法中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
可以理解地,上述提供的第二方面所述的计算机可读存储介质,第三方面所述的电子设备,第四方面所述的计算机程序产品,第五方面所述的装置均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1为本申请一实施例提供的一种可能的电子设备的结构示意图;
图2为本申请一实施例提供的一种电子设备的软件结构示意图;
图3为本申请一实施例提供的内存访问方法的系统架构示意图;
图4为本申请另一实施例提供的内存访问方法的系统架构示意图;
图5为本申请一实施例提供的APP通过malloc函数请求分配内存空间的架构示意图;
图6为本申请一实施例提供的APP通过mmap函数请求分配内存空间的架构示意图;
图7为本申请一实施例提供的APP通过brk函数扩展虚拟内存的架构示意图;
图8为本申请一实施例提供的内存访问方法的流程示意图;
图9为本申请实施例提供的另一种可能的电子设备的结构示意图。
具体实施方式
需要说明的是,本申请中“至少一个”是指一个或者多个,“多个”是指两个或多于两个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了便于理解,示例性的给出了部分与本申请实施例相关概念的说明以供参考。
libc:Stantard C Library的简称,为符合ANSI C标准的一个标准函数库,libc库提供C语言中所使用的宏,类型的定义,字符串操作符,数学计算函数以及输入输出函数等。
操作系统(Operation System,OS):管理计算机硬件与软件资源的程序,是计算机系统的内核与基石。
内核:建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备输入/输出(Input/Output,I/O)等。
微内核:是内核的一种精简形式,将与内核集成在一起的系统服务层分离出来,可以根据开发需求加入系统服务选件,实现提供更好的可扩展性和更加有效的应用环境。
宏内核:将操作系统中所有相关系统服务都集成在一个内核中。
内存映射:将虚拟内存地址映射到物理内存地址。内核可以为每个进程维护一张页表(page table),页表记录虚拟内存地址与物理内存地址的映射关系。当进程访问的虚拟内存地址在页表中查不到时,操作系统可产生一个缺页异常,进入内核空间分配物理内存、更新进程的页表,最后再返回用户空间(user space),恢复进程的运行。
用户空间:也称用户态,上层应用程序的活动空间,应用程序的执行需依托于内核提供的资源,例如CPU资源、存储资源、I/O资源等。
内核空间:也称内核态,用于控制计算机的硬件资源,并提供上层应用程序运行的环境。
系统调用:为了使上层应用程序能够访问到计算机的硬件资源,是内核为上层应用程序提供访问的接口。
电子设备可以通过通信网络与其他电子设备或服务器进行通信。电子设备可以包括手机、可折叠电子设备、平板电脑、个人电脑(personal computer,PC)、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种,本申请实施例对电子设备的具体类型不作特殊限制。通信网络可以是有线网络,也可以是无线网络。例如,通信网络可以是局域网(local area networks,LAN),也可以是广域网(wide area networks,WAN),例如互联网。当该通信网络为局域网时,示例性的,该通信网络可以是wifi热点网络、wifi P2P网络、蓝牙网络、zigbee网络或近场通信(near field communication,NFC)网络等近距离通信网络。当该通信网络为广域网时,示例性的,该通信网络可以是第三代移动通信技术(3rd-generation wirelesstelephone technology,3G)网络、第四代移动通信技术(the 4th generation mobilecommunication technology,4G)网络、第五代移动通信技术(5th-generation mobilecommunication technology,5G)网络、未来演进的公共陆地移动网络(public landmobile network,PLMN)或因特网等。
电子设备可以安装一个或多个应用程序。应用程序可以简称应用,为能够实现某项或多项特定功能的软件程序。例如,即时通讯类应用、视频类应用、音频类应用、图像拍摄类应用、云桌面类应用等等。其中,即时通信类应用,例如可以包括短信应用、微信
Figure BDA0003359542770000051
WhatsApp/>
Figure BDA0003359542770000052
连我/>
Figure BDA0003359542770000053
照片分享/>
Figure BDA0003359542770000054
Kakao
Figure BDA0003359542770000055
钉钉/>
Figure BDA0003359542770000056
等。图像拍摄类应用,例如可以包括相机应用(系统相机或第三方相机应用)。视频类应用,例如可以包括/>
Figure BDA0003359542770000057
抖音/>
Figure BDA0003359542770000058
爱奇艺/>
Figure BDA0003359542770000059
腾讯视频/>
Figure BDA00033595427700000510
等等。音频类应用,例如可以包括酷狗音乐/>
Figure BDA00033595427700000511
虾米/>
Figure BDA00033595427700000512
QQ音乐/>
Figure BDA00033595427700000513
等等。以下实施例中提到的应用,可以是电子设备出厂时已安装的系统应用,也可以是用户在使用电子设备的过程中从网络下载或其他电子设备获取的第三方应用。
电子设备包括但不限于搭载
Figure BDA00033595427700000514
安卓/>
Figure BDA00033595427700000515
Windows />
Figure BDA00033595427700000516
Figure BDA00033595427700000517
或其他操作系统。
图1示意了一种电子设备10的结构示意图。
电子设备10可以包括处理器110,外部存储器接口120,内部存储器121,天线1,天线2,移动通信模块130,无线通信模块140,音频模块150,传感器模块160,摄像模组170,显示屏180等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备10的具体限定。在本申请另一些实施例中,电子设备10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器可以为高速缓冲存储器。该存储器可以保存处理器110用过或使用频率较高的指令或数据。如果处理器110需要使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。处理器110可以通过以上至少一种接口连接音频模块、无线通信模块、显示器、摄像头等模块。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备10的结构限定。在本申请另一些实施例中,电子设备10也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备10的无线通信功能可以通过天线1,天线2,移动通信模块130,无线通信模块140,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备10中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块130可以提供应用在电子设备10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块130可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块130还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备输出声音信号,或通过显示屏180显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块130或其他功能模块设置在同一个器件中。
无线通信模块140可以提供应用在电子设备10上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),蓝牙低功耗(bluetooth low energy,BLE),超宽带(ultra wide band,UWB),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块140可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块140经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块140还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备10的天线1和移动通信模块130耦合,天线2和无线通信模块140耦合,使得电子设备10可以通过无线通信技术与网络和其他电子设备通信。该无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。该GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备10可以通过GPU,显示屏180,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏180和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
传感器模组包括触摸传感器、压力传感器、指纹传感器等。摄像模组170包括摄像头。显示屏180用于显示图像,视频等。显示屏180包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organiclight emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emittingdiodes,QLED)等。在一些实施例中,电子设备10可以包括1个或多个显示屏180。
电子设备10可以通过摄像模组170,ISP,视频编解码器,GPU,显示屏180以及应用处理器AP、神经网络处理器NPU等实现摄像功能。
数字信号处理器用于处理数字信号,还可以处理其他数字信号。例如,当电子设备10在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备10可以支持一种或多种视频编解码器。这样,电子设备10可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备10的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备10的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。或将音乐,视频等文件从电子设备传输至外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,该可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备10使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备10的各种功能方法或数据处理。
音频模块150用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。
电子设备10的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备10的软件结构。
图2是本申请实施例的电子设备10的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime,ART)和原生C/C++库,硬件抽象层(HardwareAbstract Layer,HAL)以及内核层。
应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。
窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。
输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
安卓运行时包括核心库和安卓运行时。安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or time,AOT)编译技术和及时(just in time,JIT)编译技术。
核心库主要用于提供基本的Java类库的功能,例如基础数据结构、数学、IO、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了API。
原生C/C++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework),libc,OpenGL ES、SQLite、Webkit等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。OpenGL ES提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备10的应用程序提供轻量级关系型数据库。
硬件抽象层运行于用户空间,对内核层驱动进行封装,向上层提供调用接口。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合捕获拍照场景,示例性说明电子设备10软件以及硬件的工作流程。
当显示屏接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头捕获静态图像或视频。
现有技术中,为了避免APP访问内存时触发缺页异常,一般采用的方案是:在APP启动时预分配一段虚拟地址区间,当进程执行malloc函数请求分配内存时,从该预分配的虚拟地址区间返回一段虚拟内存地址;对于起始地址没有要求的mmap匿名映射,同样从该预分配的虚拟地址区间返回一段虚拟内存地址。现有方案为了避免APP在访问内存时触发缺页异常,返回的虚拟内存地址的地址范围是固定的(落入预分配的虚拟地址区间内),在安全性上存在一定的限制和隐患,且不适用于执行brk函数。
下面结合图3示例性的介绍本发明一实施例提供的内存访问方法的系统架构示意图。
电子设备10可以安装有多个APP,以下以电子设备10的操作系统为微内核架构,电子设备10安装有第一APP与第二APP为例进行说明。第一APP与第二APP可以是电子设备10出厂时已安装的应用,也可以是用户在使用电子设备10的过程中从网络下载或其他电子设备获取的第三方应用。库函数b1包括系统调用接口,第一APP可以通过库函数b1的系统调用接口发起系统调用,实现访问微内核架构k11管理的硬件资源,第二APP同样可以通过库函数b1的系统调用接口发起系统调用,实现访问微内核架构k11管理的硬件资源,例如,库函数b1可以是用户态libc库,硬件资源可以是CPU、内存、I/O等。微内核架构k11包括微内核k1及系统服务层k2。
在一些实施例中,操作系统可以预先为电子设备10上安装的一个或多个APP配置内存自管信息。当电子设备10启动配置有内存自管信息的APP时,操作系统可以在与该APP对应的进程的启动参数中增加内存自管的配置信息。操作系统也可以接受用户指令,为用户指定的APP配置内存自管信息,例如,用户指定的APP可以是一些时延要求低的APP,如聊天应用APP、音视频APP。
在一些实施例中,库函数b1新增虚拟区域管理模块20(模块可以是指能够完成特定功能的一系列计算机程序指令段),虚拟区域管理模块20用于为APP预留指定大小的物理内存,并将该物理内存的物理内存地址与虚拟内存地址建立映射关系。当操作系统为第一APP创建进程P1时,操作系统可以在进程P1的启动参数中增加内存自管的配置信息,配置信息可以定义有操作系统为进程P1设定的自管的物理内存大小、物理内存地址等信息。当进程P1进行初始化时,虚拟区域管理模块20可以向操作系统发起内存映射,请求分配一段虚拟内存地址,虚拟区域管理模块20可以将该段虚拟内存地址映射到自管的物理内存地址。例如虚拟区域管理模块20可以以populate方式将虚拟内存地址映射到自管的物理内存地址。同理,当操作系统为第二APP创建进程P2时,操作系统可以在进程P2的启动参数中增加内存自管的配置信息,配置信息可以定义有操作系统为进程P2设定的自管的物理内存大小、物理内存地址等信息。当进程P2进行初始化时,虚拟区域管理模块20可以向操作系统发起内存映射,请求分配一段虚拟内存地址,及将该段虚拟内存地址映射到自管的物理内存地址。
当进程P1请求申请一块指定大小的内存区域时,可以先向虚拟区域管理模块20申请该指定大小的物理内存,及在系统调用参数中传入该物理内存的内存信息,该物理内存的内存信息可以包括:该物理内存的物理内存地址区间及与该物理内存地址区间对应的虚拟内存地址区间(以下称为第一虚拟内存地址区间),微内核k1可以响应系统调用为进程P1分配一段虚拟地址(以下称为第二虚拟内存地址区间),微内核k1或系统服务层k2可以建立第一虚拟内存地址区间与第二虚拟内存地址区间的映射关系,进而微内核k1可以在页表中记录第二虚拟内存地址区间与物理内存地址区间的映射关系。由于进程分配到的虚拟内存地址是已经建立了物理内存地址映射的虚拟地址,进程访问内存时不会触发缺页异常,且微内核k1分配给进程的虚拟内存地址的地址范围是不固定的,适用范围广,兼容性强。
虚拟区域管理模块20可以根据系统调用返回的第二虚拟内存地址区间,记录下本次微内核k1分配的第二虚拟内存地址区间与自管的第一虚拟内存地址区间的映射关系,该映射关系用于表征第一虚拟内存地址区间及该第一虚拟内存地址区间映射的物理内存地址已被进程P1使用。
在一些实施例中,电子设备10的操作系统也可以宏内核架构,宏内核集成有系统服务层。即可以通过宏内核响应系统调用为进程P1分配第二虚拟内存地址区间,及建立第一虚拟内存地址区间与第二虚拟内存地址区间的映射关系。
如图4所示,库函数b1包括malloc函数、mmap函数及brk函数。malloc函数用于进行内存分配或者扩大堆内存(当堆内存的虚拟地址不足时,扩大堆内存)。mmap函数用于进行内存分配,例如可以将一个文件或者其它对象映射进内存,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对应关系,使得进程可以采用指针的方式读写操作这一段内存,脏页面可以自动回写到对应的文件磁盘上,实现在不调用read、write等函数情形下完成对文件的操作。brk函数用于扩大堆内存。
当进程P1执行malloc函数、mmap函数或brk函数请求分配内存空间或扩大堆内存时,可以通过malloc函数、mmap函数或brk函数向虚拟区域管理模块20申请一段指定大小的虚拟内存地址a_1,该段虚拟内存地址a_1与一段物理内存地址a_2建立有映射关系。malloc函数、mmap函数或brk函数可以将申请得到的虚拟内存地址a_1的地址信息作为sys_mmap或sys_brk的参数发起系统调用,微内核k1可以响应系统调用为malloc函数、mmap函数或brk函数的分配请求分配一段虚拟内存地址a_3,及建立虚拟内存地址a_3与虚拟内存地址a_1的映射关系,由于虚拟内存地址a_1与一段物理内存地址a_2建立有映射关系,即微内核k1分配的虚拟内存地址a_3与该段物理内存地址a_2亦具有映射关系,微内核k1维护的页表可以记录有虚拟内存地址a_3与物理内存地址a_2的映射关系。虚拟区域管理模块20可以根据系统调用返回的虚拟内存地址a_3,记录下本次微内核k1为malloc函数、mmap函数或brk函数的分配请求分配的虚拟内存地址a_3与虚拟内存地址a_1的映射关系。
在一些实施例中,库函数b1还包括unmap函数,unmap函数用于释放内存。当进程P1执行unmap函数时,虚拟区域管理模块20可以对虚拟内存地址a_1执行回收操作,微内核k1可以在页表进行虚拟内存地址a_3与物理内存地址a_2的解映射操作,即删除页表所记录的虚拟内存地址a_3与物理内存地址a_2的映射关系。
下面结合图5示例性的介绍本发明一实施例提供的APP通过malloc函数请求分配内存空间的架构示意图。
电子设备10可以安装有多个APP,以下以电子设备10的操作系统为微内核架构,电子设备10安装有第一APP,库函数b1包括虚拟区域管理模块20为例进行说明,当电子设备10开启第一APP时,操作系统可以为第一APP创建进程P1。进程P1通过库函数b1的系统调用接口发起系统调用,以向微内核k1请求分配内存空间。
当操作系统为第一APP创建进程P1时,操作系统可以在进程P1的启动参数中增加内存自管的配置信息,配置信息定义有操作系统为进程P1设定的自管的物理内存大小、物理内存地址等信息。当进程P1进行初始化时,虚拟区域管理模块20可以向操作系统发起内存映射,请求分配一段虚拟内存地址,虚拟区域管理模块20可以将该段虚拟内存地址映射到自管的物理内存地址。库函数b1的系统调用部分修改了sys_mmap、sys_brk的参数信息,使得malloc函数可以将从虚拟区域管理模块20申请得到的虚拟内存地址的地址信息作为sys_mmap或sys_brk的参数发起系统调用,虚拟内存地址的地址信息可以包括虚拟内存地址区间及与该虚拟内存地址区间映射的物理内存地址区间。微内核k1或系统服务层k2新增对从虚拟区域管理模块20申请得到的虚拟内存地址的处理,例如建立微内核k1分配的虚拟内存地址与从虚拟区域管理模块20申请得到的虚拟内存地址的映射关系。
进程P1执行malloc函数请求申请一段指定大小的虚拟内存,若malloc函数管理的堆内存有足够的虚拟地址区间进行分配,从堆内存中分配该指定大小的虚拟内存,返回分配的虚拟内存地址区间。若malloc函数管理的堆内存的虚拟地址区间不足,无法满足本次分配需求,需要对堆内存进行扩堆,单次扩堆的大小可以根据实际需求进行预先设定,也可以根据进程P1所申请的虚拟内存大小,或当前堆内存的虚拟地址区间的不足数量进行设定。
malloc函数向虚拟区域管理模块20申请预设大小的虚拟地址区间a_11(单次扩堆的大小),该段虚拟内存地址a_11与一段物理内存地址a_12建立有映射关系。malloc函数可以将申请得到的虚拟内存地址a_11的地址信息作为sys_mmap或sys_brk的参数发起系统调用。
在一些实施例中,malloc函数可以通过两种方式进行扩堆:sys_mmap与sys_brk,sys_mmap是指mmap系统调用,sys_brk是指brk系统调用。malloc函数可以根据扩堆的大小来决定使用哪种方式,当扩堆的大小小于或等于128KB时,使用sys_brk,当扩堆的大小大于128KB时,使用sys_mmap。
微内核k1可以响应系统调用分配一段虚拟内存地址a_13,及建立虚拟内存地址a_13与虚拟内存地址a_11的映射关系,由于虚拟内存地址a_11与一段物理内存地址a_12建立有映射关系,即微内核k1分配的虚拟内存地址a_13与该段物理内存地址a_12亦具有映射关系,微内核k1为进程P1维护的页表可以记录有虚拟内存地址a_13与物理内存地址a_12的映射关系。虚拟区域管理模块20可以根据系统调用返回的虚拟内存地址a_13,记录下本次微内核k1分配的虚拟内存地址a_13与虚拟内存地址a_11的映射关系。malloc函数将系统调用返回的虚拟内存地址a_13加入堆内存管理,从扩堆后的堆内存中分配该指定大小的虚拟内存,并返回给进程P1。
下面结合图6示例性的介绍本发明一实施例提供的APP通过mmap函数请求分配内存空间的架构示意图。
电子设备10可以安装有多个APP,以下以电子设备10的操作系统为微内核架构,电子设备10安装有第一APP,库函数b1包括虚拟区域管理模块20为例进行说明,当电子设备10开启第一APP时,操作系统可以为第一APP创建进程P1。进程P1通过库函数b1的系统调用接口发起系统调用,以向微内核k1请求分配内存空间。
当操作系统为第一APP创建进程P1时,操作系统可以在进程P1的启动参数中增加内存自管的配置信息,配置信息定义有操作系统为进程P1设定的自管的物理内存大小、物理内存地址等信息。当进程P1进行初始化时,虚拟区域管理模块20可以向操作系统发起内存映射,请求分配一段虚拟内存地址,虚拟区域管理模块20可以将该段虚拟内存地址映射到自管的物理内存地址。库函数b1的系统调用部分修改了sys_mmap、sys_brk的参数信息,使得malloc函数可以将从虚拟区域管理模块20申请得到的虚拟内存地址的地址信息作为sys_mmap或sys_brk的参数发起系统调用,虚拟内存地址的地址信息可以包括虚拟内存地址区间及与该虚拟内存地址区间映射的物理内存地址区间。微内核k1或系统服务层k2新增对从虚拟区域管理模块20申请得到的虚拟内存地址的处理,例如建立微内核k1分配的虚拟内存地址与从虚拟区域管理模块20申请得到的虚拟内存地址的映射关系。
进程P1执行mmap函数请求申请一段指定大小的虚拟内存,mmap函数向虚拟区域管理模块20申请该指定大小的虚拟地址区间a_21,该段虚拟内存地址a_21与一段物理内存地址a_22建立有映射关系。mmap函数可以将申请得到的虚拟内存地址a_21的地址信息作为sys_mmap的参数发起系统调用。
微内核k1可以响应系统调用分配一段虚拟内存地址a_23,及建立虚拟内存地址a_23与虚拟内存地址a_21的映射关系,由于虚拟内存地址a_21与一段物理内存地址a_22建立有映射关系,即微内核k1分配的虚拟内存地址a_23与该段物理内存地址a_22亦具有映射关系,微内核k1为进程P1维护的页表可以记录有虚拟内存地址a_23与物理内存地址a_22的映射关系。虚拟区域管理模块20可以根据系统调用返回的虚拟内存地址a_23,记录下本次微内核k1分配的虚拟内存地址a_23与虚拟内存地址a_21的映射关系。mmap函数可以将系统调用返回的虚拟内存地址a_23,返回给进程P1。
下面结合图7示例性的介绍本发明一实施例提供的APP通过brk函数扩展虚拟内存的架构示意图。
电子设备10可以安装有多个APP,以下以电子设备10的操作系统为微内核架构,电子设备10安装有第一APP,库函数b1包括虚拟区域管理模块20为例进行说明,当电子设备10开启第一APP时,操作系统可以为第一APP创建进程P1。进程P1通过库函数b1的系统调用接口发起系统调用,以向微内核k1请求分配内存空间。
当操作系统为第一APP创建进程P1时,操作系统可以在进程P1的启动参数中增加内存自管的配置信息,配置信息定义有操作系统为进程P1设定的自管的物理内存大小、物理内存地址等信息。当进程P1进行初始化时,虚拟区域管理模块20可以向操作系统发起内存映射,请求分配一段虚拟内存地址,虚拟区域管理模块20可以将该段虚拟内存地址映射到自管的物理内存地址。库函数b1的系统调用部分修改了sys_mmap、sys_brk的参数信息,使得malloc函数可以将从虚拟区域管理模块20申请得到的虚拟内存地址的地址信息作为sys_mmap或sys_brk的参数发起系统调用,虚拟内存地址的地址信息可以包括虚拟内存地址区间及与该虚拟内存地址区间映射的物理内存地址区间。微内核k1或系统服务层k2新增对从虚拟区域管理模块20申请得到的虚拟内存地址的处理,例如建立微内核k1分配的虚拟内存地址与从虚拟区域管理模块20申请得到的虚拟内存地址的映射关系。
进程P1执行brk函数请求申请一段指定大小的虚拟内存,以对堆内存进行扩堆。brk函数向虚拟区域管理模块20申请该指定大小的虚拟地址区间a_31,该段虚拟内存地址a_31与一段物理内存地址a_32建立有映射关系。brk函数可以将申请得到的虚拟内存地址a_31的地址信息作为sys_brk的参数发起系统调用。
微内核k1可以响应系统调用分配一段虚拟内存地址a_33,及建立虚拟内存地址a_33与虚拟内存地址a_31的映射关系,由于虚拟内存地址a_31与一段物理内存地址a_32建立有映射关系,即微内核k1分配的虚拟内存地址a_33与该段物理内存地址a_32亦具有映射关系,微内核k1为进程P1维护的页表可以记录有虚拟内存地址a_33与物理内存地址a_32的映射关系。虚拟区域管理模块20可以根据系统调用返回的虚拟内存地址a_33,记录下本次微内核k1分配的虚拟内存地址a_33与虚拟内存地址a_31的映射关系。brk函数可以基于系统调用返回的虚拟内存地址a_33,将堆内存的最高地址指针往高地址推指定大小,实现扩展堆内存的虚拟地址区间。
参照图8所示,本申请实施例提供一种内存访问方法,应用于电子设备10,电子设备10安装有操作系统及至少一个APP,操作系统包括用户空间与内核空间,当电子设备10开启第一APP时,操作系统可以为第一APP创建进程P1。本实施例中,内存访问方法可以包括:
81、在进程P1的启动参数中设置内存自管的配置信息。
在一些实施例中,当操作系统为第一APP配置内存自管信息时,操作系统可以在进程P1的启动参数中设置内存自管的配置信息。用户空间包括库函数b1,库函数b1可以包括虚拟区域管理模块20及系统调用接口,虚拟区域管理模块20可为第一APP预留指定大小的物理内存。例如,操作系统为第一APP配置的自管物理内存为第一物理地址区间,虚拟区域管理模块20可以基于第一物理地址区间向操作系统发起虚拟内存分配请求,操作系统响应虚拟内存分配请求返回第一虚拟地址区间,虚拟区域管理模块20可以建立第一虚拟地址区间与第一物理地址区间的映射关系。
82、接收进程的内存访问请求,从第一虚拟地址区间中选取一段与内存访问请求对应的第二虚拟地址区间。
在一些实施例中,内存访问请求包括进程请求访问的内存大小信息,虚拟区域管理模块20可以响应内存访问请求,从第一物理地址区间中分配一段与内存大小信息对应的第二物理地址区间,第二物理地址区间与第二虚拟地址区间建立有映射关系,进而实现为内存访问请求分配第二虚拟地址区间。
83、基于内存访问请求发起系统调用。
在一些实施例中,库函数b1可以基于内存访问请求发起系统调用,库函数b1可以通过系统调用接口传送第二虚拟地址区间与第二物理地址区间的信息至内核空间。
84、进入内核空间响应系统调用,返回第三虚拟地址区间。
在一些实施例中,对于微内核架构,内核空间可以包括微内核k1及系统服务层k2。微内核k1可以响应系统调用,返回第三虚拟地址区间。
85、在内核空间记录第三虚拟地址区间与第二物理地址区间的映射关系。
在一些实施例中,微内核k1可以在与进程P1对应的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系。
在一些实施例中,对于宏内核架构,可以由内核建立第三虚拟地址区间与第二虚拟地址区间的映射关系,及在与进程P1对应的页表中记录第三虚拟地址区间与第二物理地址区间的映射关系。
在一些实施例中,库函数b1同样可以记录第三虚拟地址区间与第二虚拟地址区间的映射关系,实现记录第二虚拟地址区间已被某一进程占用,便于管理本地可用的物理内存区间与虚拟内存区间。
86、基于第三虚拟地址区间响应内存访问请求,为进程分配虚拟内存。
在一些实施例中,当进程P1调用malloc函数分配虚拟内存时,malloc函数可以将系统调用返回的第三虚拟内存地址加入堆内存管理,从扩堆后的堆内存中分配与内存访问请求匹配的虚拟内存,并返回给进程P1。当进程P1调用mmap函数分配虚拟内存时,mmap函数可以将系统调用返回的第三虚拟内存地址,返回给进程P1。
在一些实施例中,当进程P1调用brk函数进行堆内存扩堆时,brk函数可以将堆内存的最高地址指针往高地址方向推预设地址区间大小,其中预设地址区间大小等于第三虚拟地址区间的地址区间大小。
在一些实施例中,当进程P1调用unmap函数进行内存释放时,库函数b1可以回收为进程P1分配的第二虚拟地址区间,同时宏内核或微内核可以在删除页表中记录的第三虚拟地址区间与第二物理地址区间的映射关系。
上述内存访问方法,通过预留一段映射了物理内存的虚拟地址区间,使得进程分配到的虚拟地址是已经建立了物理地址映射的,不会触发缺页异常,可以实现进程内存访问的确定性,满足时延确定性场景的需求,可以通过修改Libc库中内存分配的相关接口来实现,可对现有内存分配接口实现无差别适配,且不需要修改APP的代码,系统兼容性强。
参考图9,为本申请实施例提供的电子设备10的硬件结构示意图。如图9所示,电子设备10可以包括处理器110、存储器210及通信总线310。存储器210用于存储一个或多个计算机程序410。一个或多个计算机程序410被配置为被该处理器110执行。该一个或多个计算机程序410包括指令,上述指令可以用于实现在电子设备10中执行如图8所述的内存访问方法。
可以理解的是,本实施例示意的结构并不构成对电子设备10的具体限定。在另一些实施例中,电子设备10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的内存访问方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的内存访问方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的内存访问方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例是示意性的,例如,该模块或单元的划分,为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。

Claims (16)

1.一种内存访问方法,应用于电子设备,所述电子设备安装有操作系统,所述操作系统包括用户空间与内核空间,其特征在于,所述内存访问方法包括:
在进程的启动参数中设置内存自管的配置信息,其中所述配置信息用于在所述用户空间建立第一虚拟地址区间与第一物理地址区间的映射关系;
接收所述进程的内存访问请求,从所述第一虚拟地址区间中选取一段与所述内存访问请求对应的第二虚拟地址区间,其中所述第二虚拟地址区间与所述第一物理地址区间中的第二物理地址区间建立有映射关系;
基于所述内存访问请求发起系统调用;
进入所述内核空间响应所述系统调用,返回第三虚拟地址区间;
在所述内核空间记录所述第三虚拟地址区间与所述第二物理地址区间的映射关系;
基于所述第三虚拟地址区间响应所述内存访问请求,为所述进程分配虚拟内存。
2.如权利要求1所述的内存访问方法,其特征在于,所述用户空间包括库函数,所述内存访问方法还包括:
在所述库函数中建立所述第一虚拟地址区间与所述第一物理地址区间的映射关系。
3.如权利要求2所述的内存访问方法,其特征在于,所述配置信息包括所述第一物理地址区间,所述在所述库函数中建立所述第一虚拟地址区间与所述第一物理地址区间的映射关系,包括:
所述库函数基于所述第一物理地址区间向所述操作系统发起虚拟内存分配请求;
所述操作系统响应所述虚拟内存分配请求返回所述第一虚拟地址区间;
所述库函数建立所述第一虚拟地址区间与所述第一物理地址区间的映射关系。
4.如权利要求2或3所述的内存访问方法,其特征在于,所述内存访问请求包括所述进程请求访问的内存大小信息,所述从所述第一虚拟地址区间中选取一段与所述内存访问请求对应的第二虚拟地址区间,包括:
所述库函数响应所述内存访问请求,从所述第一物理地址区间中分配一段与所述内存大小信息对应的第二物理地址区间;
所述库函数查询与所述第二物理地址区间映射的第二虚拟地址区间。
5.如权利要求2至4中任意一项所述的内存访问方法,其特征在于,所述进入所述内核空间响应所述系统调用,返回第三虚拟地址区间,包括:
所述库函数基于所述内存访问请求发起系统调用;
所述库函数将所述第二虚拟地址区间和所述第二物理地址区间的信息传送给所述内核空间;
所述内核空间响应所述系统调用,返回所述第三虚拟地址区间。
6.如权利要求5所述的内存访问方法,其特征在于,所述内核空间包括内核,所述在所述内核空间记录所述第三虚拟地址区间与所述第二物理地址区间的映射关系,包括:
所述内核建立所述第三虚拟地址区间与所述第二虚拟地址区间的映射关系;
所述内核在与所述进程对应的页表中记录所述第三虚拟地址区间与所述第二物理地址区间的映射关系。
7.如权利要求5所述的内存访问方法,其特征在于,所述内核空间包括内核与系统服务层,所述在所述内核空间记录所述第三虚拟地址区间与所述第二物理地址区间的映射关系,包括:
所述系统服务层建立所述第三虚拟地址区间与所述第二虚拟地址区间的映射关系;
所述内核在与所述进程对应的页表中记录所述第三虚拟地址区间与所述第二物理地址区间的映射关系。
8.如权利要求2至7中任意一项所述的内存访问方法,其特征在于,所述内存访问方法还包括:
所述库函数记录所述第三虚拟地址区间与所述第二虚拟地址区间的映射关系。
9.如权利要求2至8中任意一项所述的内存访问方法,其特征在于,所述库函数还包括malloc函数,所述基于所述第三虚拟地址区间响应所述内存访问请求,为所述进程分配虚拟内存,包括:
当调用所述malloc函数为所述进程分配虚拟内存时,所述malloc函数将所述第三虚拟地址区间加入堆内存;
所述malloc函数从添加有所述第三虚拟地址区间的堆内存中为所述进程选取一段虚拟地址区间。
10.如权利要求9所述的内存访问方法,其特征在于,所述从所述第一虚拟地址区间中选取一段与所述内存访问请求对应的第二虚拟地址区间,包括:
当调用所述malloc函数为所述进程分配虚拟内存且所述堆内存的虚拟地址不足于为所述进程分配虚拟内存时,从所述第一虚拟地址区间中选取一段与所述内存访问请求对应的第二虚拟地址区间。
11.如权利要求2至8中任意一项所述的内存访问方法,其特征在于,所述库函数还包括mmap函数,所述基于所述第三虚拟地址区间响应所述内存访问请求,为所述进程分配虚拟内存,包括:
当调用所述mmap函数为所述进程分配虚拟内存时,所述mmap函数将所述第三虚拟地址区间返回给所述进程。
12.如权利要求2至8中任意一项所述的内存访问方法,其特征在于,所述库函数还包括brk函数,所述内存访问方法还包括:
当调用所述brk函数进行堆内存扩堆时,所述brk函数将所述堆内存的最高地址指针往高地址方向推预设地址区间大小,其中所述预设地址区间大小等于所述第三虚拟地址区间的地址区间大小。
13.如权利要求2至8中任意一项所述的内存访问方法,其特征在于,所述库函数还包括unmap函数,所述内存访问方法还包括:
当调用所述unmap函数对所述进程进行内存释放时,回收为所述内存访问请求分配的第二虚拟地址区间;
在所述内核空间删除所述第三虚拟地址区间与所述第二物理地址区间的映射关系。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至权利要求13中任一项所述的内存访问方法。
15.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述电子设备执行如权利要求1至权利要求13中任一项所述的内存访问方法。
16.一种芯片,与电子设备中的存储器耦合,其特征在于,所述芯片用于控制所述电子设备执行如权利要求1至权利要求13中任一项所述的内存访问方法。
CN202111361771.XA 2021-11-17 2021-11-17 内存访问方法、芯片、电子设备及计算机可读存储介质 Active CN116136826B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111361771.XA CN116136826B (zh) 2021-11-17 2021-11-17 内存访问方法、芯片、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111361771.XA CN116136826B (zh) 2021-11-17 2021-11-17 内存访问方法、芯片、电子设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN116136826A true CN116136826A (zh) 2023-05-19
CN116136826B CN116136826B (zh) 2024-07-30

Family

ID=86326904

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111361771.XA Active CN116136826B (zh) 2021-11-17 2021-11-17 内存访问方法、芯片、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116136826B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117609122A (zh) * 2023-11-03 2024-02-27 摩尔线程智能科技(上海)有限责任公司 一种数据传输系统及方法、电子设备和存储介质
CN118550735A (zh) * 2024-07-30 2024-08-27 天翼云科技有限公司 一种提升高性能计算的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729710A (en) * 1994-06-22 1998-03-17 International Business Machines Corporation Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system
US20090307363A1 (en) * 2008-06-09 2009-12-10 Fortinet, Inc. A Delaware Corporation Network protocol reassembly accelaration
CN102053929A (zh) * 2010-12-17 2011-05-11 天津曙光计算机产业有限公司 一种基于Linux系统DM层的IO缓存操作方法和系统
WO2016033718A1 (zh) * 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729710A (en) * 1994-06-22 1998-03-17 International Business Machines Corporation Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system
US20090307363A1 (en) * 2008-06-09 2009-12-10 Fortinet, Inc. A Delaware Corporation Network protocol reassembly accelaration
CN102053929A (zh) * 2010-12-17 2011-05-11 天津曙光计算机产业有限公司 一种基于Linux系统DM层的IO缓存操作方法和系统
WO2016033718A1 (zh) * 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
姜亚华: "《精通Linux内核 智能设备开发核心技术》", 31 January 2020, 机械工业出版社, pages: 115 - 121 *
李佩钊;姚国良;: "嵌入式Linux内核的虚拟地址空间映射的实现", 电子器件, no. 02, 15 April 2008 (2008-04-15), pages 634 - 637 *
林璟锵: "《密码软件实现与密钥安全》", 31 May 2021, 机械工业出版社, pages: 59 - 62 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117609122A (zh) * 2023-11-03 2024-02-27 摩尔线程智能科技(上海)有限责任公司 一种数据传输系统及方法、电子设备和存储介质
CN118550735A (zh) * 2024-07-30 2024-08-27 天翼云科技有限公司 一种提升高性能计算的方法及装置

Also Published As

Publication number Publication date
CN116136826B (zh) 2024-07-30

Similar Documents

Publication Publication Date Title
EP4002108B1 (en) Application start method and electronic device
CN116136826B (zh) 内存访问方法、芯片、电子设备及计算机可读存储介质
CN113326498B (zh) 权限复用方法、基于权限复用的资源访问方法及相关设备
EP4390690A1 (en) Notification processing method, chip, electronic device, and computer readable storage medium
CN114968384B (zh) 一种功能调用方法和装置
CN116089056B (zh) 用于图像绘制的方法及相关装置
CN112860445B (zh) 一种快应用与原生应用间数据共享的方法及终端
CN116257262A (zh) 内核升级方法、芯片、电子设备及计算机可读存储介质
US20230308604A1 (en) Video call making method, terminal device, and storage medium
US20230350738A1 (en) Method for Reusing Shared Library and Electronic Device
CN117729561B (zh) 系统升级方法、终端及存储介质
CN117785345A (zh) 应用显示方法及相关设备
WO2024193526A1 (zh) 一种备份方法及装置
CN118585498A (zh) 管理缩略图的方法及相关装置
CN117527822A (zh) 数据同步方法、电子设备及系统
CN118227222A (zh) 应用管理方法、服务器、电子设备及系统
CN117724825A (zh) 一种界面显示方法及电子设备
CN117520279A (zh) 文件存储的方法及电子设备
CN118277120A (zh) 一种管理系统服务的方法及相关装置
CN117742846A (zh) 服务卡片的添加方法、电子设备及计算机可读存储介质
CN118034823A (zh) 显示方法、电子设备、存储介质及程序产品
CN118210496A (zh) 一种跨语言交互方法及相关装置
CN116954743A (zh) 一种应用启动方法及装置
CN117931384A (zh) 一种业务访问的方法、系统、电子设备及存储介质
CN115981830A (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