電腦死機問題分析
從電腦出現(xiàn)至今就一直被死機伴隨著,幾乎沒有誰的電腦從不遭遇死機。在使用過程中,偶爾一次死機應(yīng)該算是正?,F(xiàn)象,如果經(jīng)常死機,電腦就存在一定的問題了。那么,電腦為什么會死機呢?有哪些因素會造成電腦死機呢?要搞清楚這些問題,首先要弄清楚,到底什么是死機?為什么會發(fā)生死機?
造成死機的原因是多種多樣的,有軟件問題,有硬件問題,不過,死機的本質(zhì)都是一樣的。
早在N年前,我主持某大學(xué)計算機專業(yè)本科生畢業(yè)答辯的時候,就向某學(xué)生提出過這樣兩個問題:
1.電腦死機的時候,CPU在干什么(或者說,CPU處于什么狀態(tài)?)”
2.在計算機中,無論指令代碼還是數(shù)據(jù)代碼,都是用二進制來表示的,請問,CPU是如何判定某二進制代碼是指令代碼還是數(shù)據(jù)代碼?
其實,上面兩個問題的實質(zhì)是一樣的,主要涉及到CPU是如何取得指令和如何執(zhí)行指令的,把這兩個問題搞清楚了,死機的問題也就容易理解了。
首先來看看,馮.諾依曼結(jié)構(gòu)的電腦是如何取得指令、又是如何執(zhí)行指令的:
馮.諾依曼(1903~1957),匈牙利裔數(shù)學(xué)家,1945年戈德斯坦、勃克斯等人,聯(lián)名發(fā)表了一篇長達101頁紙的報告,即計算機史上著名的“101頁報告”,提出了現(xiàn)代計算機結(jié)構(gòu)的理論模型--存儲程序計算機模型(Stored Program Computer),這就是今天計算機最基本的原理模型。
這種結(jié)構(gòu)類型計算機工作的時候,首先必須把完成工作步驟和相關(guān)的數(shù)據(jù)用二進制代碼表示出來(編寫程序),然后再把它們保存在計算機的內(nèi)存中,CPU依次從內(nèi)存中讀相關(guān)的指令代碼和數(shù)據(jù)進行運算,直到完成整個運算過程并輸出結(jié)果。
要完成這樣的運算過程,人們在設(shè)計運算器(CPU)的時候,首先就要考慮的是,在一段內(nèi)存中,CPU怎樣區(qū)分指令代碼和數(shù)據(jù)代碼。熟悉計算機的人都清楚,指令用來確定“做什么”和“怎樣做”,數(shù)據(jù)是“做”的時候需要原始數(shù)。
比如:要計算機做1+2=?中,“+”表示要做什么和怎樣做,1和2則是做的時候需要的原始數(shù)。現(xiàn)在假設(shè)某CPU中,“+”用二進制“00000001”來表示,“1、2”分別用“00000001、00000010”來表示。那么,這段程序存入內(nèi)存中就是這樣的:
XXXX1:00000001
XXXX2:00000001
XXXX3:00000010 前面的XXXX1 XXXX2 XXXX3表示內(nèi)存的地址
從上面可以看出,“+”指令和被加數(shù)是完全相同的,當(dāng)然,這是我故意這樣假設(shè)的,但是,在實際情況中,這種情況是大量存在的。在正常情況下,CPU只能把XXXX1內(nèi)存中的00000001作為指令,XXXX2內(nèi)存中的00000001作為被加數(shù)才能得到正確的結(jié)果。那么CPU如何才能做到不把第二個00000001也當(dāng)成“+”呢?
1.人們把內(nèi)存的某個地址規(guī)定為起始地址(又稱為復(fù)位地址),也就是說,當(dāng)計算機開機或者被強行復(fù)位(也就是機箱上那個重啟動按鈕按下的的時候),CPU立即跳轉(zhuǎn)到這個地址中,并且把它里面的代碼作為指令來執(zhí)行,同時根據(jù)這個指令的長度和格式判斷下一條指令在什么地方。
對于X86系列CPU(也就是現(xiàn)在人們常用的什么奔XX、賽XX系列),它的復(fù)位地址是FFFF0,如果表示成邏輯地址則是:FFFF:0000。對DEBUG比較熟悉的朋友或者會在一些高級語言中嵌入匯編語言的朋友可以這樣做一個試驗:
用DEBUG執(zhí)行一條指令(這是一條無條件跳轉(zhuǎn)指令):jmp FFFF:0000,或者在高級語言中嵌入這條匯編指令,執(zhí)行后,你就會發(fā)現(xiàn),計算機重新啟動了。其實,用程序控制計算機重啟的最本質(zhì)的操作就是這樣的。
2.給各種指令規(guī)定了相應(yīng)的長度和格式。比如:某數(shù)+某數(shù)這條指令就規(guī)定:這條指令的長度是3個字節(jié),其中第一個字節(jié)表示“+”,后面兩個字節(jié)表示被加數(shù)和加數(shù)。于是,當(dāng)CPU到達這個指令后,就自動把第一個代碼作為指令,后面兩個代碼作為數(shù)據(jù),依次類推,第4個代碼就必然是指令.....
現(xiàn)在假設(shè),CPU在執(zhí)行指令的時候因某種原因,誤把本來是數(shù)據(jù)的代碼當(dāng)成了指令,結(jié)果除了是計算結(jié)果出錯外死機也就是必然的了。
還是以前面那個加法程序為例:當(dāng)CPU把第三個代碼(也就是00000010)當(dāng)成了指令,而恰好這個代碼是一跳轉(zhuǎn)指令,CPU的執(zhí)行結(jié)果將是:XXXX3--跳轉(zhuǎn)--執(zhí)行--跳轉(zhuǎn)--執(zhí)行........進入周而復(fù)始的亂條,不過注意,雖然是在亂跳,CPU卻始終是在不停的正常地執(zhí)行指令,所謂的“亂”是對用戶而言,對CPU來說卻是正常的。
非常好我支持^.^
(1) 33.3%
不好我反對
(2) 66.7%
相關(guān)閱讀:
- [電子說] 松下TOUGHBOOK堅固型筆記本電腦助力港口順暢地完成集裝箱裝卸等作業(yè) 2023-10-24
- [電子說] 觸想五代強固型工業(yè)一體機在近海船舶上的應(yīng)用 2023-10-23
- [電子說] 電腦電源24Pin端子線的排列順序是怎么排的??? 2023-10-22
- [電子說] 電腦電源12V輸出是多少A的范圍?電腦電源12V輸出電壓范圍在多少以內(nèi)是合格的 2023-10-22
- [電子說] 2023年第三季度, 全球個人電腦出貨量跌幅收窄至7% 2023-10-22
- [電子說] 亮鉆科技基于RK3568平臺推出ITX系列主板新成員 2023-10-21
- [電子說] 印度允許筆記本電腦、平板電腦進口不受限 2023-10-20
- [電子說] 國產(chǎn)主板中顯卡的關(guān)鍵作用與不同類型電腦主板全面解析 2023-10-18
( 發(fā)表人:admin )
