CN103164348B - 一种多系统下对实时操作系统所占用内存的保护方法 - Google Patents
一种多系统下对实时操作系统所占用内存的保护方法 Download PDFInfo
- Publication number
- CN103164348B CN103164348B CN201310063262.8A CN201310063262A CN103164348B CN 103164348 B CN103164348 B CN 103164348B CN 201310063262 A CN201310063262 A CN 201310063262A CN 103164348 B CN103164348 B CN 103164348B
- Authority
- CN
- China
- Prior art keywords
- operating system
- real
- memory
- virtual address
- time operating
- 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.)
- Expired - Fee Related
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种多系统下对实时操作系统所占用内存的保护方法,过程如下:在具有内存管理单元的中央处理器上初始化进行地址映射操作所必需的数据;实时操作系统根据其占用的内存大小将其代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上;普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上。本发明具有内存开销小,操作简单,不降低系统运行效率,不增加系统的时间开销的优点,通过普通操作系统将实时操作系统占用的虚拟地址区间映射到物理页框上,实现了内存隔离,没有对操作系统进行大的改动,没有添加额外的模块,只有一页物理页框的空间开销。
Description
技术领域
本发明属于计算机内存管理领域,尤其涉及一种多系统下对实时操作系统所占用内存的保护方法。
背景技术
在嵌入式领域,多个操作系统同时在一个硬件平台上运行是一个趋势,在这些操作系统中实时操作系统是很重要的一类。实时操作系统具有响应及时和可靠性高的特点,这是普通操作系统不能提供的。把实时操作系统和普通操作系统结合起来可以进行操作系统的优势互补,提供更多的功能,获得更高的硬件利用率。但多系统运行在同一个硬件平台上也带来了一些系统安全性的问题,特别是内存安全问题。内存保护是实时操作系统的重要研究内容,内存保护方法的优劣直接关系到实时操作系统的安全性、稳定性和可靠性。
美国WindRiver公司开发的VxWorks嵌入式实时操作系统,支持多任务,所有任务共享一个内存地址空间,彼此之间没有任何保护。这种设计实现简单、执行效率高,能够很好地满足嵌入式实时性需求。但是任务的正确执行完全依赖于程序员编写正确无误的程序。一个任务的错误可能会导致另外的任务无法执行,甚至整个系统的瘫痪,因此程序的可靠性和系统的健壮性都不高。
加拿大QNX软件系统有限公司开发的QNX实时操作系统是一个基于消息传递的微内核实时操作系统,支持进程/线程任务模型,进程管理功能属于一个动态可加载的模块。在没有配置进程管理器的QNX实时系统中,所有的应用线程和核心连接在一起,都处在一个地址空间中,这时的系统是无保护模式系统。当进程管理器启动以后,一个应用创建为一个进程,进程内部可能有若干线程,每个进程有自己的虚拟地址空间,支持完全基于内存管理单元的内存保护机制。这时系统在安全稳定性提高的同时,其对嵌入式实时性的支持就会降低。
现有的多个操作系统间的内存保护方法,大部分是使用一个独立的软件层来完成。这个独立的软件层,通常称作虚拟机,运行在硬件层和操作系统层之间。虽然这种方式可以实现内存保护,但是增加了系统的复杂度。
授权公告号为CN1269047C的中国专利公布了一种具有内存保护功能的内存管理方法,在具有MMU功能的CPU上进行内存管理;在需要保护的内存两端添加保护页;当有操作访问到所述保护页所在的区域时,实时操作系统确认所述操作为非法修改所述内存的操作,并报告内存访问异常。所述保护页的属性为不可访问。在内存中增加保护页会占用内存空间,也使内存的功能变得复杂,非法操作的报告会影响程序执行的流畅性,不利于实际使用。
发明内容
本发明针对现有技术中增加内存保护的功能会影响程序的可靠性、系统的健壮性、嵌入式的实时性,会增加系统的复杂性,导致程序执行不流畅和产生内存中可用空间等问题,提供了一种多系统下对实时操作系统所占用内存的保护方法,将实时操作系统和普通操作系统各自使用的虚拟地址空间进行隔离,在不增加系统复杂性的前提下提供对实时操作系统占用内存的保护。
一种多系统下对实时操作系统所占用内存的保护方法,包括如下步骤:
第一步:在具有内存管理单元的中央处理器上初始化进行地址映射操作所必需的数据;
第二步:实时操作系统根据其占用的内存大小将其代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上;
第三步:普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上。
作为本发明技术方案的进一步改进:
所述实时操作系统的内存分配方式为静态分配,在编译阶段就可以把实时操作系统使用的代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上。
所述初始化的工作为根据中央处理器的硬件寻址方式,建立一套访问已经存在的物理地址的机制。比较通用的技术是采用分页机制。采用多级页表的分页,可以优化查询效率,节约存储页表所需的内存空间,如果系统的寻址需要n级,系统就需要建立n级页表进行寻址,第n-1级页表提供第n级页表的基地址,相应的虚拟地址也要分为n段,其中n为正整数,各个段对应各级表的偏移,最后一项对应页框内的物理地址偏移。中央处理器把第一级表的基址,存放在一个特定的地址或寄存器里。
所述内存管理单元提供的机制是地址映射机制,将虚拟地址映射到物理地址。
所述普通操作系统将所述虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上的过程中,若所述虚拟地址区间包含多个虚拟页,所述的映射是普通操作系统循环地把实时操作系统占用的每一个虚拟页都映射到同一个选定的物理页框上。
本发明技术方案的有益效果为:内存开销小,只花费一个物理页框,供虚拟地址空间上的所有页映射;操作简单,只需在同时运行的其他操作系统上把相应的虚拟地址空间映射到同一个物理页框上;不降低系统运行效率,没有对操作系统进行大的改动,没有添加额外的模块,运行效率基本不受影响。本发明通过普通操作系统将实时操作系统占用的虚拟地址区间映射到物理页框上,实现了内存隔离,并且没有增加系统的时间开销,只有一页物理页框的空间开销。
附图说明
图1为本发明方法的流程图。
图2为本发明方法中多级页表的索引过程以及虚拟地址区间映射到物理页框的过程图。
图3为本发明方法中实时操作系统占用系统虚拟地址空间示意图。
图4为本发明方法中所述虚拟地址区间包含多个虚拟页时将虚拟地址区间映射到物理页框的过程图。
具体实施方式
本实施方式以在ARM双核处理器上同时运行Android和SmartOSEKOS为例,对本发明的技术方案做进一步阐述。
本实施方式的运行整体环境如下:
Android和SmartOSEKOS两个操作系统分别运行在基于ARM双核处理器的硬件平台的两个核上,两个操作系统共同使用硬件平台的物理内存。其中SmartOSEKOS是由浙江大学嵌入式工程中心根据国家汽车电子软件发展的需求而自主研发的符合OSEK/VDX标准的嵌入式实时操作系统。OSEK/VDX是国际汽车工业为提高汽车电子软件的重用性,降低软件开发成本而提出的汽车开放结构的工业标准。SmartOSEKOS分配内存的方式是静态分配,在编译阶段就可以把SmartOSEKOS使用的代码段和数据段连续的设定在一个虚拟地址空间内。对32位的中央处理器来说,一个系统的虚拟地址空间的大小是4G。
如图1所示,本实施方式的具体操作步骤如下:
第一步:在具有内存管理单元的中央处理器上初始化进行地址映射操作所必需的数据;
第二步:实时操作系统根据其占用的内存大小将其代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上;
第三步:普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上。
其中,对于第一步,在具有内存管理单元的中央处理器上初始化进行地址映射操作所必需的数据,本实施方式采用如下方式:
本实施方式中系统的初始化分为两个部分,第一个核(Android使用的核)的初始化和第二个核(SmartOSEKOS使用的核)的初始化。系统的初始化开始于普通操作系统Android内核的初始化,在两个核初始化完成之后,初始化Android的上层部分,然后整个系统正常运行。
第一个核初始化中根据分页机制建立了两个页表。一个供普通操作系统Android使用,另一个供实时操作系统SmartOSEKOS使用。如图2所示,本实施方式中使用的是3级页表。每个虚拟地址分为4个段:总目录偏移、中间目录偏移、页目录偏移和页内偏移。前面的3个段分别对应3个表,总目录表、中间目录表和页目录表。CR3表示中央处理器特定的寄存器,用于存放第1级表的基址,在本实施方式CR3表示页目录基址寄存器,用于存放总目录的基址。根据虚拟地址找到物理地址的过程是:首先把从CR3中读出的总目录基址和虚拟地址中的总目录偏移相加,得到中间目录基址;然后把中间目录基址与虚拟地址中的中间目录偏移量相加,得到页目录基址;然后把页目录基址和虚拟地址中的页目录偏移相加,得到页的基址;最后把页的基址和虚拟地址中的页内偏移相加,得到了虚拟地址对应的物理地址。
对于第二步,实时操作系统根据其占用的内存大小将其代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上,如图3所示,本实施方式中实时操作系统SmartOSEKOS占用基于ARM双核处理器的硬件平台中的基于ARM双核处理器是一个32位的中央处理器,因此其虚拟地址空间的大小是4G。本实施方式的实时操作系统SmartOSEKOS采用静态的内存分配方式,在编译阶段就可把其占用的虚拟地址空间的代码段和数据段确定在4G虚拟地址空间中的一个连续的虚拟地址区间上。
对于第三步,普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上,普通操作系统Android将实时操作系统SmartOSEKOS占用的虚拟地址空间映射到同一个选中的物理页框中的过程如图4所示,本实施方式中实时操作系统SmartOSEKOS占用的虚拟地址空间含多个虚拟页时,普通操作系统Android循环地把实时操作系统SmartOSEKOS占用的每一个虚拟页都映射到选定的同一个物理页框上。具体的映射工作由内存管理单元通过修改Android使用的页表中跟SmartOSEKOS使用的虚拟地址空间有关的页表项来完成。
在本实施例中,对于Android和SmartOSEKOS两个操作系统同时正常运行在基于ARM双核处理器的硬件平台时,实时操作系统SmartOSEKOS运行在第二步确定的虚拟地址空间里,实时操作系统SmartOSEKOS不会访问这个虚拟地址空间以外的地址空间,这样实时操作系统SmartOSEKOS就不会对普通操作系统Android所使用的虚拟地址空间进行读写操作;对于普通操作系统Android,不会再分配实时操作系统SmartOSEKOS使用的虚拟地址空间,如果普通操作系统Android越界访问到实时操作系统SmartOSEKOS占用的虚拟地址空间,其对实时操作系统SmartOSEKOS所使用的虚拟地址空间进行的读写操作实际上是对映射的那个的物理页框进行操作,获得的始终是无效数据,不会对实时操作系统SmartOSEKOS所实际使用的物理内存有任何影响。
Claims (2)
1.一种多系统下对实时操作系统所占用内存的保护方法,其特征在于,包括如下步骤:
第一步:在具有内存管理单元的中央处理器上初始化进行地址映射操作所必需的数据;所述的初始化的工作为根据中央处理器的硬件寻址机制,建立一套机制访问物理地址,所述的访问物理地址的机制是分页机制;
所述的初始化分为两个部分,第一个核的初始化和第二个核的初始化,所述的第一个核为普通操作系统使用的核,所述的第二个核为实时操作系统使用的核;
第一个核初始化中根据分页机制建立了两个页表,一个供普通操作系统使用,另一个供实时操作系统使用;
第二步:实时操作系统根据其占用的内存大小将其代码段和数据段确定在虚拟地址空间中的一个连续的虚拟地址区间上;
第三步:普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上,所述的内存管理单元提供的机制是地址映射机制,所述的普通操作系统将所述的虚拟地址区间按内存管理单元提供的机制映射到同一个未使用的物理页框上的过程中,若所述的虚拟地址区间包含多个虚拟页,所述的映射是普通操作系统循环地把实时操作系统占用的每一个虚拟页都映射到同一个选定的物理页框上。
2.根据权利要求1所述的多系统下对实时操作系统所占用内存的保护方法,其特征在于,所述的实时操作系统的内存分配方式为静态分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310063262.8A CN103164348B (zh) | 2013-02-28 | 2013-02-28 | 一种多系统下对实时操作系统所占用内存的保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310063262.8A CN103164348B (zh) | 2013-02-28 | 2013-02-28 | 一种多系统下对实时操作系统所占用内存的保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103164348A CN103164348A (zh) | 2013-06-19 |
CN103164348B true CN103164348B (zh) | 2016-06-08 |
Family
ID=48587450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310063262.8A Expired - Fee Related CN103164348B (zh) | 2013-02-28 | 2013-02-28 | 一种多系统下对实时操作系统所占用内存的保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103164348B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110231988A (zh) * | 2018-03-05 | 2019-09-13 | 龙芯中科技术有限公司 | 显存访问方法、装置及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502924B (zh) * | 2016-10-27 | 2020-02-07 | 深圳创维数字技术有限公司 | 一种内存优化方法及系统 |
CN110892388B (zh) * | 2018-07-11 | 2022-07-22 | 华为技术有限公司 | 增强用户空间与内核空间的隔离性的方法和装置 |
CN111797390B (zh) * | 2020-07-14 | 2024-01-26 | 北京元心科技有限公司 | 程序运行方法、装置、电子设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567254A (zh) * | 2003-06-17 | 2005-01-19 | 深圳市中兴通讯股份有限公司南京分公司 | 嵌入式实时操作系统高效可靠的内存保护方法 |
CN1581108A (zh) * | 2003-07-31 | 2005-02-16 | 深圳市中兴通讯股份有限公司南京分公司 | 一种具有内存保护功能的内存管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051301B2 (en) * | 2001-11-13 | 2011-11-01 | Advanced Micro Devices, Inc. | Memory management system and method providing linear address based memory access security |
CN100343828C (zh) * | 2004-03-24 | 2007-10-17 | 华为技术有限公司 | 一种内存分配方法 |
-
2013
- 2013-02-28 CN CN201310063262.8A patent/CN103164348B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567254A (zh) * | 2003-06-17 | 2005-01-19 | 深圳市中兴通讯股份有限公司南京分公司 | 嵌入式实时操作系统高效可靠的内存保护方法 |
CN1581108A (zh) * | 2003-07-31 | 2005-02-16 | 深圳市中兴通讯股份有限公司南京分公司 | 一种具有内存保护功能的内存管理方法 |
Non-Patent Citations (1)
Title |
---|
《基于模型驱动的汽车电子软件开发方法研究》;杨国青;《CNKI博士学位论文全文库》;20061001;第21-22页 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110231988A (zh) * | 2018-03-05 | 2019-09-13 | 龙芯中科技术有限公司 | 显存访问方法、装置及存储介质 |
CN110231988B (zh) * | 2018-03-05 | 2021-08-03 | 龙芯中科技术股份有限公司 | 显存访问方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103164348A (zh) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7620766B1 (en) | Transparent sharing of memory pages using content comparison | |
RU2602793C2 (ru) | Способ модификации разрешений на доступ к памяти в защищенной процессорной среде | |
US9064330B2 (en) | Shared virtual memory between a host and discrete graphics device in a computing system | |
US7739466B2 (en) | Method and apparatus for supporting immutable memory | |
US8041920B2 (en) | Partitioning memory mapped device configuration space | |
US8453015B2 (en) | Memory allocation for crash dump | |
JP5735070B2 (ja) | パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 | |
JP5916955B2 (ja) | ハイブリッドメモリ管理のための方法、システムおよびデバイス | |
US8190839B2 (en) | Using domains for physical address management in a multiprocessor system | |
JP4772795B2 (ja) | 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上 | |
US8359453B2 (en) | Real address accessing in a coprocessor executing on behalf of an unprivileged process | |
CN109359487B (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
US9098427B2 (en) | Controlling access to groups of memory pages in a virtualized environment | |
CN109002706A (zh) | 一种基于用户级页表的进程内数据隔离保护方法和系统 | |
JP2013232151A (ja) | メモリ保護回路、処理装置、およびメモリ保護方法 | |
EP3163451B1 (en) | Memory management method and device, and memory controller | |
CN103164348B (zh) | 一种多系统下对实时操作系统所占用内存的保护方法 | |
CN101013404A (zh) | 面向异构多核体系的分页式存储空间管理方法 | |
Kaiser | MUTABOR, a coprocessor supporting memory management in an object-oriented architecture | |
JP7615269B2 (ja) | 設定可能なメモリシステムおよびそのメモリ管理方法 | |
US20090024798A1 (en) | Storing Data | |
WO2023064590A1 (en) | Software indirection level for address translation sharing | |
CN117971716A (zh) | 缓存管理方法、设备、装置和存储介质 | |
CN111221465A (zh) | Dsp处理器、系统以及外部存储空间访问方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160608 |