當前位置:首頁 >> 電腦技術大全 >> 電腦知識 >> 內容

電腦死機和內存的關系

時間:2008-8-30 10:48:00 欄目:電腦知識 點擊: 來源:不詳

 [電腦知識]-本文簡要:首先來看看,馮.諾依曼結構的電腦是如何取得指令、又是如何執行指令的: 這種結構類型計算機工作的時候,首先必須把完成工作步驟和相關的數據用二進制代碼表示出來(編寫程序),然后再把它們保存在計算機的內存中,CPU依次從內存中讀相關的指令代碼和數據進行運算,直到完成整個運算過程并輸出結果。 要完成這樣的運...
D6電腦網 (d6pc.com): 電腦死機和內存的關系-電腦知識

首先來看看,馮.諾依曼結構的電腦是如何取得指令、又是如何執行指令的:

這種結構類型計算機工作的時候,首先必須把完成工作步驟和相關的數據用二進制代碼表示出來(編寫程序),然后再把它們保存在計算機的內存中,CPU依次從內存中讀相關的指令代碼和數據進行運算,直到完成整個運算過程并輸出結果。

要完成這樣的運算過程,人們在設計運算器(CPU)的時候,首先就要考慮的是,在一段內存中,CPU怎樣區分指令代碼和數據代碼。熟悉計算機的人都清楚,指令用來確定“做什么”和“怎樣做”,數據是“做”的時候需要原始數。
比如:要計算機做1+2=?中,“+”表示要做什么和怎樣做,1和2則是做的時候需要的原始數。現在假設某CPU中,“+”用二進制“00000001”來表示,“1、2”分別用“00000001、00000010”來表示。那么,這段程序存入內存中就是這樣的:

XXXX1:00000001
XXXX2:00000001
XXXX3:00000010 前面的XXXX1 XXXX2 XXXX3表示內存的地址

從上面可以看出,“+”指令和被加數是完全相同的,當然,這是我故意這樣假設的,但是,在實際情況中,這種情況是大量存在的。在正常情況下,CPU只能把XXXX1內存中的00000001作為指令,XXXX2內存中的00000001作為被加數才能得到正確的結果。那么CPU如何才能做到不把第二個00000001也當成“+”呢?

1.人們把內存的某個地址規定為起始地址(又稱為復位地址),也就是說,當計算機開機或者被強行復位(也就是機箱上那個重啟動按鈕按下的的時候),CPU立即跳轉到這個地址中,并且把它里面的代碼作為指令來執行,同時根據這個指令的長度和格式判斷下一條指令在什么地方。

對于X86系列CPU(也就是現在人們常用的什么奔XX、賽XX系列),它的復位地址是FFFF0,如果表示成邏輯地址則是:FFFF:0000。對DEBUG比較熟悉的朋友或者會在一些高級語言中嵌入匯編語言的朋友可以這樣做一個試驗:

用DEBUG執行一條指令(這是一條無條件跳轉指令):jmp FFFF:0000,或者在高級語言中嵌入這條匯編指令,執行后,你就會發現,計算機重新啟動了。其實,用程序控制計算機重啟的最本質的操作就是這樣的。

2.給各種指令規定了相應的長度和格式。比如:某數+某數這條指令就規定:這條指令的長度是3個字節,其中第一個字節表示“+”,后面兩個字節表示被加數和加數。于是,當CPU到達這個指令后,就自動把第一個代碼作為指令,后面兩個代碼作為數據,依次類推,第4個代碼就必然是指令.....

現在假設,CPU在執行指令的時候因某種原因,誤把本來是數據的代碼當成了指令,結果除了是計算結果出錯外死機也就是必然的了。

還是以前面那個加法程序為例:當CPU把第三個代碼(也就是00000010)當成了指令,而恰好這個代碼是一跳轉指令,CPU的執行結果將是:XXXX3--跳轉--執行--跳轉--執行........進入周而復始的亂條,不過注意,雖然是在亂跳,CPU卻始終是在不停的正常地執行指令,所謂的“亂”是對用戶而言,對CPU來說卻是正常的。

還有一種情況就是,如果恰好跳轉到了FFFF:0000這個地址,計算機便重新啟動了。呵呵,,這下搞清楚了為什么計算機有時會“莫名其妙地重啟”了把。

有朋友可能會問,內存中怎么可能有如此多的跳轉指令呢?是怎么形成的呢?

