<em id="l4gxk"><noframes id="l4gxk">

<em id="l4gxk"></em>
      
      

         手機版 微信公眾號 新浪微博 友情鏈接
        當前位置: 網站首頁 > 建站設計 > 計算機應用 > 文章 當前位置: 計算機應用 > 文章

        電腦死機和內存的關系

        時間:2010-03-06    點擊: 次    來源:互聯網    作者:佚名 - 小 + 大

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

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


         

        上一篇:電腦突發故障應急處理方法

        下一篇:攝像頭常見故障診斷與排除

      1. Copyright © 2009—2025 ,www.julong-ads.com,All Rights Reserved. |  黔ICP備2023009491號-1  |  貴公網安備52010302003427號
      2. 關于本站  |  網站聲明  |  網站導航  |  留言交流  |  友情鏈接  |  祝福頻道  |  微信公眾號  |  新浪微博  |  我的大學  |  我的高中  |  簡歷2009
      3. 版權聲明:凡注明本站原創文章、作品,未經本人許可,任何人或機構不得以任何形式對本站內容進行復制作商業用途.
      4. 本站部分文章、資源來自互聯網,版權歸原作者及網站所有,如果侵犯了您的權利,請及時致信告知我站.
      5. 地址:中國·貴州·貴陽  郵編:550018   微信公眾號:WEBZZQ  郵箱:admin@zouzhiqiang.com
      6. QQ:470870191 歡迎各位站長加入個人網站交流討論QQ群: 15410235
      7. 訪問統計:
      8. 狠狠人妻久久久久久综合蜜桃 | 人妻无码中文久久久久专区| 久久精品国产精品亜洲毛片| 精品久久国产一区二区三区香蕉 | 欧美亚洲国产精品久久| 国产综合免费精品久久久| 亚洲国产日韩欧美综合久久| 婷婷五月深深久久精品| 国产Av激情久久无码天堂| 久久精品成人欧美大片| 2021国内精品久久久久久影院| 色妞色综合久久夜夜| 精品久久久久国产免费| 久久天天躁狠狠躁夜夜躁2014| 国产成人无码久久久精品一| 久久久久亚洲av综合波多野结衣| 亚洲欧洲日产国码无码久久99| 久久97久久97精品免视看| 亚洲欧美久久久久9999| 国内精品久久久人妻中文字幕| 色综合久久中文字幕综合网| 久久国产精品久久| 久久丫精品国产亚洲av| 婷婷久久综合| 久久国产三级无码一区二区| 国产精品一区二区久久精品| 日韩欧美亚洲综合久久 | 国内精品久久久久久久coent | 国产精品久久婷婷六月丁香| 久久久中文字幕| 欧美久久精品一级c片片| 午夜精品久久久久久久久| 久久婷婷色综合一区二区| 久久综合色之久久综合| 久久天天躁狠狠躁夜夜不卡| yellow中文字幕久久网| 国产精品美女久久久久av爽| 久久国产福利免费| 日韩影院久久| 亚洲精品美女久久777777| 久久亚洲AV成人出白浆无码国产|