--------------------------------------------------------------------------------
内容(132bytes):
有谁能把虚拟内存,文件映射,堆栈这三者“结合”起来说一下。
我先开一个头:当要准备运行进程A(或打开文件A)时,内存的操作为........
病毒 于 2001-04-26 18:19:13 加贴在 编程乐园 上
--------------------------------------------------------------------------------
内容(351bytes):
WIN32为每个进程分配4GB的虚拟内存空间,是这样分配的,0-4M和2G-3G为共享内存段,所有进呈都可用32位指针访问,4M-2G为应用程序段,映射给每个进程,在该段中,进程只能访问自己的线性地址。3G-4G为系统核心段,大布分为vxd,只有ring 0级代码可访问。其中从0x80000000到0xBFFFFFFF的1GB空间由所有的WIN32进程共享,内存映射文件就使用这段地址空间。(注意:以上说的是WIN 9X)
milanfeng 于 2001-04-27 08:59:14 加贴在 编程乐园 上
--------------------------------------------------------------------------------
内容(67bytes):
"WIN32为每个进程分配4GB的虚拟内存空间",这个恐怕不是吧?
jouwei 于 2001-04-27 11:37:41 加贴在 编程乐园 上
--------------------------------------------------------------------------------
内容(14bytes):
是的,比较多。
[ID:5679] 主题:怎么不是?
[ 转发帖子 回复此帖 相关帖子 ]
--------------------------------------------------------------------------------
病毒 于 2001-04-27 14:35:18 加贴在 编程乐园 上
--------------------------------------------------------------------------------
内容(765bytes):
怎样叫正面回答你提出的问题?
//当要准备运行进程A(或打开文件A)时,内存的操作为........
为A进程分配4GB的虚拟内存空间...
4GB这点是肯定的,(你可以随便翻本书来看看,这个是最基本的)虚拟但并不代表它真正拥有4GB的实际物理内存,而只是操作系统利用CPU的内存分页功能提供的虚拟地址空间。在一般情况下,绝大多数虚拟地址并没有物理内存与之对应,在真正可以使用这些地址空间之前,还要由操作系统提供实际的物理内存。为虚拟地址提供实际物理内存的过程叫做“提交”(Commit)。在不同情况下,系统提交的物理内存的类型是不同的,可能是RAM,也可能是硬盘模拟的虚拟内存。
你说的内存操作难道不是这些么?
还有关于内存映射你是指那种?俺理解为是为进程通讯基于页面交换文件的内存映射,
还是基于数据文件内存映射?(这种是不需要调用文件I/O的),还是可执行文件的内存映射?我想是你没有说清楚。