計算機中的最小存儲單位是字節(8個二進制位),指令功能、長度和格式也是在一個字節中規定的。因此,平均來說,每256個代碼中就有可能出現一條跳轉指令(8位二進制數最多表示256)。

還有一種情況:現在計算機的內存已經達到數G的存儲容量,絕大多數都不可能用到這個極限,也就是說,有相當長一段區域是空白,即使內存只有數百M的計算機中也不可能把內存用完,同樣存在相當數量的空白區域。特別需要注意的是,空白區域不等于里面就沒有代碼。因為,在數字邏輯電路中,不可能存在“沒有”這種情況,即使是表示沒有(叫做“空”--NULL)也是要用一個代碼來表示的(NULL用00000000)來表示,所以,空白區域內的代碼是“11111111”或者干脆就是一些隨機代碼。X86系列的CPU“11111111”是一條單字節的指令nop--空操作指令,當CPU跳轉到這些空白區域時,雖然不會發生再次跳轉的現象,CPU也會逐條執行這些代碼,執行到最后一個內存后,CPU將會回到內存的0號起始地方然后又從頭開始執行程序。 有朋友問了,如果硬盤出錯會不會死機呢?這個問題要這樣看。CPU從硬盤中調入數據的時候會對硬盤數據做比較嚴格的校驗(一般是CRC--循環冗余校驗),如果校驗成功,則不會死機,如果校驗失敗,CPU會給予用戶提示“校驗失敗或者文件損壞”--當然也不會死機;只有在硬盤上的文件已經損壞,硬盤把數據傳給CPU的時候“自己沒有發現”造成的數據混亂。所以,硬盤數據損壞后,只能造成數據丟失,無法執行程序,也可能無法啟動計算機。不過,有一種情況例外,那就是硬盤上的某區域做成的虛擬內存,如果這個區域損壞是有可能死機。

內存的啟動監測問題,計算機在開機的時候會對內存進行檢測,這種檢測的方法不外乎有如下一些:

1.最簡單的檢測方法:把內存從頭到尾讀一遍,能夠讀出數據便認為內存正確。

2.稍微復雜一些的檢測方法:把內存從頭到尾讀、寫一遍,能夠讀寫數據便認為內存正確。

3.再復雜一些的檢測方法:把內存從頭到尾讀、寫數遍能夠讀寫數據便認為內存正確。

4.簡單的校驗檢測方法:把內存從頭到尾讀、寫數遍,讀出的數據和寫入的數據進行比較,能夠讀寫、并且讀的數據和寫的數據相同,則認為內存正確

5.比較復雜的校驗檢測方法:對內存讀寫的數據同時進行奇偶校驗和CRC校驗,這種方法多用于高檔服務器,同時,能夠做奇偶校驗的內存(ECC內存)價格比普通內存貴10倍以上(不知道為什么)。


 



D6電腦網|電腦學習,電腦維修,電腦技術網;
設電腦學習,電腦入門,電腦技術,電腦教程,電腦維修,硬件知識,
網頁設計建站,桌面壁紙,主題下載,WIN7下載,常用軟件下載等欄目。感謝您的支持!
欄目:電腦知識 作者:佚名 來源:不詳
相關文章
  • 沒有相關文章
共有評論 0相關評論
發表我的評論
  • 大名:
  • 內容:
網友推薦
鏈接申請
  • D6電腦網(www.lvahrc.live) © 2019 版權所有 All Rights Reserved.
  • 本站為純技術學習交流型網站,部分資源來源網絡,僅供學習交流,版權歸原作者,本站僅為轉載,如有侵犯您的利益請聯系我們刪除.謝謝!
    關于D6電腦學習網 廣告合作 [email protected] 聯系站長 網站地圖 粵ICP備09035016號
  • 擺脫淺薄和低俗的最好辦法就是學習,我們加油!D6PC! V3.0
  • 琅琊榜怎么玩 审核图片赚钱 天蝎男很会赚钱吗 高德导航怎么赚钱 如何在未来智能科技产业赚钱 斗破苍穹怎么赚钱最快 qq辅助怎么赚钱的 努力赚钱的经典说说 摆地摊赚钱项目游戏 极品飞车15快速赚钱 lofter宝妈怎么赚钱 学习什么技术最赚钱 现在农民市场赚钱吗 adc矿场具体怎么赚钱的 155龙宫赚钱单开 代还信用卡公司赚钱吗 2018做pos机赚钱吗