很基础但我一直没搞懂的问题,大家看下

zy55560593 2010-10-14 09:29:57
每个进程拥有4GB虚拟地址空间,一个进程在一个地址中存储的东西,另一个进程可以在同一个地址存不同的东西

不理解这句话,操作系统是怎么实现的喃?如果一个进程用了4G,切换到另一个进程难道要把这4G保存下来,不然怎么实现互不干扰的喃?
...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-10-14
  • 打赏
  • 举报
回复
《深入解析Windows操作系统-Windows Internals》
《Windows核心编程》
zy55560593 2010-10-14
  • 打赏
  • 举报
回复
谢谢
最后一个问题了,最极端如果两个程序都需要4GB空间,则切换的时候,就需要4GB虚拟内存来存储换出的内存是吗?
cd2108006026 2010-10-14
  • 打赏
  • 举报
回复
"另一个进程可以在同一个地址存不同的东西
"
这里说的同一地址,是指虚拟地址。
但是不同进程的相同虚拟地址,肯定是映射到不同的物理地址上!
luciferisnotsatan 2010-10-14
  • 打赏
  • 举报
回复
虚拟内存就是硬盘上的文件。操作系统会把不常用的内存切到虚拟内存里,当程序后来又访问了那段被切出去的内存时,会产生一个页面错误,然后回去虚拟内存里加载回来。
你可以去看下Windows核心编程 或者一些讲操作体统的书。
zy55560593 2010-10-14
  • 打赏
  • 举报
回复
但是我理解的虚拟内存是内存的扩展,最大虚拟内存+物理内存才是=4GB,一个进程拥有者4GB空间,那怎么会拿虚拟内存来保存切换的书籍喃

学的一知半解的,求指点
zy55560593 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]
“如果一个进程用了4G,切换到另一个进程难道要把这4G保存下来,不然怎么实现互不干扰的喃?”

这时虚拟内存就登场了
[/Quote]

你是说 操作系统还真是这么干的?
进程切换的时候,把真实内存的东西保存到硬盘,然后从硬盘加载另外一个进程的内存数据?中间用了虚拟内存什么的?
healer_kx 2010-10-14
  • 打赏
  • 举报
回复
看Windows核心编程了,里面说的清楚,我说不清。。。
luciferisnotsatan 2010-10-14
  • 打赏
  • 举报
回复
“如果一个进程用了4G,切换到另一个进程难道要把这4G保存下来,不然怎么实现互不干扰的喃?”

这时虚拟内存就登场了

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