鱼C论坛

 找回密码
 立即注册
查看: 1860|回复: 10

我想问请教各位cPU内存的分配

[复制链接]
发表于 2014-3-30 17:36:56 | 显示全部楼层 |阅读模式
1鱼币
cpu内存中不是存放着系统数据吗?那我们平常用的一些软件是不是也在内存中存储呢?要是那样的话内存就那么大能成得下吗?
难道是反复覆盖?真得求助各位求真相。最好的话能用通俗的语言告知。麻烦各位了!!!!!!!

最佳答案

查看完整内容

你说的CPU内存,我想就是CPU的内部存储器吧!也就是寄存器,它一般存储的是程序的地址,通过地址来进行索引计算的,而且,在运行程序的时候,是先将硬盘中的程序加载到内存中,通常是一页,因为到了WINDOWS时代,就有了保护模式下内存的分页机制,所以他是一页一页进行读取的,而且内存暂时的,用完之后就被释放了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 17:36:57 | 显示全部楼层
你说的CPU内存,我想就是CPU的内部存储器吧!也就是寄存器,它一般存储的是程序的地址,通过地址来进行索引计算的,而且,在运行程序的时候,是先将硬盘中的程序加载到内存中,通常是一页,因为到了WINDOWS时代,就有了保护模式下内存的分页机制,所以他是一页一页进行读取的,而且内存暂时的,用完之后就被释放了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 18:03:06 | 显示全部楼层
现在的CPU都是32位寄存器有 EAX  ECX EDX EBX ESI EDI ESP EBP EIP EFLAG 等
CPU中的存储器不叫内存而叫寄存器,只是短暂用于存储数据和指令,不停从各个寄存器间来回转移数据和指令。
而且CPU一般有3级缓存,不是直接向内存访问数据和指令,而是一级级通过1级缓存访问2级缓存,2级缓存再访问3级缓存,最后由3级缓存访问内存。

首先一个概念:程序都需要加载入内存才能被运行

平常的软件是一个编译好的二进制代码,打个比方 qq.exe只是躺在硬盘的一堆0和1的代码,只有机器才读得懂。只有当qq.exe被加载入内存后,然后存放在缓存中,CPU再去访问缓存。程序才得以运行,运行中的程序叫进程,进程只是一个资源管理器,真正动态干活的是线程。

现在内存一般都是2G以上了,以前内存只有256M的时候都放得下,虚拟内存技术可以让低内存也可以正常运行软件,当运行qq.exe物理内存不足时,便把不使用的内存通过某种算法置换到硬盘上,空出来的内存才能继续加载运行程序。

所以硬盘里存的是程序,程序都要加载进内存才能运行,程序是2进制代码,现代CPU不会去访问内存和硬盘的,因为CPU速度太快了,总飞快的干完自己的活等别人很累的,这样效率也很低。CPU通过某种算法把内存中的代码和数据提前取出来放到缓存中,这是流水线和超流水线。并行干活效率就高了。

提高计算机运行速度最有效的方法就是加内存条了,因为开机后操作系统是需要常驻内存的,所以一开机XP就占了200M,Win7的话更多占了600多M,然后你再运行个QQ、看个电影、听个歌、打开几个网页后,1G多内存就占用了。物理内存不足就用虚拟内存在内存和硬盘间来回置换,所以当你开很多软件后就很卡了,因为来回置换内存数据到硬盘效率很低。

硬盘--->>内存-->>CPU-->>3级缓存-->>2级缓存-->>1级缓存-->>寄存器
他们之间的速率差不多都相差一个数量级,也就是10倍的差距。而且速度越快的存储装置越贵,缓存越大的CPU越贵。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 18:05:39 | 显示全部楼层
啰啰嗦嗦说了一大堆,希望你能看懂,如果不太清晰的可以问我或者谷歌。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 18:14:03 | 显示全部楼层
厉害,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 19:37:05 | 显示全部楼层
这个问题不复杂,很多程序都是在硬盘上的,需要时读取,不需要的就不读取。比如一个windows 20多G 没必要全读到内存,需要哪个程序时再读到内存。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 21:16:19 | 显示全部楼层
程序并不是都放在内存中的,平时不用的程序都放在硬盘中,待到用是再由cpu从内存中调用,这时候的程序会暂时存放于内存中,用完之后 再把内存空间释放 来执行下一个程序  明白没?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-31 23:14:29 | 显示全部楼层

大神,本人实在是新手所以鱼币不多。还望见谅。  还有就是你说的一页是什么样的存储方式?本人实在是菜鸟,还请指导。麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-31 23:17:28 | 显示全部楼层
福禄娃娃 发表于 2014-3-30 18:03
现在的CPU都是32位寄存器有 EAX  ECX EDX EBX ESI EDI ESP EBP EIP EFLAG 等
CPU中的存储器不叫内存而叫寄 ...

大恩不言谢     我只能说 现在这社会像你这种热心人不多了   至于没有把你弄成最佳答案 纯属意外还望见谅
真的感谢!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-31 23:43:43 | 显示全部楼层
王鹏亮 发表于 2014-3-31 23:14
大神,本人实在是新手所以鱼币不多。还望见谅。  还有就是你说的一页是什么样的存储方式?本人实在是菜鸟 ...

页从某种程度上说,它是一个单位,一页=4kb的内容,也就是说程序在加载的时候是一页一页往进加载的,这个内存的分页机制就牵扯到了,操作系统的运行模式,说起来可就多了,如果想具体了解的话,可以推荐看一下甲鱼大哥的“加密与解密系列”的PE结构原理,或者"Win32汇编语言程序设计"的视频!那里有更加详细的说明!这里是下载地址:http://blog.fishc.com/1674.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-1 07:55:16 | 显示全部楼层
王鹏亮 发表于 2014-3-31 23:17
大恩不言谢     我只能说 现在这社会像你这种热心人不多了   至于没有把你弄成最佳答案 纯属意外还望见谅 ...

没事,慢慢来,学着学着你就都会了。大家都是这么过来的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 01:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表