WinCE 5.0 virtual memory space
WinCE 5.0 的virtual memory 分为4GB。其中高位的2GB为Kernel space,低位的2GB为User space。Kernel space可以被拥有权限(运行在Kernel mode)的线程访问。任何线程,可以通过调用SetKMode来让自己切换到Kernel mode或者User mode。低位的2GB,只是理论上可以被任何线程访问,但实际上访问起来也要受到一些限制。这点在下文说明。
关于Kernel Space:
0x8000 0000 ~ (0xC000 0000 - 1): 这1GB的空间是用来做static mapping的。在WinCE启动时,WinCE会把物理地址通过静态映射到这1GB的空间。其中0x8000 0000 - (0xA000 0000 - 1)的512MB空间是带缓存的映射,另外的高512MB空间是不带缓存的。为什么同样的memory要做两次映射?目前能想到的例子是,当我们使用一片memory,比如FileMapping的方式在多个进程之间共享memory的时候,如果一个进程写,一个进程读,那么这片meomry可能要设置为UnCached,从而保证两边的数据不会因为cache的原因而出现不同步的情况。另外,由于静态映射的地址空间已经确定了,最大为512MB,那么也就限定了WinCE 5.0最多只能管理512MB的memory。 0xC000 0000 ~ (0xC200 0000 -1) 未使用。 0xC200 0000 ~ (0xC400 0000 -1): NK.exe进程被load的位置。 0xC400 0000 ~ (0xE000 0000 -1):OEM可以使用的静态映射空间,具体如何使用尚未遇到过。 0xE000 0000 ~ 0xFFFF FFFF:Trap,KPAGE等地址空间。 关于User space,可以被分为64个,每个为32MB的slots。
0x0000 0000 ~ (0x0200 0000 - 1):Slot0 为当前运行的进程。前面说道每个线程虽然可以放问user space,但时机上,在访问其它进程的空间时,需要获得对那个进程的访问权限。可以通过调用SetProcPermissions 获得对其它进程的访问权限。 0x0200 0000 ~ (0x0400 0000 - 1):slot1 为存放XIP DLL的地方。所谓XIP,就是execute in place的缩写。XIP区域就是可以直接从ROM中执行,不需要load到RAM中的代码。 0x0400 0000 ~ (0x4200 0000 - 1):存放另外31个进程的slot。0x4200 0000 ~ (0x7E00 0000 - 1):object store,share memory(eg. memory mapped files)。可以被所有线程访问。0x7E00 0000 ~ (0x8000 0000 - 1):存放dll的resource。
发表
转载于:https://www.cnblogs.com/googlegis/archive/2008/11/28/2979219.html
WinCE 5.0 virtual memory space相关推荐
- hive任务优化-Current usage: 2.0 GB of 2 GB physical memory used; 4.0 GB of 16.2 GB virtual memory used.
目录 错误背景 错误信息定位 client端日志 APPlication日志 map和reduce单个错误日志 错误分析 解决方案 1. 取消虚拟内存的检查(不建议): 2.增大mapreduce.m ...
- linux qemu 报错 Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 解决方法
目录 错误现象 可能原因 解决过程 解决方法 错误现象 使用 qemu-i686 运行 i686平台文件 报错 qemu-i686: Unable to reserve 0xfffff000 byte ...
- S3C6410 SD Card一键烧写 WINCE 6.0
S3C6410 SD Card一键烧写 WINCE 6.0 博客迁移至 CSDN 了,感觉 markdown 写的文章就是要好看一些. 关于 S3C6410 安卓编译及烧录的博客在我的博客园里面,就不 ...
- 深入理解计算机系统——第九章 Virtual Memory
深入理解计算机系统--第九章 Virtual Memory 9.1 Physical and Virtual Addressing 9.2 Address Spaces 9.3 VM as a Too ...
- DumpMem and Monster - Virtual Memory Explorers on Windows Mobile/CE
Windows Mobile 5 和 6的平台是建立在CE5.x的基础上的.当可用的内存很少时,平台会自动关闭应用程序.而且,在这个移动平台上,同时只能运行32个process.在桌面电脑上,我们有4 ...
- 【计算机基础】 Virtual memory 虚拟内存
Virtual memory 虚拟内存 虚拟内存的作用 将主存看成存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,高效实用主存 为每个进程提供一致的地 ...
- linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])
linux 64位内存空间大小?(linux 64 bits memory space size? [closed]) 在Linux 32bit中,内核占用1GB的内存,而用户空间将占用剩余的gigs ...
- virtual memory exhausted: Cannot allocate memory Linux虚拟内存不足,扩展虚拟内存的解决办法
Linux虚拟内存不足,扩展虚拟内存的解决办法 virtual memory exhausted: Cannot allocate memory 在编译软件的时候,出现了这个错误: virtual m ...
- Docker CI: 安装 SonarQube 异常 max virtual memory areas vm.max_map_count [65530] is too low
Docker CI: 安装 SonarQube 异常 max virtual memory areas vm.max_map_count [65530] is too low 一.问题 # docke ...
最新文章
- 简约而不简单的Django新手图文教程
- C++ Primer 第六章 语句
- linux学习wdlinux学堂
- python获取返回值_python 调用 shell ,获取返回值和返回信息
- java多线程机制计时器_java多线程定时器与单例模式
- 中缀表达式转后缀表达式 java_中缀表达式转后缀表达式并计算结果Java实现
- JS无刷新修改URL类似博客园翻页效果
- 人工智能数学基础之线性代数(持续更新)
- R语言安装bibliometrix包的代码
- Windows android adb interface驱动安装失败 ADB interface驱动安装失败解决方法
- visual basic是不是计算机语言,辉煌不再!Microsoft计划结束Visual Basic编程语言
- 网络口碑推广主要目的全知道
- Registry Workshop —— 强大的注册表编辑工具
- java使用微博开发者api步骤
- 电脑主板有哪几种结构?
- 2023年全国最新工会考试精选真题及答案32
- Win7 时间不准不能自动同步,执行w32tm /register发生下列错误: 拒绝访问(0x80070005)
- 计算机游戏攻略32关,保卫萝卜3游乐场第32关通关攻略 保卫萝卜3分享
- 计算机组成原理 day01 - 第一章
- 五分钟理解主存储器的基本组成结构
热门文章
- LeetCode 1717. 删除子字符串的最大得分
- LeetCode 1428. 至少有一个 1 的最左端列(二分查找)
- LeetCode 1200. 最小绝对差
- LeetCode 1138. 字母板上的路径
- redis 查看key的有效期_redis中key设置过期时间
- java中字母用什么单词赋值_Java初学
- 珍爱生命,远离大厂政治斗争
- 科研福利!国内TOP3的超算中心,免费领2000核时计算资源
- Spring Cloud Hystrix的请求合并
- 论文浅尝 | Distant Supervision for Relation Extraction