一种内存管理方法和装置制造方法及图纸

技术编号:24497324 阅读:12 留言:0更新日期:2020-06-13 03:33
本发明专利技术公开了一种内存管理的方法,该方法包括:可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址。本发明专利技术还公开了一种内存管理的装置。本发明专利技术提供的方法和装置能够提高PLC系统的安全性且便于实现。

A memory management method and device

【技术实现步骤摘要】
一种内存管理方法和装置
本专利技术涉及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本文档来自技高网...

【技术保护点】
1.一种内存管理方法,应用于可信PLC中,其特征在于,包括:/n可信初始线程初始化时,根据第一物理地址和第一内存长度调用可信映射内部函数,得到和所述第一物理地址对应的第一虚拟地址;/n根据第二物理地址和第二内存长度调用可信映射内部函数,得到和所述第二物理地址对应的第二虚拟地址;/n其中,所述可信映射内部函数用于申请虚拟内存,并建立物理地址和所申请的虚拟地址的映射;/n若第一虚拟地址与第二虚拟地址连续,则返回第一虚拟地址给所述可信初始线程,作为所述可信PLC中可信核只读访问PLC核的起始地址;/n其中,第一物理地址为所述可信PLC中第一块只读物理内存的起始地址,第二物理地址为所述可信PLC中第二块只读物理内存的起始地址。/n

【技术特征摘要】
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中,包括:存储器和处理器;其特征在于:
所述存储器,用...

【专利技术属性】
技术研发人员:董广谱李蒙
申请(专利权)人:北京和利时系统工程有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1