CN111274040B - 一种内存管理方法和装置 - Google Patents
一种内存管理方法和装置 Download PDFInfo
- Publication number
- CN111274040B CN111274040B CN202010098083.8A CN202010098083A CN111274040B CN 111274040 B CN111274040 B CN 111274040B CN 202010098083 A CN202010098083 A CN 202010098083A CN 111274040 B CN111274040 B CN 111274040B
- Authority
- CN
- China
- Prior art keywords
- address
- virtual
- physical
- memory
- physical address
- 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
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/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/5011—Allocation 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/5016—Allocation 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种内存管理的方法,该方法包括:可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址。本发明还公开了一种内存管理的装置。本发明提供的方法和装置能够提高PLC系统的安全性且便于实现。
Description
技术领域
本发明涉及PLC领域,尤其涉及PLC领域中一种内存管理方法和装置。
背景技术
可编程逻辑控制器PLC广泛应用于工业自动化领域,是企业生产自动化运行的关键设备。当前PLC系统的安全性受到业界的高度重视。
在现有技术中,结合可信计算技术和通用PLC技术研发了可信PLC控制器,可信PLC控制器采用双核处理器,核0采用微内核操作系统,实现可信功能,简称可信核;核1采用其他操作系统,实现PLC功能,简称PLC核。
可信核如何访问PLC核的数据从而保证PLC系统的安全性是当前亟需解决的问题。
发明内容
本发明要解决的技术问题是提供一种内存管理方法,提高了PLC系统的安全性且便于实现。
为了解决上述技术问题,本发明实施例提供了一种内存管理方法,应用于可信PLC中,包括:
可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;
根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;
其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;
若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;
其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
一种示例性的实施例中,上述方法还具有下面特点:
所述可信映射内部函数具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射;
所述根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
一种示例性的实施例中,上述方法还具有下面特点:
所述调用段内存访问接口函数k次,依次得到k个虚拟地址包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
一种示例性的实施例中,上述方法还具有下面特点:
所述申请首地址为y的nMB连续空闲的虚拟地址包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
一种示例性的实施例中,上述方法还具有下面特点:
所述申请与所述物理地址对应的mMB的物理内存包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
一种示例性的实施例中,上述方法还具有下面特点:
所述建立nMB虚拟地址与mMB物理地址间的映射关系包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
一种示例性的实施例中,上述方法还具有下面特点:
所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
一种示例性的实施例中,上述方法还具有下面特点:
其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述方法还包括:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
为了解决上述问题,本发明还提供了一种内存管理装置,应用于可信PLC中,包括:存储器和处理器;
所述存储器,用于保存用于内存管理的程序;
所述处理器,用于读取执行所述用于内存管理的程序,执行如下操作:
可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;
根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;
其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;
若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;
其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
一种示例性的实施例中,上述装置还具有下面特点:
所述可信映射内部函数具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射;
所述根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
一种示例性的实施例中,上述装置还具有下面特点:
所述调用段内存访问接口函数k次,依次得到k个虚拟地址包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
一种示例性的实施例中,上述装置还具有下面特点:
所述申请首地址为y的nMB连续空闲的虚拟地址包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
一种示例性的实施例中,上述装置还具有下面特点:
所述申请与所述物理地址对应的mMB的物理内存包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
一种示例性的实施例中,上述装置还具有下面特点:
所述建立nMB虚拟地址与mMB物理地址间的映射关系包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
一种示例性的实施例中,上述装置还具有下面特点:
所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
一种示例性的实施例中,上述装置还具有下面特点:
其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述处理器,用于读取执行所述用于内存管理的程序,还执行如下操作:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
综上,本发明实施例提供一种内存管理方法和装置,实现了可信核通过虚拟地址对PLC核的全部内存的只读访问,提高了PLC系统的安全性且便于实现。
附图说明
图1为根据本发明实施例一的内存管理方法的示意图。
图2为根据本发明实施例二的PLC控制器结构框图。
图3为根据本发明实施例二的内存管理方法的流程图。
图4为根据本发明实施例二的物理内存访问权限的示意图。
图5为根据本发明实施例二的可信内存映射流程图。
图6为根据本发明实施例二的段映射的流程图。
图7为根据本发明实施例三的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
图1为本发明实施例的内存管理方法的示意图,如图1所示,本实施例的内存管理方法包括:
S11、可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址。
一种示例性的实施例中,可信映射内部函数可以用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射。
一种示例性的实施例中,可信映射内部函数可以具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射。
一种示例性的实施例中,根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,可以包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
一种示例性的实施例中,所述调用段内存访问接口函数k次,依次得到k个虚拟地址可以包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
一种示例性的实施例中,所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,可以包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
需要说明的是,一般物理地址记为例如16进制0x 18700000的形式,其中,16进制数0x100000等于1MB。
一种示例性的实施例中,所述申请首地址为y的nMB连续空闲的虚拟地址可以包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
一种示例性的实施例中,所述申请与所述物理地址对应的mMB的物理内存可以包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
其中,步骤51包括:
从所述物理地址开始查找所有外设,若所述物理地址对应的1MB物理内存未使用,通过内核申请该1MB段内存;
步骤52包括:
从所述物理地址+xMB开始查找所有的外设,若所述物理地址+xMB对应的1MB物理内存未使用,通过内核申请该1MB段内存。
一种示例性的实施例中,所述建立nMB虚拟地址与mMB物理地址间的映射关系可以包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
一种示例性的实施例中,所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,可以包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
其中,1MB=1*1024*1024,mod表示取余函数,[]表示取整函数,例如:
mod(1MB/2MB)=1;[1MB/2MB]=0;
mod(2MB/2MB)=0;[2MB/2MB]=1;
若x为0x 200400,即为2*1024*1024+1024,则mod(x/2MB)不为0,那么y=4MB。
一种示例性的实施例中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
一种示例性的实施例中,其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述方法还包括:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
例如第一外设的物理地址为[0x04000000,0x10000000),第二外设的物理地址为[0x90000000,0xC0000000)。
需要说明的是,可信应用是可信核微内核操作系统之上的应用程序,微内核只支持虚拟内存管理,即应用程序只能使用虚拟内存,不能直接操作物理内存,这样做应用程序不可能越界去破坏微内核,提高了安全性。
并且可信应用程序只能通过虚拟地址只读访问PLC核,虚拟地址连续的话,可信核就面对一片连续的地址空间(中间没有跳跃),更容易设计可信应用程序。
S12、若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址。
一种示例性的实施例中,第一虚拟地址与第二虚拟地址连续包括:
第一虚拟地址与第一内存长度之和等于第二虚拟地址。
实施例二
图3为本发明实施例的内存管理方法的流程图。如图3所示,包括步骤如下:
步骤301:在可信PLC的微内核操作系统的内核中增加外设1和外设2。
可信PLC控制器(如图2所示)物理内存1024MB。该可信PLC控制器要求其中前64MB内存归可信核使用,PLC核禁止访问;剩下内存全部归PLC核使用。外设1的物理地址可以为物理地址为[0x04000000,0x10000000)(即图4物理内存访问权限图的③MEM3),把这192MB内存定义成外设的原因是微内核在运行时不会使用外设地址。在微内核操作系统内核中增加外设2,外设2对应这768MB,外设2的物理地址为[0x90000000,0xC0000000)(即图4物理内存访问权限图的④MEM4),把这768MB内存定义成外设的原因是微内核在运行时不会使用外设地址。
步骤302:可信初始线程在初始化时调用kexin_map,得到一个虚拟地址,作为可信核只读访问PLC核的起始地址。
如图5所示,kexin_map函数的主要逻辑为:
(1)调用kexin_map_inner,base_addr=0x04000000,len=192MB,writeable=0(表示只读),得到虚拟地址addr1。
(2)调用kexin_map_inner,base_addr=0x90000000,len=768MB,writeable=0(表示只读),得到虚拟地址addr2。
(3)检查虚拟地址addr1和addr2的连续性。如果addr1+192MB=addr2,则返回虚拟地址addr1,否则返回错误。
kexin_map函数调用kexin_map_inner的base_addr=0x04000000为外设1的起始地址,调用kexin_map_inner的base_addr=0x90000000为外设2的起始地址。
如图5所示,kexin_map_inner函数的原型为:
unsigned int kexin_map_inner(unsigned int base_addr,unsigned int len,unsigned int cacheable,unsigned int writeable)
kexin_map_inner函数的主要逻辑为:
(1)检查参数len,len必须为2MB的整数倍。
(2)根据len计算出总共多少MB,赋给局部变量t,令局部变量k=t/2。
(3)调用os_api_sect_map映射2MB内存,得到一个虚拟地址。
需要说明的是,为方便说明,os_api_sect_map的对应参数增加后缀1,与kexin_map_inner中参数存在下面关系:
base_addr_1=base_addr+k*2MB
len_1=2MB
cacheable_1=cacheable
writeable_1=writeable
(4)重复(3)k次,得到k个虚拟地址。
(5)检查k个虚拟地址的连续性,如果连续,返回第一个虚拟地址,否则返回错误。
os_api_sect_map的函数原型为:
unsigned int os_api_sect_map(unsigned int base_addr,unsigned int len,unsigned int cacheable,unsigned int writeable)
其中参数base_addr指定物理地址,参数len指定内存长度,参数cacheable指定cache属性,参数writeable指定读写属性。
需要说明的是os_api_sect_map为段内存访问接口函数,因为在映射768MB的外设空间时如果采用4kb映射,需要操作196608次,占用196608个page内核对象,效率低下。采用1MB的段映射时,执行768次映射,占用768个sect内核对象,效率高且占用资源少。
当调用方调用os_api_sect_map时将生成一个IPC消息。该IPC消息标志为OS_API_SECT_MAP(=23),该IPC消息内容依次为:base_addr(物理地址)、len(内存长度)、cacheable(是否cache)、writeable(是否可写)。之后os_api_sect_map调用CallWithMRs发送该IPC消息给管理线程,并被阻塞直到收到应答。
OS_API_SECT_MAP(=23)对应的处理函数是os_lib_sect_map。该函数的流程如图6段映射流程图所示,具体如下:
(1)从IPC消息中解析出base_addr(物理地址)、len(内存长度)、cacheable(是否cache)、writeable(是否可写)这些参数。
(2)检查参数base_addr,base_addr不等0,并且是1MB的整数倍,否则返回错误。
(3)检查参数len。要求len不等0,并且是1MB的整数倍,否则返回错误。
需要说明的是,在上述kexin_map_inner调用os_api_sect_map映射2MB内存的步骤中,
(4)根据len计算出总共多少MB,赋给局部变量m。
例如,len是1MB的整数倍,此处计算公式为m=len/(1024*1024)。
1MB=1024*1024字节。比如len=768*1024*1024B,即len=768MB,所以m=768。
(5)对于局部变量n,如果m为偶数则n=m;否则n=m+1。也就是保证n为偶数。
(6)申请nMB的虚拟内存地址(n必须为偶数)。申请方法为:
(a1)找到一个空闲的虚拟地址(记为x),将其按照2MB边界对齐(记为y,y表示虚拟地址)。
其中,1MB=1024*1024字节,2MB边界对齐方法为:
比如x=1*1024*1024,则y=2MB
比如x=2*1024*1024,则y=2MB
比如x=2*1024*1024+1024,则y=4MB
计算公式为:y=[x/2MB]*2MB,如果除法没有余数则就是y;如果除法有余数则y=y+2MB。
(a2)从y开始检查连续的空闲虚拟地址。
(a3)如果从y到y+n的全部虚拟地址都是空闲的,将其标记为被使用,返回y;
(a4)如果从y到y+n的虚拟地址有被使用的,返回(a1)重新查找。
(7)申请mMB物理内存。申请方法为:
(b1)申请base_addr对应的物理内存。从base_addr开始查找所有外设,如果base_addr对应的1MB物理内存未使用,通过内核申请这段内存,得到对应的内核对象,否则返回错误。
(b2)申请base_addr+1MB对应的物理内存。从base_addr+1MB开始查找所有外设,如果base_addr+1MB对应的1MB物理内存未使用,通过内核申请这段内存,得到对应的内核对象,否则返回错误。
(b3)按照同样方法申请base_addr+2MB对应的物理内存,以此类推,直到mMB物理内存全部申请完毕并得到m个内核对象。
这mMB物理内存是连续的,base_addr是mMB物理内存的首地址。第(8)步中映射的就是这段物理内存(从base_addr开始映射,每次映射1MB)。
需要说明的是,这里生成内核对象的原因是更底层的os_map系统调用函数实现最终的虚拟地址与物理地址映射映射,即修改页表和页目录。
os_map系统调用函数是微内核提供的API函数,os_map函数被os_lib_sect_map调用,os_map系统调用函数禁止使用地址传参,必须使用内核对象传参,该函数每次只能映射4kb或者1MB。内核自身能根据内核对象得到对应的物理地址。
(8)建立虚拟地址与物理地址映射关系。方法为:
(c1)通过内核将y对应的虚拟地址与base_addr对应的物理地址映射
(c2)通过内核将y+1MB对应的虚拟地址与base_addr+1MB对应的物理地址映射
(c3)按照同样方法将y+2MB对应的虚拟地址与base_addr+2MB对应的物理地址映射,以此类推,直到mMB物理内存全部映射完毕。
返回y,做为kexin_map_inner函数第3步调用返回的虚拟地址。
必须说明的是,os_lib_sect_map第6步中,n必须为偶数,并且y必须2MB边界对齐。否则存在3种致命错误。下面详细说明:
首先说第一种错误情况,n为奇数且y按照1MB边界对齐。假定用户先通过os_api_page_map在虚拟地址[0x18000000,0x18100000)申请若干个4KB虚拟内存,随后用户通过os_api_sect_map在虚拟地址[0x18100000,0x18200000)申请一个1MB虚拟内存,此时就导致某个TLB项的连续两个内存单元大小不一致,前者为4KB而后者为1MB,最终会导致内存访问失败。
接着说第二种错误情况,n为偶数且y按照1MB边界对齐。假定用户先通过os_api_page_map在虚拟地址[0x18000000,0x18100000)申请若干个4KB虚拟内存,随后用户通过os_api_sect_map在虚拟地址[0x18100000,0x18300000)申请一个2MB虚拟内存。而MIPS的TLB认为[0x18000000,0x18100000)和[0x18100000,0x18200000)是相邻的内存单元,所以导致某个TLB项的连续两个内存单元大小不一致,前者为4KB而后者为1MB,最终会导致内存访问失败。
再说第三种错误情况,n为奇数且y按照2MB边界对齐。假定用户先通过os_api_sect_map在虚拟地址[0x18000000,0x18100000)申请一个1MB虚拟内存,又通过os_api_page_map在虚拟地址[0x18100000,0x18200000)申请若干个4KB虚拟内存,此时就导致TLB的连续两个内存单元大小不一致,前者为1MB而后者为4KB,最终也会导致内存访问失败。
最后说正确情况,n为偶数且y按照2MB边界对齐。假定用户先通过os_api_page_map在虚拟地址[0x18000000,0x18100000)申请若干个4KB虚拟内存。假定虚拟地址[0x18100000,0x18400000)都是空闲的。假定用户再通过os_api_sect_map申请一个2MB虚拟内存,此时os_lib_sect_map跳过虚拟地址[0x18100000,0x18200000),在虚拟地址[0x18200000,0x18400000)申请一个2MB虚拟内存。而MIPS的TLB认为[0x18200000,0x18300000)和[0x18300000,0x18400000)是相邻的内存单元,这两个内存单元都是1MB,所以访存不会失败。
综上所述,os_lib_sect_map第6步中,n必须为偶数,并且y必须2MB边界对齐。
实施例二中可信初始线程在初始化时调用kexin_map,得到一个虚拟地址。从该虚拟地址开始的192MB+768MB是只读和连续的,对应的物理地址依次为[0x04000000,0x10000000)和[0x90000000,0xC0000000)。所以可信初始线程通过调用kexin_map实现对MEM3和MEM4的只读连续映射。
实施例三
图7为本发明实施例的内存管理装置的示意图,如图7所示,本实施例的内存管理装置,应用于可信PLC中,包括:存储器和处理器;
所述存储器,用于保存用于内存管理的程序;
所述处理器,用于读取执行所述用于内存管理的程序,执行如下操作:
可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;
根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;
其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;
若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;
其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
一种示例性的实施例中,上述装置还具有下面特点:
所述可信映射内部函数具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射;
所述根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
一种示例性的实施例中,上述装置还具有下面特点:
所述调用段内存访问接口函数k次,依次得到k个虚拟地址包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
一种示例性的实施例中,上述装置还具有下面特点:
所述申请首地址为y的nMB连续空闲的虚拟地址包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
一种示例性的实施例中,上述装置还具有下面特点:
所述申请与所述物理地址对应的mMB的物理内存包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
一种示例性的实施例中,上述装置还具有下面特点:
所述建立nMB虚拟地址与mMB物理地址间的映射关系包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
一种示例性的实施例中,上述装置还具有下面特点:
所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
一种示例性的实施例中,上述装置还具有下面特点:
其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述处理器,用于读取执行所述用于内存管理的程序,还执行如下操作:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (16)
1.一种内存管理方法,应用于可信PLC中,其特征在于,包括:
可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;
根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;
其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;
若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;
其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
2.如权利要求1所述的方法,其特征在于,
所述可信映射内部函数具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射;
所述根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
3.如权利要求2所述的方法,其特征在于,所述调用段内存访问接口函数k次,依次得到k个虚拟地址包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
4.如权利要求3所述的方法,其特征在于,所述申请首地址为y的nMB连续空闲的虚拟地址包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
5.如权利要求3所述的方法,其特征在于,所述申请与所述物理地址对应的mMB的物理内存包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
6.如权利要求3所述的方法,其特征在于,所述建立nMB虚拟地址与mMB物理地址间的映射关系包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
7.如权利要求4所述的方法,其特征在于,所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
8.如权利要求1所述的方法,其特征在于,
其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述方法还包括:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
9.一种内存管理装置,应用于可信PLC中,包括:存储器和处理器;其特征在于:
所述存储器,用于保存用于内存管理的程序;
所述处理器,用于读取执行所述用于内存管理的程序,执行如下操作:
可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;
根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;
其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;
若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;
其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。
10.如权利要求9所述的装置,其特征在于:
所述可信映射内部函数具体用于根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,并建立物理地址和虚拟地址的映射;
所述根据调用本函数时输入的物理地址和内存长度,返回所述物理地址对应的虚拟地址,包括:
若调用函数时输入的内存长度为2MB的整数倍,计算出所述输入的内存长度中包含的1MB的个数为t,令k=t/2;其中,t和k为整数;
调用段内存访问接口函数k次,依次得到k个虚拟地址;所述段内存访问接口函数用于申请空闲的物理内存和空闲的虚拟地址,并建立所申请的物理地址和虚拟地址的映射;
若所述k个虚拟地址连续,则将第一次调用所述段内存访问接口函数得到的虚拟地址作为本函数返回的虚拟地址。
11.如权利要求10所述的装置,其特征在于:
所述调用段内存访问接口函数k次,依次得到k个虚拟地址包括:
步骤一:调用段内存访问接口函数,返回一个虚拟地址;
步骤二:重复步骤一k-1次,得到k-1个虚拟地址;
其中,所述步骤一包括:
根据调用的段内存访问接口函数调用段内存访问实现函数;
所述段内存访问实现函数用于根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址;
所述根据被调用时输入的物理地址和内存长度申请虚拟地址和物理内存,返回申请到的虚拟地址的首地址,包括:
若物理地址和内存长度不等于0且为1MB的整数倍时,计算所述内存长度包含的1MB的个数m;其中,m为偶数或奇数;
若m为偶数,则令n=m;
若m为奇数,则令n=m+1;
申请首地址为y的nMB连续空闲的虚拟地址;
申请与所述物理地址对应的mMB的物理内存;
建立nMB虚拟地址与mMB物理地址间的映射关系;
返回虚拟地址的首地址y。
12.如权利要求11所述的装置,其特征在于:
所述申请首地址为y的nMB连续空闲的虚拟地址包括:
步骤41:查找到一个空闲的虚拟地址x,将该虚拟地址x按照2MB边界对齐,记为虚拟地址y;
步骤42:从y开始查找连续的空闲虚拟地址;若从y到y+n间的全部虚拟地址都是空闲虚拟地址,则将该全部虚拟地址标记为被使用,并返回y;若从y到y+n的虚拟地址为被使用的,则返回步骤41。
13.如权利要求11所述的装置,其特征在于,所述申请与所述物理地址对应的mMB的物理内存包括:
步骤51:申请与所述物理地址对应的物理内存;x=1;
步骤52:申请与所述物理地址+xMB对应的物理内存;
步骤53:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤52。
14.如权利要求11所述的装置,其特征在于,所述建立nMB虚拟地址与mMB物理地址间的映射关系包括:
步骤61:通过内核将y映射到所述物理地址;x=1;
步骤62:通过内核将y+xMB映射到所述物理地址+xMB的物理地址;
步骤63:如果x=m,则完成申请;如果x小于m,则将x加1后返回步骤62。
15.如权利要求12所述的装置,其特征在于,所述将该虚拟地址x按照2MB边界对齐,记为虚拟地址y,包括:
如果mod(x/2MB)为0,则y=[x/2MB]*2MB;
如果mod(x/2MB)不为0,则y=[x/2MB]*2MB+2MB。
16.如权利要求9所述的装置,其特征在于,
其中,所述可信PLC包括CPU,所述CPU包括微内核;
所述处理器,用于读取执行所述用于内存管理的程序,还执行如下操作:
预先为微内核添加第一外设,并设置所述第一外设的物理地址;
预先为微内核添加第二外设,并设置所述第二外设的物理地址;
其中,所述第一外设的物理地址和第二外设的物理地址不重叠;
所述第一外设的物理地址的起始地址为所述第一物理地址,所述第二外设的物理地址的起始地址为所述第二物理地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010098083.8A CN111274040B (zh) | 2020-02-18 | 2020-02-18 | 一种内存管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010098083.8A CN111274040B (zh) | 2020-02-18 | 2020-02-18 | 一种内存管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274040A CN111274040A (zh) | 2020-06-12 |
CN111274040B true CN111274040B (zh) | 2023-04-07 |
Family
ID=70999579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010098083.8A Active CN111274040B (zh) | 2020-02-18 | 2020-02-18 | 一种内存管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274040B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651526B (zh) * | 2020-08-04 | 2020-11-13 | 北京和利时系统工程有限公司 | 冗余前端处理器的数据同步方法、前端处理器和处理系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1171849A (zh) * | 1994-12-29 | 1998-01-28 | 西门子能量及自动化公司 | 可编程逻辑控制器的扩展模块寻址方法和装置 |
CN107038128A (zh) * | 2016-02-03 | 2017-08-11 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
CN108460282A (zh) * | 2017-02-22 | 2018-08-28 | 北京大学 | 一种基于异构多核芯片的计算机安全启动方法 |
CN108491334A (zh) * | 2018-03-08 | 2018-09-04 | 北京东土科技股份有限公司 | 一种嵌入式实时系统的物理内存管理方法及装置 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN110795385A (zh) * | 2019-10-29 | 2020-02-14 | 天津飞腾信息技术有限公司 | 片上系统的可信核与计算核核资源分配方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090007104A1 (en) * | 2007-06-29 | 2009-01-01 | Zimmer Vincent J | Partitioned scheme for trusted platform module support |
CN109840430B (zh) * | 2017-11-28 | 2023-05-02 | 中国科学院沈阳自动化研究所 | Plc的安全处理单元及其总线仲裁方法 |
-
2020
- 2020-02-18 CN CN202010098083.8A patent/CN111274040B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1171849A (zh) * | 1994-12-29 | 1998-01-28 | 西门子能量及自动化公司 | 可编程逻辑控制器的扩展模块寻址方法和装置 |
CN107038128A (zh) * | 2016-02-03 | 2017-08-11 | 华为技术有限公司 | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 |
CN108460282A (zh) * | 2017-02-22 | 2018-08-28 | 北京大学 | 一种基于异构多核芯片的计算机安全启动方法 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN108491334A (zh) * | 2018-03-08 | 2018-09-04 | 北京东土科技股份有限公司 | 一种嵌入式实时系统的物理内存管理方法及装置 |
CN110795385A (zh) * | 2019-10-29 | 2020-02-14 | 天津飞腾信息技术有限公司 | 片上系统的可信核与计算核核资源分配方法及装置 |
Non-Patent Citations (2)
Title |
---|
尚文利 ; 张修乐 ; 刘贤达 ; 尹隆 ; .工控网络局域可信计算环境构建方法与验证.信息网络安全.2019,(04),全文. * |
谭励 ; 杨明华 ; 韩婉娇 ; 张亚明 ; .面向工控系统的安全可信技术.计算机工程与设计.2017,38(01),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111274040A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7809918B1 (en) | Method, apparatus, and computer-readable medium for providing physical memory management functions | |
CN114327777B (zh) | 确定全局页目录的方法、装置、电子设备及存储介质 | |
US10102155B2 (en) | Method and device of information protection for micro control unit chip | |
CN110502881B (zh) | 动态修改安卓系统只读属性的方法、系统及存储介质 | |
CN114527942B (zh) | 一种基于固态硬盘的写数据方法、系统、存储介质及设备 | |
CN111274040B (zh) | 一种内存管理方法和装置 | |
US20150212832A1 (en) | Techniques for dynamically redirecting device driver operations to user space | |
CN111913893A (zh) | 保留内存的映射方法和装置、设备和存储介质 | |
CN116680080A (zh) | 一种内存管理方法、装置、电子设备和存储介质 | |
CN113821369A (zh) | 一种内存巡检的方法、装置及介质 | |
EP3721346B1 (en) | Bit-accurate-tracing analysis with applied memory region lifetimes | |
CN113961302A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN106202262A (zh) | 一种信息处理方法及电子设备 | |
US7380174B2 (en) | Variable writing through a fixed programming interface | |
CN114756180B (zh) | 覆盖写入数据块分配方法、装置、计算机设备及存储介质 | |
CN111435285A (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
CN117806709B (zh) | 系统级芯片的性能优化方法、装置、设备和存储介质 | |
CN113220604B (zh) | 内存申请方法、装置、电子设备和计算机可读存储介质 | |
CN111625192B (zh) | 一种元数据对象访问方法、装置、设备以及介质 | |
CN110955546B (zh) | 一种内存地址监控方法、装置及电子设备 | |
KR100570731B1 (ko) | 다사용자 저장 시스템에서 개선된 재기회 희생자 버퍼페이지 선정방법 | |
CN115470005A (zh) | 一种系统内存的申请方法、装置、设备及介质 | |
CN117873785A (zh) | 一种分布式存储的增量备份方法、装置以及介质 | |
CN114242147A (zh) | 提高ssd写性能的方法、装置、计算机设备及存储介质 | |
CN113296779A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211130 Address after: Room 1613, 6 / F, building 1, yard 2, Desheng Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 100176 Applicant after: Beijing Helishi Control Technology Co.,Ltd. Address before: 100176 No. 2, Desheng Middle Road, economic and Technological Development Zone, Daxing District, Beijing Applicant before: BEIJING HOLLYSYS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |