磁碟和記憶體讀寫簡單原理

2021-09-26 05:07:59 字數 2476 閱讀 6176

當程式要讀取的資料時傳入記憶體位址(行位址+列位址),如果資料不在主存中時,會觸發乙個缺頁異常,此時系統會向磁碟發出讀盤訊號,通過柱面號,磁頭號,扇區號定位磁碟位置,找到資料的起始位置並向後連續讀取一頁或幾頁載入記憶體中。

我們在程式中的資料處理主要是操作磁碟和記憶體,硬碟是磁碟裡面最常用的一種.以前有所謂的軟盤,也是磁碟的一種,原理和硬碟是一樣的.都是利用磁性物質的特性來儲存資訊.磁碟的原理就是利用電磁轉換,學物理時我們知道電可以使物質帶上磁性,而金屬在磁場運動時切割磁感線時會產生電流.磁碟上有很多微粒的磁粉.當寫通過磁頭寫資料時,磁頭中的電流會導致磁粉極化,改變方向.讀資料時,導體磁頭經過磁粒的區域時會產生電流. 反正大概意思就是這樣.

硬碟的儲存資料原理:

我們知道資訊儲存在硬碟裡,把它拆開也看不見裡面有任何東西,只有些碟片。假設,你用顯微鏡把碟片放大,會看見碟片表面凹凸不平,凸起的地方被磁化,凹的地方是沒有被磁化;凸起的地方代表數字1(磁化為1),凹的地方代表數字0。因此硬碟可以以二進位制來儲存表示文字、等資訊。

記憶體儲存資料原理:

而記憶體的原理就完全不同,記憶體是電晶體製作的(cpu也是電晶體做的),而電晶體的特性就是我們平時常說的用開關的開和關來表示1,0.

通過一些閘電路的組合可用來表示數字和實現複雜的邏輯功能.而記憶體主要是用來臨時儲存資料.cpu就是處理一些邏輯關係.

電晶體由於必須得通電,然後用電流的有無狀態來表示資訊,充放電後電荷的多少(電勢高低)分別對應二進位制資料0和1,所以只有通電的時候可以儲存資料,電一斷記憶體裡的電晶體狀態就處未知狀態就啥用處也沒了.而磁碟斷電後磁性物質還會一直保持原樣.

我們知道訪問磁碟時就通過磁頭去指到固定的地方然後讀取資料.不過記憶體就不一樣,不需要啥磁頭去讀取資料,它是有資料匯流排連線,我們是通過匯流排去讀取記憶體的資料.

磁碟的讀寫原理:(柱面號,磁頭號,扇區號)

當需要從磁碟讀取資料時,系統會將資料邏輯位址傳給磁碟,磁碟的控制電路按照定址邏輯將邏輯位址翻譯成實體地址,即確定要讀的資料在哪個磁軌,哪個扇區。

為了讀取這個扇區的資料,需要將磁頭放到這個扇區上方,為了實現這一點:

1)首先必須找到柱面,即磁頭需要移動對準相應磁軌,這個過程叫做尋道,所耗費時間叫做尋道時間,

2)然後目標扇區旋轉到磁頭下,即磁碟旋轉將目標扇區旋轉到磁頭下。這個過程耗費的時間叫做旋轉時間。

即一次訪盤請求(讀/寫)完成過程由三個動作組成:

1)尋道(時間):磁頭移動定位到指定磁軌 

2)旋轉延遲(時間):等待指定扇區從磁頭下旋轉經過 

3)資料傳輸(時間):資料在磁碟與記憶體之間的實際傳輸

記憶體位址

記憶體中的cell按矩陣形排列,每一行和每一列都會有乙個對應的行位址線路(正規叫法叫做word line)和列位址線路(正規叫法是bit line),每個具體的cell就掛接在這樣的行位址線路和列位址線路上,對應乙個唯一的行號和列號,把行號和列號組合在一起,就是記憶體的位址。

