静态存储和动态存储的区别
1. 静态内存
静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。
程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会
自动释放所占用的内存空间。
变量的分配与释放,都无须程序员自行考虑。
基本类型,数组
2. 动态内存
用户无法确定空间大小,或者空间太大,栈上无法分配时,会采用动态内存分配。
处理器不工作,电脑什么都做不了。
处理器的工作就是处理指令(多条指令就构成一个程序)。
处理器从内存中取指令集(程序)。
问题是如果断电的话,内存中的指令就会丢失。因而内存归类为“易失性”介质。
所以我们要把程序、数据存储在不易失性的介质中,比如硬盘和光盘。
当你双击系统桌面程序图标运行程序的时候,程序大多数存储在电脑的硬盘中,然后要加载入内存,最后处理器要在一个称为“内存控制器”的电路控制下读取相应的指令。
在因特尔处理器中,内存控制器装载在北桥芯片组上,AMD则直接装载入处理器中。下图是对上述过程的一个概括。
内存有易失性,处理器为什么不直接从外存中取指令呢?
因为外存是机械结构,内存是电路结构的,数据的传输速率上来看内存要比外存快许多。从更好的发挥处理器的性能上看,要从内存中读取数据,越接近处理器传输速率处理器的利用率就越高。
重点内存:内存分为静态内存和动态内存两种。
动态内存:个人电脑用的是动态内存,在这种存储器中,每一位数据存储在存储器芯片中的一个微型电容器中。电容器是非常小,多以可以制造在一个小面积上,“密度高”。
另一方面,电容器在一段时间后就会失去电荷,所以动态存储器需要一个充电过程,叫做“刷新”,这种过程时常发生。在此期间,无法读取或写入数据。
因此动态内存比静态内存便宜,耗电也少得多。但是,动态内存数据是不容易获得的,传输速率不能像CPU那样快。
静态内存:传输速率可以与CPU一样快,因为每个数据位存储在称为触发器的电路上,提供零或非常小的延迟数据,因为触发器不需要刷新周期。
但是,触发器需要几个晶体管来制造,晶体管要比单个电容大得多。这意味着在同一个静态存储器只有一个触发器的区域上,动态存储器上有数百个电容器。
因此,静态存储器提供较低的密度-------芯片容量较低。
静态存储器的另外问题: 更昂贵,
消耗的能量更多,因此发热量也相应更高。
虽然静态内存的传输速率比动态内存快,但是静态内存中的实际问题使它不能成为内存的主要构成部分。
实际的解决方案是在处理器通过少量的静态内存来读取动态内存中的数据。这种技术叫做缓存技术。现在这个少量的静态内存装载入处理器中。
静态内存复制最近经常访问的内存中的数据,并且猜测处理器下次要访问的数据,在处理器访问之前,把它加载到静态内存中。
目标是让处理器访问内存缓存,而不是直接访问内存,因为它可以立即或快地从内存缓存中检索数据,而在访问内存上的数据时,它必须等待。
处理器访问内存缓存而不是内存越大,系统就越快。
我们将在下一期解释内存缓存是如何工作的。好了今天的课程到这就结束了,有共同爱好的同学可以留言交流。
2023-08-15 广告
2018-02-05 · 百度知道官方认证企业
a) 静态内存分配在编译时完成,不占用CPU资源; 动态内存分配在运行时,分配与释放都占用CPU资源。
b) 静态内存在栈(stack)上分配; 动态内存在堆(heap)上分配。
c) 动态内存分配需要指针和引用类型支持,静态不需要。
d) 静态内存分配是按计划分配,由编译器负责; 动态内存分配是按需分配,由程序员负责。