簡介
在計算機科學中,隨機存取(更精確地或更通俗地稱為直接訪問)是能夠從可定址元素的集合中訪問任何數據項,與任何其他方式一樣容易和有效地進行存取,無論集合中可能有多少元素。隨機存取法簡單地說就是進行隨機存取的方法。隨機存取法在計算機數據存取和計算機網路中都有廣泛套用。
硬體與軟體
硬體角度
從硬體角度看實現隨機存取就是設計隨機存取存儲設備。我們最常見的就是隨機存取存儲機器(random access memory,RAM)又稱作“隨機存儲器”,是與CPU直接交換數據的內部存儲器,也叫主存(記憶體)。它可以隨時讀寫,而且速度很快,通常作為作業系統或其他正在運行中的程式的臨時數據存儲媒介。
存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關的存儲器。這種存儲器在斷電時將丟失其存儲內容,故主要用於存儲短時間使用的程式。按照存儲單元的工作原理,隨機存儲器又分為靜態隨機存儲器(英文:Static RAM,SRAM)和動態隨機存儲器(英文Dynamic RAM,DRAM)。
軟體角度
在軟體角度,主要從兩方面來考慮:
1. 在數據結構,直接訪問意味著訪問一個列表中任何一項在固定的時間(不依賴它在列表的位置及列表的大小)。很少的數據結構可以保證這一點,除了數組(和相關的結構,如動態數組)。在許多算法中需要直接訪問,或至少有價值,例如二進制搜尋,整數排序。
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系統。
CSMA
Carrier 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機率不傳送.若不傳送,下一時槽仍空閒,同理進行傳送.若信道忙,則等待下一時槽,若衝突,則等待隨機的一段時間,重新開始。
以上都是對ALOHA的改進.當信道忙時,所有站都不傳輸幀.
•帶衝突檢測的CSMA(CSMA/CD:CSMA with Collision Detection):它一旦檢測到衝突,立即終止當前傳輸中的幀,節省時間和頻寬,並等待一段時間,重新嘗試.它廣泛用於LAN中MAC子層,是當前乙太網LAN的基礎。