永发信息网

如何理解 系统为每个新建的进程创建一个虚拟的地址空间? 是指创建一个页表吗?

答案:2  悬赏:30  手机版
解决时间 2021-02-25 16:46
  • 提问者网友:你给我的爱
  • 2021-02-25 06:25
还是不理解虚拟地址空间的这个概念,觉得好抽象, 首先我们编写的程序都刚开始都是在磁盘上的,现在还不能算是进程,当系统或用户调用CreateProcess函数的时候就创建了一个进程,这个时候说系统会为这个进程创建一个虚拟的地址空间,嘛意思么?程序的代码现在要从原来的磁盘上搬移到某个地方去么?还是位置不动就建立一个映射表,但是磁盘上应该没有所谓的和内存一样的地址的概念的吧,磁盘的地址是用(盘面,磁道号,扇面组成的)。。。难道说这就是用页面文件用来模拟内存的做法,这样磁盘中划出来的用来做页面文件(交换文件)的部分现在就有了地址和内存相同的地址的概念(如果是的话怎么做到的),如果是这样的话。。。那么在创建进程的时候应该要把程序用到的代码段数据段等搬到页面文件或者内存中才能做地址映射吧。。我已经凌乱了,谁给我解释下
最佳答案
  • 五星知识达人网友:不想翻身的咸鱼
  • 2021-02-25 07:17
只有当程序被加载到内存中(通常意义上的"运行")时,计算机才会进行"计算"
程序被加载时,系统会为该程序在内存中创建一个虚拟的地址空间,防止内存泄漏的发生,更好的使垃圾回收机制起作用.
全部回答
  • 1楼网友:旧脸谱
  • 2021-02-25 07:39
你好! 我的理解是这样的,首先磁盘也是线性编址的,盘面磁道和扇面等只是驱动层面的概念,在OS中磁盘被抽象为一个设备文件,按字节编址的,和内存基本类似。程序在磁盘中只是一个文件,当被调用运行时,OS把可执行代码调入内存,为其分配一片物理地址空间,并建立进程的虚地址空间到这片物理地址空间的映射,也就是页表。这样进程发出的虚地址空间的访问指令经过MMU和页表的转换就能到达实际的物理地址空间。 打字不易,采纳哦!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