存储器顾名思义当然是用来存储东西的,哈哈,是的在计算机中我们用存储器来存储数据。
存储器又分为主存储器,简称主存,和高速缓冲存储器,那这个高速缓冲存储器通常是集成在cpu中的,高速缓冲存储器中常常放一些我们要用的频率高的数据。当然还有硬盘,我们也把它称之为存储器,那我们在硬盘中存放的是我们一般不常用的文件,其实硬盘就像一个仓库一样,是来保存我们不常用的数据的。
那我今天主要要说的是主存,主存在计算机中是一个怎样的存在呢,那就是我们的计算机在执行任务时,我们的数据是在硬盘中存放的,把在硬盘中存放的有用的数据加载到主存中,cpu通过访问主存来获取数据来进行分析和计算,进而在把数据返回到主存,然后在把它放到我们的硬盘中存储起来,即这就是主存,那可以看出主存实际上就相当于我们临时搭建的一个仓库,用来临时保存我们的文件的,在计算机断电之后,即我们将计算机关闭之后,这个仓库就会被销毁,那就是我们这里面所存储的数据都会消失不见的。那这就是主存了。
在我们上面所说到的要将磁盘中的文件加载到主存中,那这时通过一些程序实现的,那这个程序就是操作系统,操作系统就是我们计算机中的管理者,用来管理我们的硬件资源,使得资源得到合理的分配。
而我们在实际存储时是将主存划分成几个不同的段,主存的最高地址向下存放的是我们的操作系统程序,最低地址即0向上的一段区域是不被利用的,接下来我们把余下的内存区域又分为静态去和动态区,静态区是挨着未分配的区域向上的一段区域,那这段区域为可读可写数据区域,只读,且不可写的区域,动态区挨着操作系统向低地址的即就是我们的栈区,中间为可共享的区域,存放的是我们的共享库函数,比如printf()函数,最后的一段区域即就是我们的堆区了,堆区是供我们的程序在运行时申请内存区域时所利用的空间,堆区是向上增长的,栈区是向下生长的,即是从高地址向低地址生长的,堆是向上生长的,即是从低地址向高地址生长的。
在我们想要运行我们的程序时,操作系统会根据程序的分区情况,将程序加载到它相应内存区域中去,这样有助于保护我们的程序。