探索與發(fā)現(xiàn):死機(jī)與內(nèi)存的關(guān)系
造成死機(jī)的原因是多種多樣的,有軟件問題,有硬件問題,不過,死機(jī)的本質(zhì)都是一樣的。
早在N年前,我主持某大學(xué)計(jì)算機(jī)專業(yè)本科生畢業(yè)答辯的時(shí)候,就向某學(xué)生提出過這樣兩個(gè)問題:
1.電腦死機(jī)的時(shí)候,CPU在干什么(或者說,CPU處于什么狀態(tài)?)”
2.在計(jì)算機(jī)中,無論指令代碼還是數(shù)據(jù)代碼,都是用二進(jìn)制來表示的,請問,CPU是如何判定某二進(jìn)制代碼是指令代碼還是數(shù)據(jù)代碼? //本文引用自www.jb51.net
其實(shí),上面兩個(gè)問題的實(shí)質(zhì)是一樣的,主要涉及到CPU是如何取得指令和如何執(zhí)行指令的,把這兩個(gè)問題搞清楚了,死機(jī)的問題也就容易理解了。
首先來看看,馮.諾依曼結(jié)構(gòu)的電腦是如何取得指令、又是如何執(zhí)行指令的:
馮.諾依曼(1903~1957),匈牙利裔數(shù)學(xué)家,1945年戈德斯坦、勃克斯等人,聯(lián)名發(fā)表了一篇長達(dá)101頁紙的報(bào)告,即計(jì)算機(jī)史上著名的“101頁報(bào)告”,提出了現(xiàn)代計(jì)算機(jī)結(jié)構(gòu)的理論模型--存儲程序計(jì)算機(jī)模型(Stored Program Computer),這就是今天計(jì)算機(jī)最基本的原理模型。
這種結(jié)構(gòu)類型計(jì)算機(jī)工作的時(shí)候,首先必須把完成工作步驟和相關(guān)的數(shù)據(jù)用二進(jìn)制代碼表示出來(編寫程序),然后再把它們保存在計(jì)算機(jī)的內(nèi)存中,CPU依次從內(nèi)存中讀相關(guān)的指令代碼和數(shù)據(jù)進(jìn)行運(yùn)算,直到完成整個(gè)運(yùn)算過程并輸出結(jié)果。
要完成這樣的運(yùn)算過程,人們在設(shè)計(jì)運(yùn)算器(CPU)的時(shí)候,首先就要考慮的是,在一段內(nèi)存中,CPU怎樣區(qū)分指令代碼和數(shù)據(jù)代碼。熟悉計(jì)算機(jī)的人都清楚,指令用來確定“做什么”和“怎樣做”,數(shù)據(jù)是“做”的時(shí)候需要原始數(shù)。
比如:要計(jì)算機(jī)做1 2=?中,“ ”表示要做什么和怎樣做,1和2則是做的時(shí)候需要的原始數(shù)?,F(xiàn)在假設(shè)某CPU中,“ ”用二進(jìn)制“00000001”來表示,“1、2”分別用“00000001、00000010”來表示。那么,這段程序存入內(nèi)存中就是這樣的:
XXXX1:00000001
XXXX2:00000001
XXXX3:00000010 前面的XXXX1 XXXX2 XXXX3表示內(nèi)存的地址
從上面可以看出,“ ”指令和被加數(shù)是完全相同的,當(dāng)然,這是我故意這樣假設(shè)的,但是,在實(shí)際情況中,這種情況是大量存在的。在正常情況下,CPU只能把XXXX1內(nèi)存中的00000001作為指令,XXXX2內(nèi)存中的00000001作為被加數(shù)才能得到正確的結(jié)果。那么CPU如何才能做到不把第二個(gè)00000001也當(dāng)成“ ”呢?
1.人們把內(nèi)存的某個(gè)地址規(guī)定為起始地址(又稱為復(fù)位地址),也就是說,當(dāng)計(jì)算機(jī)開機(jī)或者被強(qiáng)行復(fù)位(也就是機(jī)箱上那個(gè)重啟動按鈕按下的的時(shí)候),CPU立即跳轉(zhuǎn)到這個(gè)地址中,并且把它里面的代碼作為指令來執(zhí)行,同時(shí)根據(jù)這個(gè)指令的長度和格式判斷下一條指令在什么地方。
對于X86系列CPU(也就是現(xiàn)在人們常用的什么奔XX、賽XX系列),它的復(fù)位地址是FFFF0,如果表示成邏輯地址則是:FFFF:0000。對DEBUG比較熟悉的朋友或者會在一些高級語言中嵌入?yún)R編語言的朋友可以這樣做一個(gè)試驗(yàn):
用DEBUG執(zhí)行一條指令(這是一條無條件跳轉(zhuǎn)指令):jmp FFFF:0000,或者在高級語言中嵌入這條匯編指令,執(zhí)行后,你就會發(fā)現(xiàn),計(jì)算機(jī)重新啟動了。其實(shí),用程序控制計(jì)算機(jī)重啟的最本質(zhì)的操作就是這樣的。
2.給各種指令規(guī)定了相應(yīng)的長度和格式。比如:某數(shù) 某數(shù)這條指令就規(guī)定:這條指令的長度是3個(gè)字節(jié),其中第一個(gè)字節(jié)表示“ ”,后面兩個(gè)字節(jié)表示被加數(shù)和加數(shù)。于是,當(dāng)CPU到達(dá)這個(gè)指令后,就自動把第一個(gè)代碼作為指令,后面兩個(gè)代碼作為數(shù)據(jù),依次類推,第4個(gè)代碼就必然是指令.....
現(xiàn)在假設(shè),CPU在執(zhí)行指令的時(shí)候因某種原因,誤把本來是數(shù)據(jù)的代碼當(dāng)成了指令,結(jié)果除了是計(jì)算結(jié)果出錯(cuò)外死機(jī)也就是必然的了。
還是以前面那個(gè)加法程序?yàn)槔寒?dāng)CPU把第三個(gè)代碼(也就是00000010)當(dāng)成了指令,而恰好這個(gè)代碼是一跳轉(zhuǎn)指令,CPU的執(zhí)行結(jié)果將是:XXXX3--跳轉(zhuǎn)--執(zhí)行--跳轉(zhuǎn)--執(zhí)行........進(jìn)入周而復(fù)始的亂條,不過注意,雖然是在亂跳,CPU卻始終是在不停的正常地執(zhí)行指令,所謂的“亂”是對用戶而言,對CPU來說卻是正常的。
還有一種情況就是,如果恰好跳轉(zhuǎn)到了FFFF:0000這個(gè)地址,計(jì)算機(jī)便重新啟動了。呵呵,,這下搞清楚了為什么計(jì)算機(jī)有時(shí)會“莫名其妙地重啟”了把。
有朋友可能會問,內(nèi)存中怎么可能有如此多的跳轉(zhuǎn)指令呢?是怎么形成的呢?
計(jì)算機(jī)中的最小存儲單位是字節(jié)(8個(gè)二進(jìn)制位),指令功能、長度和格式也是在一個(gè)字節(jié)中規(guī)定的。因此,平均來說,每256個(gè)代碼中就有可能出現(xiàn)一條跳轉(zhuǎn)指令(8位二進(jìn)制數(shù)最多表示256)。
還有一種情況:現(xiàn)在計(jì)算機(jī)的內(nèi)存已經(jīng)達(dá)到數(shù)G的存儲容量,絕大多數(shù)都不可能用到這個(gè)極限,也就是說,有相當(dāng)長一段區(qū)域是空白,即使內(nèi)存只有數(shù)百M(fèi)的計(jì)算機(jī)中也不可能把內(nèi)存用完,同樣存在相當(dāng)數(shù)量的空白區(qū)域。特別需要注意的是,空白區(qū)域不等于里面就沒有代碼。因?yàn)?,在?shù)字邏輯電路中,不可能存在“沒有”這種情況,即使是表示沒有(叫做“空”--NULL)也是要用一個(gè)代碼來表示的(NULL用00000000)來表示,所以,空白區(qū)域內(nèi)的代碼是“11111111”或者干脆就是一些隨機(jī)代碼。X86系列的CPU“11111111”是一條單字節(jié)的指令nop--空操作指令,當(dāng)CPU跳轉(zhuǎn)到這些空白區(qū)域時(shí),雖然不會發(fā)生再次跳轉(zhuǎn)的現(xiàn)象,CPU也會逐條執(zhí)行這些代碼,執(zhí)行到最后一個(gè)內(nèi)存后,CPU將會回到內(nèi)存的0號起始地方然后又從頭開始執(zhí)行程序。
有朋友問了,如果硬盤出錯(cuò)會不會死機(jī)呢?這個(gè)問題要這樣看。CPU從硬盤中調(diào)入數(shù)據(jù)的時(shí)候會對硬盤數(shù)據(jù)做比較嚴(yán)格的校驗(yàn)(一般是CRC--循環(huán)冗余校驗(yàn)),如果校驗(yàn)成功,則不會死機(jī),如果校驗(yàn)失敗,CPU會給予用戶提示“校驗(yàn)失敗或者文件損壞”--當(dāng)然也不會死機(jī);只有在硬盤上的文件已經(jīng)損壞,硬盤把數(shù)據(jù)傳給CPU的時(shí)候“自己沒有發(fā)現(xiàn)”造成的數(shù)據(jù)混亂。所以,硬盤數(shù)據(jù)損壞后,只能造成數(shù)據(jù)丟失,無法執(zhí)行程序,也可能無法啟動計(jì)算機(jī)。不過,有一種情況例外,那就是硬盤上的某區(qū)域做成的虛擬內(nèi)存,如果這個(gè)區(qū)域損壞是有可能死機(jī)。
內(nèi)存的啟動監(jiān)測問題,計(jì)算機(jī)在開機(jī)的時(shí)候會對內(nèi)存進(jìn)行檢測,這種檢測的方法不外乎有如下一些:
1.最簡單的檢測方法:把內(nèi)存從頭到尾讀一遍,能夠讀出數(shù)據(jù)便認(rèn)為內(nèi)存正確。
2.稍微復(fù)雜一些的檢測方法:把內(nèi)存從頭到尾讀、寫一遍,能夠讀寫數(shù)據(jù)便認(rèn)為內(nèi)存正確。
3.再復(fù)雜一些的檢測方法:把內(nèi)存從頭到尾讀、寫數(shù)遍能夠讀寫數(shù)據(jù)便認(rèn)為內(nèi)存正確。
4.簡單的校驗(yàn)檢測方法:把內(nèi)存從頭到尾讀、寫數(shù)遍,讀出的數(shù)據(jù)和寫入的數(shù)據(jù)進(jìn)行比較,能夠讀寫、并且讀的數(shù)據(jù)和寫的數(shù)據(jù)相同,則認(rèn)為內(nèi)存正確
5.比較復(fù)雜的校驗(yàn)檢測方法:對內(nèi)存讀寫的數(shù)據(jù)同時(shí)進(jìn)行奇偶校驗(yàn)和CRC校驗(yàn),這種方法多用于高檔服務(wù)器,同時(shí),能夠做奇偶校驗(yàn)的內(nèi)存(ECC內(nèi)存)價(jià)格比普通內(nèi)存貴10倍以上(不知道為什么)。
推薦系統(tǒng)
【國慶典藏版】win7系統(tǒng)下載永久激活 純凈版系統(tǒng)64位 ghost ISO 鏡像下載
系統(tǒng)大?。?/em>4.42GB系統(tǒng)類型:Win7【國慶典藏版】win7系統(tǒng)下載永久激活 純凈版系統(tǒng)64位 ghost ISO 鏡像下載,特別制作了國慶典藏版,技術(shù)員聯(lián)盟技術(shù)實(shí)力雄厚,做了系統(tǒng)性能的優(yōu)化,采用了新的系統(tǒng)功能和硬件驅(qū)動,可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,使得軟件在技術(shù)員聯(lián)盟win7系統(tǒng)中運(yùn)行得更加流暢,加固了系統(tǒng)安全策略,技術(shù)員聯(lián)盟win7系統(tǒng)在家用辦公上跑分表現(xiàn)
系統(tǒng)等級:進(jìn)入下載 >【國慶特獻(xiàn)】深度技術(shù)Windows10純凈版 Win10 GHOST鏡像64位系統(tǒng)下載
系統(tǒng)大?。?/em>4.75GB系統(tǒng)類型:Win10深度技術(shù)在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的深度技術(shù)品牌,今年國慶推出了特別版本給新老用戶,【國慶特獻(xiàn)】深度技術(shù)Windows10純凈版 Win10 GHOST鏡像64位系統(tǒng)下載,是由深度技術(shù)團(tuán)隊(duì)推出的WINDOWS10純凈版國內(nèi)鏡像版,基于國內(nèi)用戶的習(xí)慣,做了系統(tǒng)性能的優(yōu)化,采用了新的系統(tǒng)功能和硬件驅(qū)動,可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了
系統(tǒng)等級:進(jìn)入下載 >【國慶特別版】番茄花園Windows11高性能專業(yè)版ghost系統(tǒng) ISO鏡像下載
系統(tǒng)大小:4.68GB系統(tǒng)類型:Win11【國慶特別版】番茄花園Windows11高性能專業(yè)版ghost系統(tǒng) ISO鏡像下載,國慶特別版是經(jīng)過番茄花園傾心制作的一個(gè)版本,反饋給廣大對番茄花園品牌支持的粉絲,對國內(nèi)系統(tǒng)增加一份貢獻(xiàn),此版本是純凈專業(yè)版,番茄花園WIN11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運(yùn)行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進(jìn)入下載 >技術(shù)員聯(lián)盟Windows10 LTSC 64位 Win10 LTSC純凈版 V2022.06
系統(tǒng)大?。?/em>4.38GB系統(tǒng)類型:Win10技術(shù)員聯(lián)盟Windows10 LTSC是一款穩(wěn)定流暢的系統(tǒng),(微軟現(xiàn)在正式發(fā)布了Win10 LTSC 2021系統(tǒng),這是長期服務(wù)版,可以5年內(nèi)不用升級,功能還是Windows 10 21H2為基礎(chǔ)的,這也是Win10最后一個(gè)LTSC版,值得升級)是由技術(shù)員聯(lián)盟Windows10團(tuán)隊(duì)推出的技術(shù)員聯(lián)盟Windows10 LTSC國內(nèi)鏡像版,基于國內(nèi)用戶的習(xí)慣,做了系統(tǒng)性能的優(yōu)化,采用了新的系統(tǒng)功能和硬件
系統(tǒng)等級:進(jìn)入下載 >Windows11下載 旗艦版 永久激活 番茄花園 win11 ghost系統(tǒng) ISO鏡像 X64位
系統(tǒng)大小:4.68GB系統(tǒng)類型:Win11番茄花園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的番茄花園品牌,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,番茄花園WIN11系統(tǒng)是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由番茄花園團(tuán)隊(duì)推出的番茄花園國內(nèi)鏡像版,基于國內(nèi)用戶的習(xí)慣,做了系統(tǒng)性能的優(yōu)化,采用了新的系統(tǒng)功能和硬件驅(qū)動,可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化
系統(tǒng)等級:進(jìn)入下載 >Win11企業(yè)版 免密鑰激活番茄花園win11 ghost系統(tǒng) ISO鏡像 X64位 下載
系統(tǒng)大小:4.68GB系統(tǒng)類型:Win11Win11企業(yè)版 免密鑰激活番茄花園win11 ghost系統(tǒng) ISO鏡像 X64位 下載可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,使得軟件在番茄花園WIN11系統(tǒng)中運(yùn)行得更加流暢,加固了系統(tǒng)安全策略,番茄花園WIN11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運(yùn)行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進(jìn)入下載 >
相關(guān)文章
- 三星SD卡PRO Plus值得入手嗎 三星SD卡PRO Plus詳細(xì)評測
- 讓顯示器的消磁功能達(dá)到最大功效
- 尼康D7100和尼康D7000的區(qū)別是什么
- 樂視電視如何安裝第三方直播軟件?新手必看的教程
- vivo首款真無線耳機(jī)TWS Earphone正式發(fā)布 搭配充電盒可24小時(shí)續(xù)航
- 你是選擇藍(lán)牙音響還是選擇Wi-Fi音響?
- 神舟戰(zhàn)神TX9值得入手嗎?神舟戰(zhàn)神TX9-CU5DK全面圖文評測
- Amazfit GTR 42mm璀璨特別版9月16日開售 璀璨特別版配置參數(shù)介紹
- 筆記本檢修順序是怎樣的?
- 近期大牌耳機(jī)評測匯總 華麗的聽覺盛宴
- 超級維護(hù)技巧幫你呵護(hù)顯示器
- 暴風(fēng)電視的內(nèi)部結(jié)構(gòu)怎么樣?暴風(fēng)電視真機(jī)拆解(圖)
- 筆記本電腦有灰塵怎么辦 筆記本電腦除塵方法
- 雷蛇靈刃15標(biāo)準(zhǔn)版值得入手嗎 雷蛇靈刃15標(biāo)準(zhǔn)版體驗(yàn)介紹
熱門系統(tǒng)
推薦軟件
推薦應(yīng)用
推薦游戲
熱門文章
常用系統(tǒng)
- 1深度技術(shù)win7旗艦版系統(tǒng) 32位下載 v2021.11 Ghost 快速重裝系統(tǒng)
- 2大地系統(tǒng)WIN11企業(yè)版 2022最新版 X64位 V2022.04
- 3深度系統(tǒng)Windows11游戲版 暢玩游戲 Win11 ghost系統(tǒng) ISO鏡像 X64位系統(tǒng)下載
- 4windows10下載番茄花園 最新純凈版系統(tǒng)64位 iso ghost 系統(tǒng)下載
- 5win10專業(yè)版密鑰 技術(shù)員聯(lián)盟Win10專業(yè)版系統(tǒng)下載 ghost鏡像 ISO v2022.07 下載
- 6大地系統(tǒng)windows11企業(yè)版 X64 Ghost V2021.10正式版
- 7系統(tǒng)之家windowsXP旗艦版 V2022.05 XP ghost鏡像最新版下載
- 8番茄花園win8系統(tǒng)下載 Ghost Win8 x32純凈版 v2019.04
- 9雨林木風(fēng)windows11中文版免激活 ghost鏡像 V2022.04下載