进程的虚拟地址空间就是指进程的大小么?
时间:2011-12-05
来源:互联网
还有内存是由操作系统管理的,用户程序没法直接访问的是吗?
所以说我们运行用户程序的时候,程序最初都是存放在磁盘上的,要等到操作系统的调入才能放到内存上去执行,而存放在磁盘上的程序就是所谓的可执行映像文件,是这样吗?
作者: ynnej_ivy 发布时间: 2011-12-05
我在书上看到说,32位地址线的进程虚拟地址空间是2GB,这里说的地址空间就是可以容纳这个进程大小的最大空间的意思么? 那么如果这个程序很大,超过2GB了怎么办?
还有内存是由操作系统管理的,用户程序没法直接访问的是吗?
所以说我们运行用户程序的时候,程序最初都是存放在磁盘上的,要等到操作系统的调入才能放到内存上去执行,而存放在磁盘上的程序就是所谓的可执行映像文件,是这样吗?
32位地址线就说明有32根地址线,那么可以表达数据是在0~2的32次方之间,也就是4GB,只不过User Mode使用的只有2GB,其中的2GB由Window kernel使用(根据CPU体系结构的不同而不同),User Mode区域的代码要Call window kernel之间的Code的话要透过WINDOW APIs,实际上是透过中断来实现.
如果程序很大,大于4GB,原则上没有这么大的程序,即使有也没有关系,由于地址空间只有4GB,应用程序并没有一次把所有的代码加载到地址空间中,只有把部分的加载到地址空间中,但是如果访问到的Code没有加载到地址空间上哪这么办呢?这样会透过中断的方式把要访问的代码加载到地址空间中,暂时不需要访问的可以写会磁盘.
还有内存是由操作系统管理的,用户程序没法直接访问的是吗?
================
当然可以访问,但是访问的都只是User Mode的内存,如: char *p = new char[2];
*p = 2;这样就是访问内存呀,只不过不能访问Kernel Mode中的内存,如果硬去访问,那么会导致访问违规错误提示. 如: char *p = NULL, *p = 10;
存放在磁盘上的程序就是所谓的可执行映像文件,是这样吗?
================
存放在磁盘上的dll,exe...程序就是所谓的可执行映像文件.
作者: yuucyf 发布时间: 2011-12-05
这个地址有2G是自己分配的,有的系统有3G
虚拟内存是通过映射文件形成的
所有你有100G的进程,但是在内存中只有2G的映射,操作系统会为你做好映射工作的
这4G的虚拟内存相当于一个AWE,地址窗口扩展,所有可以运行你所有大小的进程
我们运行用户程序的时候,程序最初都是存放在磁盘上的,要等到操作系统的调入才能放到内存上去执行,而存放在磁盘上的程序就是所谓的可执行映像文件,是这样吗?
是这样的
作者: sky101010ws 发布时间: 2011-12-05
没法装载
作者: Lactoferrin 发布时间: 2011-12-05
那么如果这个程序很大,超过2GB了怎么办?
没法装载
这个才是正确的回答。
作者: sinservice 发布时间: 2011-12-05
-----
完全错误。
作者: sinservice 发布时间: 2011-12-05
---
内存都是直接访问的。
如果每一次指针操作都经过操作系统,那么,程序肯定慢死。
作者: sinservice 发布时间: 2011-12-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28