免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1811 | 回复: 8
打印 上一主题 下一主题

请教虚拟内存的知识 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-23 09:55 |只看该作者 |倒序浏览
小弟刚开始学linux操作系统对虚拟内存的知识有些疑问,想请教这里的高人,问题可能会有些幼稚还请见谅啊!!!
虚拟内存是在辅存(磁盘)开辟出来的,就是是说是实在的东西,那么我想问的是:
1.虚拟内存是磁盘上一段连续的物理的(确实存在的)存储空间吗?

书上说linux的虚拟地址空间为0-4G,,分为内核空间(最高的1G字节,共享的)和用户空间(较低的3G,各进程所拥有),问题:
2.每个进程可有自己的虚拟空间,那么岂不是只能由很少的(10几个)进程同时运行就会把磁盘空间占满了吗?可事实上linux上同时运行远比这多得多的进程,这是怎么回事呢?

论坛徽章:
0
2 [报告]
发表于 2005-05-23 16:22 |只看该作者

请教虚拟内存的知识

1.  虚拟内存是磁盘上一段连续的物理空间。
2.  进程有虚拟空间,这些空间只有在用到的时候才被分配。比如linux上有100个进程,每个进程使用10M内存,那么总共只有1G内存。
  比如你有512M内存 + 1024M swap,那么基本上你会用掉500M左右内存和600M左右swap。

论坛徽章:
0
3 [报告]
发表于 2005-05-23 17:40 |只看该作者

请教虚拟内存的知识

谢谢wangrujun的回答!!!

论坛徽章:
0
4 [报告]
发表于 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。这是一个线性的地址。系统要为每个任务的虚拟内存转化为线性地址。再将线性地址映射为实际的址址。
    这是一个很复杂的过程,不是三立两语能说清楚的。

论坛徽章:
0
5 [报告]
发表于 2005-05-25 10:01 |只看该作者

请教虚拟内存的知识

知道什么叫段页机制吗?线性地址(常叫"虚拟空间"空间影射物理地址是通过页机制进行的,看看系统处理缺页异常的!你就应该知道系统是怎么实现交换分区的寻址工作了!
还有楼上说的第4点是正确的,每个进程看到的地址空间是线性地址空间,他们看来4g的空间(权限限制了高1g)是自己使用的!

论坛徽章:
0
6 [报告]
发表于 2005-05-25 10:13 |只看该作者

请教虚拟内存的知识

不同的进程相同的地址(线性的),通过页机制影射到不同的物理地址.

如果,影射到的物理地址在实际内存中就正常访问,不在的话,会产生一个缺页异常,然后由虚拟内存管理系统在内存和swap之间进行页的转入转出,之后可以访问,我说的是比较笼统的,你可以在这里简单理解一下基本原理.

论坛徽章:
0
7 [报告]
发表于 2005-05-26 22:43 |只看该作者

请教虚拟内存的知识

我现在是个菜鸟,但我不想以后还是菜鸟!!我也不是不好好看书就来问问题,而是看了好几本书,看了多遍可是有些问题还是不懂!!继续请教!(脸皮很厚)
有这样的关系:逻辑地址-〉现性地址(虚拟地址)-〉物理地址
进程运行的过程中,物理内存中出现了缺页的现象,就要从虚拟内存空间中调入到物理内存,请问:
1. 是不是只要线性地址确定后,在内存中的映射地址(即物理地址)就确定了?(但是物理内存与虚拟内存的空间不一样大呀)如果是这样的话,多个进程运行时,就可能会出现某些物理内存用不到的现象,而有些又不断的换入换出,降低了内存利用的效率。
2.还是这样的:真正在物理内存中分配了个该页后,再确定线性地址?这样的话,线性地址又不能与逻辑地址相一致了,怎么回事啊?


献丑了!!

论坛徽章:
0
8 [报告]
发表于 2005-05-30 10:40 |只看该作者

请教虚拟内存的知识

倒,没人理我?

论坛徽章:
0
9 [报告]
发表于 2005-05-30 11:58 |只看该作者

请教虚拟内存的知识

原帖由 "zhangljian" 发表:
我现在是个菜鸟,但我不想以后还是菜鸟!!我也不是不好好看书就来问问题,而是看了好几本书,看了多遍可是有些问题还是不懂!!继续请教!(脸皮很厚)
有这样的关系:逻辑地址-〉现性地址(虚拟地址)-〉物理地址..........

兄弟先补一下操作系统原理吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP