CN100342353C - 嵌入式操作系统中进程映射实现方法 - Google Patents
嵌入式操作系统中进程映射实现方法 Download PDFInfo
- Publication number
- CN100342353C CN100342353C CNB2006100502588A CN200610050258A CN100342353C CN 100342353 C CN100342353 C CN 100342353C CN B2006100502588 A CNB2006100502588 A CN B2006100502588A CN 200610050258 A CN200610050258 A CN 200610050258A CN 100342353 C CN100342353 C CN 100342353C
- Authority
- CN
- China
- Prior art keywords
- page
- address
- space
- virtual space
- register
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种嵌入式操作系统中进程映射实现方法。在嵌入式操作系统中,进程管理是非常重要的。本发明采用虚拟地址映射的办法实现用户地址到物理地址的转换,并将虚拟地址分为内核态与用户态,划分保护级别,既保证了每个进程的正确地址转换,又抽取每个进程的共享数据,节约了存储空间,不论是对操作系统的内存管理,还是用户程序的编写运行,都提供了最大的方便、安全和高效。本发明对嵌入式系统环境,尤其是面向嵌入式系统的嵌入式操作系统操作系统,有重大意义。
Description
技术领域
本发明涉及实时任务处理技术,特别是涉及一种嵌入式操作系统中进程映射实现方法。
背景技术
存储管理是操作系统的重要组成部分,它负责管理计算机系统的存储器。存储器可分成主存储器(简称主存)和辅助存储器(简称辅存)两类。
主存储器的存储空间一般分中两部分:一部分是系统区,存放操作系统以及一些标准子程序,例行程序等;另一部分是用户区,存放用户的程序和数据等。存储管理主要是对主存储器中的用户区域进行管理。
计算机系统采用多道程序设计技术后,往往要在主存储器中同时存放多个进程的程序,而这些程序在主存储器中的位置是不能预先知道的,所以用户在编写程序时不能使用绝对地址。现代计算机的指令中地址部分所指示的地址通常是地址,逻辑地址可从0开始编号。用户按逻辑地址编写程序。当要把程序装入计算机时,首先,操作系统要为其分配一个合适的主存空间。由于逻辑地址经常与分配到的主存空间的绝对地址不一致,而处理器执行指令是按绝对地址进行的,所以必须把逻辑地址转换成绝对地址才能得到信息的真实存放处。把逻辑地址转换成绝对地址的工作称地址转换。
多个进程共享主存储器时,必须对主存储器中的程序和数据进行保护,并进行合理有效地调动,以达到充分发挥主存储器的效率。
为方便用户编制程序,使用户编写程序时不受主存储器实际容量的限制,可以采用一定的技术“扩充”主存储器容量,可使用得到比实际容量大的主存空间。
发明内容
本发明的目的在于提供一种嵌入式操作系统中进程映射实现方法。
本发明解决其技术问题采用的技术方案如下:
1)划分虚拟空间地址:
把64K字节的虚拟空间地址空间分成8页,每页分成128块,每块为64个字节,于是每页最多可达到8K字节,为了充分利用内存空间,系统是按虚页实际的页长来分配内存空间的;
2)设置活动页寄存器:
设置活动页寄存器,包括:使用页地址寄存器用来记录虚拟空间地址空间相应各页在内存的起始块号;使用页说明寄存器,记录虚拟空间地址空间相应各页的存取权限、扩展方向以及该页的长度,寄存器的第1、2位表明对相应页的存取权限,第3位表明该页的扩展方向,寄存器的第8~14位为该虚页的实际长度,用含多少块来表示;
3)进行虚-物理地址的转换:
在得到虚存空间地址之后,按照如下过程实现从虚拟空间地址到物理地址的转换:
第一步,根据处理机状态字的第14、15位,确定处理机现在所处的运行状态,由此选择相应的活动页寄存器组;
第二步,由虚拟空间地址中的页号得到该组中相应的页地址寄存器主页说明寄存器;
第三步,由页地址寄存器中的“本页在内存起始块号”和虚拟空间地址中的“页内块号”构成内存中的物理块号,并由页说明寄存器检查该块号的合法性;
第四步,由物理块号和虚拟空间地址中的“位移量”构成这个虚拟空间地址所对应的物理地址。
4)分配进程在核心态下的虚拟空间地址空间:
在核心态下,进程运行的是操作系统程序,要使用核心栈区,要用到该进程的用户结构,此态下的虚拟空间地址空间的组成包括:
在用户态下,进程运行时涉及共享正文段,数据区,以及用户栈区
5)分配进程映像在内存中的实际地址空间:
①把核心态虚拟空间地址空间的0~5页装在内存0地址开始的低地址处,常驻内存;
②把核心态虚拟空间地址空间的第7页输入输出页装在内存最高地址处的8K空间里,常驻内存;
③根据当前存储分配情况,以内存块为单位把共享正文段放在一个连续区内;
④根据当前存储分配情况,以内存块为单位把核心态虚拟空间地址空间中的1024字节的内容、用户态虚拟空间地址空间中的数据区、以及用户栈区放在一个连续区内,构成进程映像的数据段;
⑤将进程映像全部在内存的进程的共享正文段的起始块号送入内存相应共享正文段保存。
本发明具有的有益效果是:本发明采用虚拟地址映射的办法实现用户地址到物理地址的转换,并将虚拟地址分为内核态与用户态,划分保护级别,既保证了每个进程的正确地址转换,又抽取每个进程的共享数据,节约了存储空间,不论是对操作系统的内存管理,还是用户程序的编写运行,都提供了最大的方便、安全和高效。
附图说明
图1虚拟空间地址;
图2处理机状态字;
图3页地址寄存器;
图4也说明寄存器;
图5虚物理地址转换;
图6进程映像在内存中的实际分布。
具体实施方式
在实施实时任务调度时,采用c语言编写,具体方式如下:
为每一个进程提供两个虚存,一个是核心态下的虚存,使用该态下的那组活动页寄存器来实现其虚、物理地址的映射;一个是用户态下的虚存,使用该态下的那组活动页寄存器来实现其虚、物理地址的映射。这两个状态下的虚存,最大都是64K字节。
1)划分虚拟空间地址:
在存储管理部件的支持下,16位的字节地址不再被直接解释为物理地址,而被看作是一个虚拟空间地址,如图1所示:
把64K字节的虚拟空间地址空间分成8页,每页分成128块,每块为64个字节,于是每页最多可达到8K字节,为了充分利用内存空间,系统是按虚页实际的页长来分配内存空间的。
2)设置活动页寄存器:
虚存页在内存中的实际位置,需要有一张映象表加以反映,这个映象表在由两组活动页寄存器组成的,一组用于核心态,一组用于用户态。每组有8个32位长的寄存器,每一个一分为二:一个是页地址寄存器,如图3,一个是页说明寄存器,如图4:
页地址寄存器用来记录虚拟空间地址空间相应各页在内存的起始块号。把内存按64个字节为单位划分成块,共有4096=212块,编号为0~(212-1),内存分配以块为单位。每个页地址寄存器只使用其低12位,用来记录虚拟空间地址空间相应各页在内存的起始块号。
页说明寄存器,记录着虚拟空间地址空间相应各页的存取权限、扩展方向以及该页的长度。寄存器的第1、2位表明对相应页的存取权限,第3位表明该页的扩展方向,寄存器的第8~14位为该虚页的实际长度,用含多少块来表示。
3)进行虚-物理地址的转换:
在得到虚存空间地址之后,按照如下过程实现从虚拟空间地址到物理地址的转换,如图5所示:
第一步,根据处理机状态字(如图2所示)的第14、15位,确定处理机现在所处的运行状态,由此选择相应的活动页寄存器组;
第二步,由虚拟空间地址中的页号得到该组中相应的页地址寄存器主页说明寄存器;
第三步,由页地址寄存器中的“本页在内存起始块号”和虚拟空间地址中的“页内块号”构成内存中的物理块号,并由页说明寄存器检查该块号的合法性;
第四步,由物理块号和虚拟空间地址中的“位移量”构成这个虚拟空间地址所对应的物理地址。
4)分配进程在核心态下的虚拟空间地址空间:
在核心态下,进程运行的是操作系统程序,要使用核心栈区,要用到该进程的用户结构,其中,0~5页存放操作系统代码,这里面包括常驻内存的进程结构;第7页存放与系统输入、输出相关的内容,称输入、输出页;第6页放现运行进程的部分代码区,即用户结构和核心栈,实际只用1024个字节。对所有进程来说,第0~5页和第7页共七页的内容都是相同的。
在用户态下,进程运行时涉及共享正文段,数据区,以及用户栈区:此态下的虚拟空间地址空间的安排原则为:
①由低往高安排先共享正文段,再数据区;由高往低放置栈区;
②以页为分配单位,不满一页按页找齐。如图14(a)所示,若共享正文段长度为2.5页,则在虚拟空间地址空间中占据0~2页;数据区为2.25页,则在虚拟空间地址空间中紧接共享正文段占据3~5页;栈区为0.5页,则占据虚拟空间地址空间的第7页,且向低地址方向延伸。这时虚空间的第6页为空白,未被占用。
5)分配进程映像在内存中的实际地址空间:
虽然每个进程都有一个核心态的虚拟空间地址空间,但它们中的第0~5以及第7页的内容是完全一样的。此外,即使是每个进程的用户态虚拟空间,也不能按其分配情况原封不动地照搬到内存中去,否则会造成内存空间的巨大浪费。因此,各个进程映像在内存的真实分布情况,如图6所示:
①把核心态虚拟空间地址空间的0~5页装在内存0地址开始的低地址处,常驻内存;
②把核心态虚拟空间地址空间的第7页输入输出页装在内存最高地址处的8K空间里,常驻内存;
③根据当前存储分配情况,以内存块为单位把共享正文段放在一个连续区内;
④根据当前存储分配情况,以内存块为单位把核心态虚拟空间地址空间中的1024字节的内容、用户态虚拟空间地址空间中的数据区、以及用户栈区放在一个连续区内,构成进程映像的数据段;
⑤将进程映像全部在内存的进程的共享正文段的起始块号送入内存相应共享正文段保存。
Claims (2)
1.一种嵌入式操作系统中进程映射实现方法,其特征在于该方法的步骤如下:
1)划分虚拟空间地址:
把64K字节的虚拟空间地址空间分成8页,每页分成128块,每块为64个字节,于是每页最多可达到8K字节,为了充分利用内存空间,系统是按虚页实际的页长来分配内存空间的;
2)设置活动页寄存器:
设置活动页寄存器,包括:使用页地址寄存器用来记录虚拟空间地址空间相应各页在内存的起始块号;使用页说明寄存器,记录虚拟空间地址空间相应各页的存取权限、扩展方向以及该页的长度,寄存器的第1、2位表明对相应页的存取权限,第3位表明该页的扩展方向,寄存器的第8~14位为该虚页的实际长度,用含多少块来表示;
3)进行虚-物理地址的转换:
在得到虚存空间地址之后,按照如下过程实现从虚拟空间地址到物理地址的转换:
第一步,根据处理机状态字的第14、15位,确定处理机现在所处的运行状态,由此选择相应的活动页寄存器组;
第二步,由虚拟空间地址中的页号得到该组中相应的页地址寄存器页说明寄存器;
第三步,由页地址寄存器中的“本页在内存起始块号”和虚拟空间地址中的“页内块号”构成内存中的物理块号,并由页说明寄存器检查该块号的合法性;
第四步,由物理块号和虚拟空间地址中的“位移量”构成这个虚拟空间地址所对应的物理地址;
4)分配进程在核心态下的虚拟空间地址空间:
在核心态下,进程运行的是操作系统程序,要使用核心栈区,要用到该进程的用户结构,此态下的虚拟空间地址空间的组成包括:
在用户态下,进程运行时涉及共享正文段,数据区,以及用户栈区;
5)分配进程映像在内存中的实际地址空间:
①把核心态虚拟空间地址空间的0~5页装在内存0地址开始的低地址处,常驻内存;
②把核心态虚拟空间地址空间的第7页输入输出页装在内存最高地址处的8K空间里,常驻内存;
③根据当前存储分配情况,以内存块为单位把共享正文段放在一个连续区内;
④根据当前存储分配情况,以内存块为单位把核心态虚拟空间地址空间中的1024字节的内容、用户态虚拟空间地址空间中的数据区、以及用户栈区放在一个连续区内,构成进程映像的数据段;
⑤将进程映像全部在内存的进程的共享正文段的起始块号送入内存相应共享正文段保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100502588A CN100342353C (zh) | 2006-04-07 | 2006-04-07 | 嵌入式操作系统中进程映射实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100502588A CN100342353C (zh) | 2006-04-07 | 2006-04-07 | 嵌入式操作系统中进程映射实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1828557A CN1828557A (zh) | 2006-09-06 |
CN100342353C true CN100342353C (zh) | 2007-10-10 |
Family
ID=36946967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100502588A Expired - Fee Related CN100342353C (zh) | 2006-04-07 | 2006-04-07 | 嵌入式操作系统中进程映射实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100342353C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201794B (zh) * | 2006-12-15 | 2010-08-18 | 中兴通讯股份有限公司 | 一种确定软件的内存占用的方法和系统 |
CN101398759B (zh) * | 2007-06-29 | 2012-06-13 | 北京中星微电子有限公司 | 避免启动代码在数据段搬移时自我覆盖的方法 |
CN101252527B (zh) * | 2008-04-09 | 2011-01-26 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
CN101478549B (zh) * | 2009-01-20 | 2011-10-05 | 电子科技大学 | 共享内存流媒体服务器的运行方法及其功能模块构架 |
CN101950274B (zh) * | 2010-07-14 | 2012-06-20 | 北京北大众志微系统科技有限责任公司 | 一种管态维护且目态共享的数据访问装置及方法 |
CN102446136B (zh) * | 2010-10-14 | 2014-09-03 | 无锡江南计算技术研究所 | 自适应的大页分配方法及装置 |
CN106502924B (zh) * | 2016-10-27 | 2020-02-07 | 深圳创维数字技术有限公司 | 一种内存优化方法及系统 |
CN108090347B (zh) * | 2016-11-23 | 2022-01-14 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和系统 |
CN107273213B (zh) * | 2017-06-27 | 2024-04-19 | 联想(北京)有限公司 | 一种计算控制方法、网卡及电子设备 |
CN109683983B (zh) * | 2018-12-11 | 2021-09-24 | 海信视像科技股份有限公司 | 一种镜像文件的生成及加载方法、设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598144B1 (en) * | 2001-12-12 | 2003-07-22 | Advanced Micro Devices, Inc. | Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping |
JP2003316588A (ja) * | 2002-02-25 | 2003-11-07 | Ricoh Co Ltd | 情報処理装置及びメモリマップ方法 |
-
2006
- 2006-04-07 CN CNB2006100502588A patent/CN100342353C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598144B1 (en) * | 2001-12-12 | 2003-07-22 | Advanced Micro Devices, Inc. | Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping |
JP2003316588A (ja) * | 2002-02-25 | 2003-11-07 | Ricoh Co Ltd | 情報処理装置及びメモリマップ方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1828557A (zh) | 2006-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100342353C (zh) | 嵌入式操作系统中进程映射实现方法 | |
US5560003A (en) | System and hardware module for incremental real time garbage collection and memory management | |
US5819304A (en) | Random access memory assembly | |
US5893121A (en) | System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage | |
US9189446B2 (en) | Immutable sharable zero-copy data and streaming | |
CN1389790A (zh) | 闪速存储器管理方法 | |
CN101075214A (zh) | 一种内存管理方法和内存管理系统 | |
CA2896518C (en) | Shared and managed memory unified access | |
CN1271524C (zh) | 一种静态内存管理方法 | |
CN1499379A (zh) | 针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 | |
CN1896972A (zh) | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 | |
US9323693B2 (en) | Zero-copy caching | |
CN1650266A (zh) | 支持单线程应用程序的时分多路复用推理性多线程 | |
Yu et al. | Redesign the memory allocator for non-volatile main memory | |
CN101030148A (zh) | 实现重映射的方法、装置 | |
KR100809293B1 (ko) | 가상 머신에서 스택을 관리하는 장치 및 그 방법 | |
Wilson | Operating system support for small objects | |
Chen et al. | A unified framework for designing high performance in-memory and hybrid memory file systems | |
Printezis | {Hot-Swapping} Between a {Mark&Sweep} and a {Mark&Compact} Garbage Collector in a Generational Environment | |
Nilsen et al. | Cost-effective object space management for hardware-assisted real-time garbage collection | |
Wegiel et al. | The mapping collector: virtual memory support for generational, parallel, and concurrent compaction | |
CN1851675A (zh) | 处理器高速数据缓存重配置方法 | |
CN1622056A (zh) | 一种访问文件的方法 | |
CN1794209A (zh) | Java操作系统中段页式虚拟存储系统的实现方法 | |
CN1517882A (zh) | 内存地址的重新映射方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071010 Termination date: 20120407 |