一.按地址访问和按内容访问的区别
按地址访问(顺序存储、直接存储和随机存储):我知道这个数据存在哪个地址中,现在我把这个地址给你,麻烦你帮我找出我要的数据来
按内容访问(相联存储):我要找一个数据,数据里其中一段是“XXXXXXX”,麻烦你帮我匹配下有哪些数据包含了这一段的,给我找出来
二.例子说明
以下将通过一个例子说明顺序存储、直接存储、随机存储和相联存储的区别,以下为需要进行存储的数据:
三.顺序存储
使用一个共享的读写装置进行存取,写入的数据以记录的形式进行组织:
地址索引 | N | N+1 | N+2 | N+3 | N+4 | N+5 | N+6 | N+7 | ...... |
如果我要读取地址N+7的数据,那么就需要从地址N开始,一路往右走去搜索地址N+7在哪里,待最后找到N+7之后再把该地址的数据读取出来交给你,如果要读取地址N+N的数据,那么也是需要从地址N开始一直累加地址寻找,直到找到地址N+N在哪里。所以存取的时间是线性的。
典型的例子是磁带存储器。
四.直接存储
与顺序存储相似的是,直接存储也是使用一个共享的读写装置进行数据存取,但每个数据块都拥有一个唯一的地址标识:
如果我要读取地址N+7的数据,那么直接在第三数据块的首地址N+6开始往右找地址N+7在哪里,待最后找到N+7之后再把该地址的数据读取出来交给你,如果要找地址N+5的数据,那么直接在第二数据块的首地址N+3开始往右找地址N+5。所以存取的时间是可变的,根据数据块的数量、大小实时改变的。
典型的例子是磁盘存储器。
五.随机存储
随机存取的每一个可寻址单元都具有自己唯一的地址和读写装置(不是共享),系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关:
地址索引 | N+0 | N+1 | N+2 | N+3 | N+4 | N+5 | N+6 | N+7 | ...... |
如果我要读取地址N+7的数据,那么直接用地址N+7的读写装置把数据拿出来给你,如果要找地址N+5的数据,那么直接用地址N+5的读写装置把数据拿出来给你,速度真的没话说,但是速度快的同时价格也很高,所以一般容量都不会很大。
典型的例子是电脑的主存(8G/16G/32G内存条)
六.相联存储
相联存取也是一种随机存取的形式,每个可寻址单元都有自己的读写装置。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问:
如果我要查找李四的出生年月是什么时间,如果我们在相联存储时使用职工号5199109作为地址来访问存储器(关键字key),那么很快就能知道5199109号是“李四”,“1960年09月”生,工资数为“4000元”。而如果采用随机存储的方法,那么则要确切地指出“李四”的那一项在表格中的物理地址(n+1),但我并不知道“李四”的物理地址究竟是多少,而且职工号“5199109”和姓名“李四”没有逻辑上的关系,因而用常规方法寻找上述答案时,增加了程序的复杂性。