Chinaunix

标题: 请教虚拟内存的知识 [打印本页]

作者: zhangljian    时间: 2005-05-23 09:55
标题: 请教虚拟内存的知识
小弟刚开始学linux操作系统对虚拟内存的知识有些疑问,想请教这里的高人,问题可能会有些幼稚还请见谅啊!!!
虚拟内存是在辅存(磁盘)开辟出来的,就是是说是实在的东西,那么我想问的是:
1.虚拟内存是磁盘上一段连续的物理的(确实存在的)存储空间吗?

书上说linux的虚拟地址空间为0-4G,,分为内核空间(最高的1G字节,共享的)和用户空间(较低的3G,各进程所拥有),问题:
2.每个进程可有自己的虚拟空间,那么岂不是只能由很少的(10几个)进程同时运行就会把磁盘空间占满了吗?可事实上linux上同时运行远比这多得多的进程,这是怎么回事呢?
作者: wangrujun    时间: 2005-05-23 16:22
标题: 请教虚拟内存的知识
1.  虚拟内存是磁盘上一段连续的物理空间。
2.  进程有虚拟空间,这些空间只有在用到的时候才被分配。比如linux上有100个进程,每个进程使用10M内存,那么总共只有1G内存。
  比如你有512M内存 + 1024M swap,那么基本上你会用掉500M左右内存和600M左右swap。
作者: zhangljian    时间: 2005-05-23 17:40
标题: 请教虚拟内存的知识
谢谢wangrujun的回答!!!
作者: mik    时间: 2005-05-25 00:19
标题: 请教虚拟内存的知识
晕倒。。。菜鸟。。。概念不清。。

讲讲几个基本概念。。

1、地址空间: 在 32 位机器系统,地址线是32位,最大的寻址空间是32位,即:4G空间。这是CPU能访问的最大空间。

2、实在内存:你机器上插有多少内存,无地址空间是两码事。当然,一般来说:你机器上最大也只能插4G的内存,多了也没用。

3、交换空间:当你机器上的512M内存用完了,系统只能在硬盘上模拟一段区域作内存使用。将内存中暂时不用的东西,先交换到这段空间,以让出内存给更紧迫任务使用。
    至于,如何调度,如何分配是操作系统的事情了。在Windows系统下,出产生一个pagefile.sys文件作交换文件使用。unix/linux下就是swap分区了。

4、虚拟内存:系统为每一个任务为分配内存空间都是4G,所以每个任务都以为自已有4G的内存使用。范围是:0x0000000h----0xFFFFFFFFh。这是一个线性的地址。系统要为每个任务的虚拟内存转化为线性地址。再将线性地址映射为实际的址址。
    这是一个很复杂的过程,不是三立两语能说清楚的。
作者: jinbsd    时间: 2005-05-25 10:01
标题: 请教虚拟内存的知识
知道什么叫段页机制吗?线性地址(常叫"虚拟空间"空间影射物理地址是通过页机制进行的,看看系统处理缺页异常的!你就应该知道系统是怎么实现交换分区的寻址工作了!
还有楼上说的第4点是正确的,每个进程看到的地址空间是线性地址空间,他们看来4g的空间(权限限制了高1g)是自己使用的!
作者: jinbsd    时间: 2005-05-25 10:13
标题: 请教虚拟内存的知识
不同的进程相同的地址(线性的),通过页机制影射到不同的物理地址.

如果,影射到的物理地址在实际内存中就正常访问,不在的话,会产生一个缺页异常,然后由虚拟内存管理系统在内存和swap之间进行页的转入转出,之后可以访问,我说的是比较笼统的,你可以在这里简单理解一下基本原理.
作者: zhangljian    时间: 2005-05-26 22:43
标题: 请教虚拟内存的知识
我现在是个菜鸟,但我不想以后还是菜鸟!!我也不是不好好看书就来问问题,而是看了好几本书,看了多遍可是有些问题还是不懂!!继续请教!(脸皮很厚)
有这样的关系:逻辑地址-〉现性地址(虚拟地址)-〉物理地址
进程运行的过程中,物理内存中出现了缺页的现象,就要从虚拟内存空间中调入到物理内存,请问:
1. 是不是只要线性地址确定后,在内存中的映射地址(即物理地址)就确定了?(但是物理内存与虚拟内存的空间不一样大呀)如果是这样的话,多个进程运行时,就可能会出现某些物理内存用不到的现象,而有些又不断的换入换出,降低了内存利用的效率。
2.还是这样的:真正在物理内存中分配了个该页后,再确定线性地址?这样的话,线性地址又不能与逻辑地址相一致了,怎么回事啊?


献丑了!!
作者: zhangljian    时间: 2005-05-30 10:40
标题: 请教虚拟内存的知识
倒,没人理我?
作者: richardhesidu    时间: 2005-05-30 11:58
标题: 请教虚拟内存的知识
原帖由 "zhangljian" 发表:
我现在是个菜鸟,但我不想以后还是菜鸟!!我也不是不好好看书就来问问题,而是看了好几本书,看了多遍可是有些问题还是不懂!!继续请教!(脸皮很厚)
有这样的关系:逻辑地址-〉现性地址(虚拟地址)-〉物理地址..........

兄弟先补一下操作系统原理吧.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2