上圖是thaiphoon burner的乙個spd dump,每個位址是乙個位元組。不過我們可以把這些資料假設成只有乙個bit,當成是乙個簡單的記憶體位址表,左邊豎著的是行位址,上方橫著的是列位址。例如我們要找第七行、倒數第二列(位址為7e)的資料,它就只有乙個對應的值:fd。當然了,在記憶體的cell中,它只能是0或者1。

定址資料要寫入記憶體的乙個cell,或者從記憶體中的乙個cell讀取資料,首先要完成對這個cell的定址。定址的過程,首先是將需要操作的cell的對應行位址訊號和列位址訊號輸入行/列位址緩衝器,然後先通過行解碼器(row decoder)選擇特定的行位址線路,以啟用特定的行位址。每一條行位址線路會與多條列位址線路和cell相連線,為了偵測列位址線路上微弱的啟用訊號,還需要乙個額外的感應放大器(sense amplifier)放大這個訊號。當行啟用之後,列位址緩衝器中的列位址訊號通過列解碼器(column decoder)確定列位址,並被對應的感應放大器通過連線io線路,這樣cell就被啟用,並可供讀寫操作,定址完成。從行位址啟用,到找到列位址這段時間,就是trcd。

從記憶體讀取到磁碟預讀

由於儲存介質的特性,磁碟本身訪問就比主存慢很多,再加上機械運動耗費,磁碟的訪問速度往往是主存的幾百分分之一,因此為了提高效率,要儘量減少磁碟i/o。為了達到這個目的,磁碟往往不是嚴格按需讀取,而是每次都會預讀,即使只需要乙個位元組,磁碟也會從這個位置開始,順序向後讀取一定長度的資料放入記憶體。這樣做的理論依據是電腦科學中著名的區域性性原理:

當乙個資料被用到時,其附近的資料也通常會馬上被使用。

程式執行期間所需要的資料通常比較集中。

由於磁碟順序讀取的效率很高(不需要尋道時間,只需很少的旋轉時間),因此對於具有區域性性的程式來說,預讀可以提高i/o效率。

預讀的長度一般為頁(page)的整倍數。頁是計算機管理儲存器的邏輯塊,硬體及作業系統往往將主存和磁碟儲存區分割為連續的大小相等的塊,每個儲存塊稱為一頁(在許多作業系統中,頁得大小通常為4k),主存和磁碟以頁為單位交換資料。當程式要讀取的資料不在主存中時,會觸發乙個缺頁異常,此時系統會向磁碟發出讀盤訊號,磁碟會找到資料的起始位置並向後連續讀取一頁或幾頁載入記憶體中,然後異常返回,程式繼續執行。

參考:硬碟的讀寫原理

記憶體的工作原理及時序介紹

機械磁碟讀寫磁碟資料的原理

機械磁碟讀寫資料的原理小結 1 磁碟是按照柱面為單位讀寫資料的,即先讀取同乙個盤面的某乙個磁軌,讀完之後,如果資料沒有讀完,磁頭也不會切換其他的磁軌,而是選擇切換磁頭,讀取下乙個盤面的相同半徑的磁軌,直到所有盤面的相同半徑的磁軌讀取完成之後,如果資料還沒有讀寫完成,才會切換其他不同半徑的磁軌,這個切...

記憶體檔案對映原理和簡單應用

參考部落格 參考部落格 記憶體對映檔案原理 硬碟上檔案 的位置與程序 邏輯位址空間 中一塊大小相同的區域之間的一一對應,這種對應關係純屬是邏輯上的概念,物理上是不存在的,原因是程序的邏輯位址空間本身就是不存在的,在記憶體對映的過程中,並沒有實際的資料拷貝,檔案沒有被載入記憶體 只是邏輯上被放入了記憶...

快取和記憶體,磁碟的關係

快取嚴格來說就是一種臨時儲存,和記憶體原理上沒有什麼區別。因為在大資料交換中,儲存器不能及時和運算器 控制器交換資料的話,就會出現問題,所以人們發明了快取。說白了假設運算器和控制器是工廠,儲存器 比如硬碟 光碟機等 是大倉庫的話,記憶體就是乙個大型中轉中心 當然它也是倉庫,但是是乙個大型的中轉倉庫 ...