计算机

您所在的位置:网站首页 cpu对电脑运行速度的影响 计算机

计算机

2024-07-12 11:24| 来源: 网络整理| 查看: 265

注:这篇文章在我看来写的实在是太完美了,基于内存速度,将操作系统整个知识框架基本都容纳于其中去了

转载:https://bbs.feng.com/read-htm-tid-6894518.html

内存越大越好吗? 这个问题如同问:钱越多越好一样白痴。谁嫌钱多?我们假设一个情况,个人需求是线性增长的,那么物质的需求当然是也线性地增加。但大多数情况,个人需求增加并不是“线性”的,这个需要结合拥有的财产来分析。有脑子的人不会将全部财产来满足个人需求的(很不幸,楼主是没有脑子的),所以通常会考虑一些策略来合理限制个人需求的增长。 风筝放完了,拉回内存上。内存是的确越大越好,但是在条件有限的情况下需要合理分配,尤其是根本用不上大内存的情况下盲目追求大内存。我可不是某党的代言人哦,人的需求不变,当生产力足够的时候可以均富什么的我是从来不信的。 增加内存容量会提高计算机速度吗? 本来我想对这个问题来一句:放你的X。后来想想需要结合多种因素,所以X出不来。 搞清楚一些概念: 计算的速度指的是什么速度? 计算机是怎么工作的?当然是计算了,这是废话。计算的速度就是计算机的速度,这是基本的概念。但是能影响的因素很多。 a.计算速度:不同的任务都有不同的计算需求。例如,我叫你不用计算机给我算2的32次方,而我算1+1。你觉得谁快?没脑子的人会说楼主快,有脑子的会说取决于“大脑的运算速度”所以不知道两者的“运算能力”的前提下这个问题是无解的。但是至少有一点可以确定,如果你的智商和楼主差不多,那么我算1+1绝对会比你快。 b.多任务:叫你帮我买个苹果,这任务很简单吧。但是叫完你买苹果后,你老婆要你买雪梨,你老妈要你买西瓜,你老爸要你买个叉烧,你老妹要你买支铅笔。。。你说你没那么亲戚?那么直接忽略。但假设你有吧,你得先帮我买好苹果给我,然后再买一个雪梨给你老婆,接着买一个西瓜给你妈,叉烧给你老爸,别忘了你妹的铅笔。然而你比楼主更没脑子,只会做一次任务交一次任务,所以这几个任务把你累的。。计算机也是一样的,当多种任务递交以后,CPU就会忙于做任务和交任务。内存的作用是什么?内存就是存放你妈或你妹给你的命令和资金的载体,例如一张便条+RMB。她们需要将指令写到便条上并附上资金交给你完成任务的交付过程。总线速度是怎么?就是你妹的写字速度了。 c.多线程:楼主比较聪明,当这些任务性质一样,都是同一个“进程”发出的话,我会叫几个小弟帮我跑路,当这些小弟将买到的东西交给我后,我再整合它们并结束任务。多线程的概念在多核心处理器的时代已经有了,但是在单核心处理器上运行不是很理想,在多核上就有很大的发挥了。进程与线程是两个概念,线程只做一个任务,进程是包含很多要做的任务。 上面abc三点都没有一个与内存容量有关的,你还敢说提高内容容量会提升计算机速度? 当然敢了。。。下面来解释 内存容量是保持做任务速度稳定性的关键。 虚拟内存是什么? 这里说说虚拟内存,才怪,先说说进程。 进程是运行的程序,动态的,别搞错了!一个程序是静态的,只是一堆代码的组合,也就是数据。 程序是需要被操作系统加载运行才能叫做进程的,在加载的过程中,操作系统为其开辟内存,链接库等等。。当启动一个可执行文件后,操作系统会使用一个System Call(系统调用)来生产出一个空壳进程,然后空壳进程将可执行文件读入后就可以运行了。 每个进程都使用一个虚拟的内存空间,而且两个进程之间是不能访问各自私有的代码的,这个虚拟的内存空间甚至会比物理内存地址空间还大。虚拟内存空间需要经过翻译操作才能找到具体的物理内存空间的。 下面说说虚拟内存了。 虚拟内存是一种抽象,将所有的储存器组合起来抽象成一个连续的地址空间。如cache地址空间 内存地址空间 硬盘地址空间。 虚拟内存的地址叫做虚拟地址,物理内存的地址叫做物理地址。两个地址之间转换需要经过页表这种玩意。页表包含很多的页,每个物理页包含一组的物理地址空间,例如4KB一页之类的,虚拟页也是一样的道理。 每个进程都有一个虚拟页表,计算机系统将这个进程的页表进行翻译就能找到对应的物理内存位置了。 这里做一个实例,我的内存是4GB的,操作系统内核占了3GB吧。我的一个程序全部加载需要4GB,如果没有虚拟内存概念的话,不是傻眼了吗?实际上我这个程序并不需要完整地载入内存里运行,因为很多代码不是运行时必须要的,例如一些异常处理机制的代码。解决方法是将4GB分成一个个的页面存放在磁盘上,当需要的时候从磁盘里将需要的页面调到内存运行。所以实际上我这个程序运行可能只需要100MB就足够的了。 举个具体例子吧,A程序全部的功能和运行需要的数据加起来需要100个页面,但是实际上被操作系统加载后只会调入10个页面左右到内存,当A程序需要的时候才要求操作系统从磁盘上调那些页面到内存继续运行。对于这个程序开始时需要多少个页面来运行呢?这个得问程序猿了。一些比较先进的操作系统,会跟踪用户的日常习惯,例如Win7每次机器重启前都会跟踪用户对某个程序的使用状况,例如经常使用某个程序的某个功能啊,那么包含这个功能的页面在下次重新打开这个程序的时候会被立即载入内存。 值得注意的是,由于iOS设备的储存器是有限的,且容量比较小,所以是没有虚拟内存这个概念的。所以程序猿需要小心又小心地开发程序了。。 内存容量的影响是什么? 当物理内存都用光的时候,如果有进程请求将一些在磁盘上的一些虚拟页调到内存继续运行,那么操作系统就会将其它进程已缓存在内存上的页面移到磁盘上,这个过程叫做出页面,如果你的操作性系统在不停地出入页面,性能就会大打折扣的了,因为CPU几乎什么事也干不了,就忙于将页面调出调入。而且从磁盘上调出调入页面的速度也是非常慢的,取决于你的磁盘读写速度了。所以有一个大内存能保障更少的出页面产生。 怎么判断是否需要添加内存? 看完上面的一堆废话可以了解到,内存是以页为单位储存的,程序运行需要将自己部分的页加载到内存上运行,到底那些页是需要加载到内存的,是根据操作系统的设计和当前程序的设计来决定的。我们可以简单地判断当前机器内存是否足够,打开进程监视器,看一下出页面数据,如果量比较大,而且在增长中,那么就证明内存不够了。其余的红色,绿色,蓝色,黄色数据几乎都没有意义。 针对一些启动时需要加载很少的页面,但是随着运行时的增加,需要的页面却成倍增加的程序,例如各种生产类软件,如PS,Word等。。PS在启动时不需要载入太多的页,但当打一张图片后,它就需要向操作系统请求增加页面来缓存这些打开了的图片。所以内存在这些应用上意义也比较大。 操作系统上的差异 很多人说Windows浪费大内存什么的,其实大多都是停留在XP的时代,当然WIn7也没有好太多,但至少好了。 OS X的内存管理是,进程关闭后不立即将页面清除,而先保留在内存里,当下次进程再启动时就能快速映射页面。而且在进程运行时尽量加载更多的页面。 相对的XP则是随时将空闲进程移出页面,WIn7好了点,也不会理解转移页面。但是也不会尽可能地为进程载入更多的页面,这点不同于OS X。 载入过多的页面到内存的好处就是相应的进程会运行得比较快,缺点就是内存占用多。 举个实例,从Photoshop里打开一张超大的图,例如500MB的。修改这个500MB的图时,是不能分几次送入内存的。在正常运行的8G 10.8.4 已经去了3G左右了,加上楼主平时喜欢开了一大堆暂时用不上的应用,致使内存剩下几十MB。如果突然来一个大家伙,操作系统就需要将一些限闲置的页面,如非活跃的页面数据转移到磁盘,从而产生过多的出页面,所以在图片载入时就会卡得厉害。而且更重要的一点是,我这里是假设500MB的图用PS打开需要申请500MB的页面,但是实际情况是根据图片的复杂性来定的,可能出现申请的页面超出好几十倍的情况。如楼主改了一张图片,200MB左右的,用PS打开后,PS占了4GB的物理内存。OS X与Windows内存管理上的差异主要在:OS X不会主动将闲置的页面移除内存,Windows则相反。 所以很难说OS X的内存管理一定很好,但是对于普通用户来说非常不错了。我没事就开几个暂时用不到的应用,当真的需要时就能直接打开使用了。 现代的操作系统都有一套很好的内存管理算法,能计算出用户使用程序的习惯。例如某个程序全部的页面为100个,启动时只需要10个页面就可以了。但根据用户的使用习惯,下次再打开这个程序的时候就不一定加载10个页面到内存了,也可能20个,30个等。 对内存的一些误会 很多人将浏览器卡,操作系统运行卡等原因归咎于内存。很多情况下是错误的。操作系统的卡很大的原因在于系统调用堵塞了,例如某个进程在霸占着CPU,其它进行想要通过操作系统的系统调用来实现自己的任务就比较困难了,因为需要等待某个进程释放CPU。。 计算机的卡,首先需要参考的是当前CPU的使用率,其次才是内存容量。 另外打开程序慢的原因在于磁盘速度,因为写页面太慢。 总结 合理地添加内存对条件不充裕的人来说是非常必要的。不要盲目追求过多的内存,就算OS X是这样的内存管理机制,也不意味着你不是在浪费内存。对于XP来说,有大内存不用,是XP对内存的浪费。而如果是你让进程占着内存又不使用这个进程的话,就是你对内存的浪费



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3