精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>主機配件>內存>

電腦死機問題分析

2010年08月19日 14:51 本站整理 作者:佚名 用戶評論(0

  從電腦出現至今就一直被死機伴隨著,幾乎沒有誰的電腦從不遭遇死機。在使用過程中,偶爾一次死機應該算是正常現象,如果經常死機,電腦就存在一定的問題了。那么,電腦為什么會死機呢?有哪些因素會造成電腦死機呢?要搞清楚這些問題,首先要弄清楚,到底什么是死機?為什么會發生死機?

  造成死機的原因是多種多樣的,有軟件問題,有硬件問題,不過,死機的本質都是一樣的。

  早在N年前,我主持某大學計算機專業本科生畢業答辯的時候,就向某學生提出過這樣兩個問題:

  1.電腦死機的時候,CPU在干什么(或者說,CPU處于什么狀態?)”

  2.在計算機中,無論指令代碼還是數據代碼,都是用二進制來表示的,請問,CPU是如何判定某二進制代碼是指令代碼還是數據代碼?

  其實,上面兩個問題的實質是一樣的,主要涉及到CPU是如何取得指令和如何執行指令的,把這兩個問題搞清楚了,死機的問題也就容易理解了。

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

  馮.諾依曼(1903~1957),匈牙利裔數學家,1945年戈德斯坦、勃克斯等人,聯名發表了一篇長達101頁紙的報告,即計算機史上著名的“101頁報告”,提出了現代計算機結構的理論模型--存儲程序計算機模型(Stored Program Computer),這就是今天計算機最基本的原理模型。

  這種結構類型計算機工作的時候,首先必須把完成工作步驟和相關的數據用二進制代碼表示出來(編寫程序),然后再把它們保存在計算機的內存中,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來說卻是正常的。

非常好我支持^.^

(1) 33.3%

不好我反對

(2) 66.7%

( 發表人:admin )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?