在操心系统基础4我们已经介绍了OS依赖的重要硬件CPU,下面我们来介绍操心系统依赖的另一类重要部件-内存,这里说的内存是比较宽泛的概念,是指存储器(Memory)。
存储器(Memory)
是用来存储程序和数据的部件。
存储器的概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在计算机系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。存储器根据控制器指定的位置存入和取出信息。对于计算机来说,有了存储器,才有了记忆功能,才能保证正常工作。
存储器的分类
按存储器的读写方式:(指半导体存储器)分为 RAM(随机存储器),ROM(只读存储器),Cache(高速缓存)
RAM
随机存取存储器(Random Access Memory)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
ROM
只读存储器(Read Only Memory),顾名思义,就是这样的存储器只能读,不能像RAM一样可以随时读和写。在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。
ROM可以细分为:PROM 可编程程序只读内存(Programmable ROM)、EPROM 可抹除可编程只读内存(Erasable Programmable ROM)、EEPROM 电子式可抹除可编程只读内存(Electrically Erasable Programmable ROM)、快闪存储器(Flash memory)等。
Cache
高速缓冲存储器,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问内存,当然,如果需要的数据在Cache中没有,CPU会再去读取内存中的数据。
按存储元的材料:分为半导体存储器(常做主存)、磁存储器(磁带、磁盘)、光存储器(光盘)
按和CPU的联系:分为主存(也叫内存)、辅存(外存)
存储体系
理想的存储体系应当具有充足的容量和与CPU相匹配的速度。但是实际的存储器都是非理想化的,其制约因素是价格(每位成本)、容量和速度。这三个基本指标是矛盾的。存储速度越高,每位成本就越高。随着存储容量的增大,就得使用速度较低的器件。
合理的分配容量、速度和价格的有效措施是实现分级存储
基本可以划分四个层次:寄存器、高速缓存、主存、外存
- 寄存器是最高层次的存储部件,容量最小,速度最快。寄存器对程序员是不透明的,对它的访问需按寄存器名访问而不是按地址。
- 任何程序需要在计算机中执行,都要首先将其调入主存中,才能由CPU执行。
- 存储系统中高速缓冲Cache存储器和主存之间主要解决的问题是速度不匹配的问题,解决办法:一个是提高主存储器的速度,采用多模块交叉存储技术;另一种是在CPU和主存储器之间增加高速缓冲存储器。
- 主存和辅存主要解决存储体系的容量问题:解决办法,采用虚拟存储技术。
- 高速缓存和主存之间通过辅助硬件来进行,主存和辅存之间通过辅助硬件和操作系统之间来完成。
程序访问的局部性原理
程序访问的局部性原理是建立多级存储体系的可行性基础。它告诉我们,CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个局部。这个局部包含了3个方面的意义:
(1) 时间局部性:如果一个信息项正在被访问,那么在近期他很可能会被再次访问到。程序循环、堆栈等是产生时间局部性的原因。(2) 空间局部性:在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。(3) 顺序局部性:在典型程序中,除转移类指令外,大部分指令是顺序执行的。此外,对大型数组的访问也是顺序的。指令的顺序执行、数组的连续存放等是产生顺序局部性的原因。
由于这3个局部性的存在,才有可能将计算机频繁访问的信息放在速度较高的存储器中,而将不频繁访问的信息放在速度较低、价格也较低的存储器中。
假设有一个两级的存储系统,第一级容量为1KB,访问时间为1 us(微妙,一秒的一百万分之一,即1秒=10^ 6微秒。缩写为μs(国际单位制允许用字母u代替μ)),第二级容量为1MB,访问时间为10us。CPU访问存储系统时,先访问第一级,如果信息不在第一级,则有存储系统先把第二级的信息送到第一级,然后再由CPU从第一级中读取。如果100%的信息都可以从第一级中得到,则整个存储系统的平均访问时间就等于第一级存储器的访问时间1us。如果在第一级中能得到的信息的百分比下降,则平均访问时间就要加长。利用访问的局部性,可以是访问第一级的存储器的百分比很高,整个层次存储系统的平均访问时间可以很接近第一级的访问时间。
命中率(Hit Rate)
在层次结构的存储系统中,某一级的命中率是指对该存储器来说,要访问的信息正好在这一级的概率,用命中的访问数与总访问次数之比计算, 用H表示命中率。其中,最主要的是指CPU产生的逻辑地址能在最高级的存储器中访问到的概率。
在基于访问的局部性原理而实现的存储器层次体系中,如果存储器的容量足够大、系统调度得当,可以获得较高的命中率 H
CPU访问存储
命中(HIT)、没有命中(MISS)、缺页(PAGE_FAULT)