主题:啥子是虚拟内存?
yjlh1234
[专家分:420] 发布于 2005-06-27 17:59:00
如题
能详细解释一下它的作用吗?
谢谢了
回复列表 (共9个回复)
沙发
digital1010 [专家分:1430] 发布于 2005-06-27 19:13:00
顾名思义。就是“假”的了。
如内存不够用。可以用的上呀
板凳
yjlh1234 [专家分:420] 发布于 2005-06-27 19:41:00
如果我在程序中确实要调用那一部分资源
我应该怎么做?
c语言描述 谢谢了
3 楼
心思飞 [专家分:710] 发布于 2005-06-28 12:15:00
虚拟内存还有C来描述吗!一般的系统都可以自己设置的!也就是的硬盘所在的页面大小来定的,一般来说,虚拟内存设置不要大过本身内存的4倍,如果你的内存是256M的,那么就设为从0M到1024M
4 楼
yjlh1234 [专家分:420] 发布于 2005-06-28 18:48:00
我只是想知道它是怎么工作的
5 楼
心思飞 [专家分:710] 发布于 2005-06-28 21:50:00
它的工作原理是这样的:将内存中暂且(很短一段时间)不用的一部分数据以文件的形式存放到硬盘中,释放出来的部分物理内存去执行更重要的程序,这样暂时存放在硬盘中的这些文件就是页面文件的具体内容了。现在就有这样的一种情况:如果物理内存比较小,使用虚拟内存可以提高性能,但是大家知道,硬盘的数据读取速度远远慢于内存,所以,如果你的物理内存已经很大了(例如512MB、1024MB),此时你还将页面文件设置得很大的话,就会出现物理内存还剩余很多,还在使用页面文件,而同时又占用硬盘空间,此举无疑是一种变向的拖慢系统性能,对此, 内存容量在256MB以下,虚拟内存设置为物理内存大小的1.5倍较适宜;当物理内存大小在512MB以上,设置为内存容量的一半比较合适;而介于256MB与512MB之间的设为与内存容量相同值则可,如果内存高达1GB以上,那就完全可以不需要设置虚拟内存交换文件了。
6 楼
yjlh1234 [专家分:420] 发布于 2006-04-22 19:37:00
其实虚拟内存的大小是取决于 该机器的地址总线所能映射的空间大小
而不是简单了主存和辅存之和
这一点 小弟不是很懂
比如一个机器上有1M的可用空间 有1个2M的程序是怎么运行的呢?
是将暂时不用的数据写到辅存吗?如果辅存也不够大 是不是不能运行该程序?
7 楼
glwglw [专家分:100] 发布于 2006-05-02 00:15:00
五楼已经说得很清楚了!
8 楼
yjlh1234 [专家分:420] 发布于 2007-01-06 12:04:00
学了操作系统,我说说我自己的看法吧,
为什么要有虚拟内存呢?因为内存速度快,硬盘容量大,人们想达到这样的存储---->有内存的速度和硬盘的容量,
这样做的好处是并行!并行的好处不用我说了吧~效率高呗!
这样,内存里面会同时存在好几个进程,问题来了,怎么能放得下呢?
所以采用的方法是每个进程(容器)占用一部分内存空间和一部分外存空间[程序的局部性原理,大概率地访问附近空间],这种调度的就是内存和硬盘的交换了,应该属于中级调度,具体的方法有3种:虚拟页式,虚拟段式,虚拟段页式.
基本思想就是,由操作系统管理一个页表,里面的内容是该进程(可浮动的)占用的空间情况:当指令需要访问一个空间时(逻辑地址),操作系统到页表(为了加快查表速度,可以使用联想寄存器)里查该逻辑地址(段号/页号+偏移),段号/页号所对应的物理内存的段号/页号,看它是否在内存中如果在,直接访问,如果不在,发生缺页中断,操作系统启动IO模块(用来将硬盘上的那块调入内存,这里涉及到淘汰算法),并将该进程挂起,当IO模块完事后就通知操作系统,然后继续该进程的运做,这里还有调度时机的问题,可以预调(推测指令要访问的页/段 事先调入),可以在发生缺页/段时才调,可以使用模型反馈,以及工作集的调度方法,
//------
说得有点乱,不过都是自己的看法
9 楼
wuchengwei [专家分:1650] 发布于 2007-04-26 12:55:00
其实虚拟内存的大小是取决于 该机器的地址总线所能映射的空间大小
而不是简单了主存和辅存之和
这一点 小弟不是很懂
比如一个机器上有1M的可用空间 有1个2M的程序是怎么运行的呢?
是将暂时不用的数据写到辅存吗?如果辅存也不够大 是不是不能运行该程序?
既然你的机器上能存储一个2M的程序(程序存放在辅存),那么理论上肯定是可以运行的了,因为已经有足够的辅存空间了
我来回复