简介

在计算机科学中,随机存取(更精确地或更通俗地称为直接访问)是能够从可寻址元素的集合中访问任何数据项,与任何其他方式一样容易和有效地进行存取,无论集合中可能有多少元素。随机存取法简单地说就是进行随机存取的方法。随机存取法在计算机数据存取和计算机网络中都有广泛应用。

硬件与软件硬件角度从硬件角度看实现随机存取就是设计随机存取存储设备。我们最常见的就是随机存取存储机器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。

存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。按照存储单元的工作原理,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。1

软件角度在软件角度,主要从两方面来考虑:

1. 在数据结构,直接访问意味着访问一个列表中任何一项在固定的时间(不依赖它在列表的位置及列表的大小)。很少的数据结构可以保证这一点,除了数组(和相关的结构,如动态数组)。在许多算法中需要直接访问,或至少有价值,例如二进制搜索,整数排序。2

2. 通过面向数据的设计方法。面向数据的设计是一种通过根据如何在程序的各个阶段中组织数据来最大限度地提高局部引用的方法。

计算机网络在计算机网络中,对信道的访问,也存在随机获取,下面介绍几种常见的方法:

Aloha是世界上最早的无线电计算机通信网。它是1968年美国夏威夷大学的一项研究计划的名字。70年代初研制成功一种使用无线广播技术的分组交换计算机网络,也是最早最基本的无线数据通信协议。取名ALOHA,是夏威夷人表示致意的问候语,这项研究计划的目的是要解决夏威夷群岛之间的通信问题。Aloha网络可以使分散在各岛的多个用户通过无线电信道来使用中心计算机,从而实现一点到多点的数据通信。

ALOHA协议分为纯ALOHA和时隙ALOHA两种。

纯ALOHA

ALOHA协议的思想很简单,只要用户有数据要发送,就尽管让他们发送。当然,这样会产生冲突从而造成帧的破坏。但是,由于广播信道具有反馈性,因此发送方可以在发送数据的过程中进行冲突检测,将接收到的数据与缓冲区的数据进行比较,就可以知道数据帧是否遭到破坏。同样的道理,其他用户也是按照此过程工作。如果发送方知道数据帧遭到破坏(即检测到冲突),那么它可以等待一段随机长的时间后重发该帧。

对于局域网LAN,反馈信息很快就可以得到;而对于卫星网,发送方要在 270ms 后才能确认数据发送是否成功。通过研究证明,纯ALOHA协议的信道利用率最大不超过18.4%。

时隙型(S-ALOHA)

1972年,Roberts发明了一种能把信道利用率提高一倍的信道分配策略,即时隙ALOHA协议。他的思想是用时钟来统一用户的数据发送。办法是将时间分为离散的时间片,用户每次必须等到下一个时间片才能开始发送数据,从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。在时隙ALOHA系统中,计算机并不是在用户按下回车键后就立即发送数据,而是要等到下一个时间片开始时才发送。这样,连续的纯ALOHA就变成离散的时隙ALOHA。由于冲突的危险区平均减少为纯ALOHA的一半,因此时隙ALOHA的信道利用率可以达到36.8%(1/e),是纯ALOHA协议的两倍。但对于时隙ALOHA,用户数据的平均传输时间要高于纯ALOHA系统。3

CSMACarrier Sense Multiple Access,载波侦听多路访问。CSMA/CD(Carrier Sense Multiple Access/Collision Detection),即载波监听多路访问/冲突检测方法和CSMA/CA(Carrier Sense multiple Access/Collision Avoidance),即载波监听多路访问/冲突避免,都是争用型的介质访问控制协议,位于数据链路层,前者用于有线网络而后者用于无线网络。

采用分布式控制方法,附接总线的各个结点通过竞争的方式,获得总线的使用权。只有获得使用权的结点才可以向总线发送信息帧,该信息帧将被附接总线的所有结点感知。包括以下三个要点:载波侦听——发送结点在发送信息帧之前,必须侦听媒体是否处于空闲状态;多路访问——具有两种含义,既表示多个结点可以同时访问媒体,也表示一个结点发送的信息帧可以被多个结点所接收;冲突检测——发送结点在发出信息帧的同时,还必须监听媒体,判断是否发生冲突(同一时刻,有无其他结点也在发送信息帧)。IEEE 802.3或者OSI 8802/3定义了CSMA/CD的标准。

CSMA是载波检测(侦听)多路访问.它检测其他站的活动情况,据此调整自己的行为.分为以下几类:

1-持续CSMA(1-persistent CSMA):当信道忙或发生冲突时,要发送帧的站,不断持续侦听,一有空闲,便可发送. 其中,长的传播延迟和同时发送帧,会导致多次冲突,降低系统性能。非持续CSMA:它并不持续侦听信道,而是在冲突时,等待随机的一段时间.它有更好的信道利用率,但导致更长延迟。p-持续CSMA:它应用于分槽信道,按照P概率发送帧.即信道空闲时,这个时槽,欲发送的站P概率发送,Q=1-P概率不发送.若不发送,下一时槽仍空闲,同理进行发送.若信道忙,则等待下一时槽,若冲突,则等待随机的一段时间,重新开始。3以上都是对ALOHA的改进.当信道忙时,所有站都不传输帧.带冲突检测的CSMA(CSMA/CD:CSMA with Collision Detection):它一旦检测到冲突,立即终止当前传输中的帧,节省时间和带宽,并等待一段时间,重新尝试.它广泛用于LAN中MAC子层,是当前以太网LAN的基础。