記憶體錯誤根據其原因可分為硬錯誤和軟錯誤。硬錯誤是由於硬體的損壞或缺陷造成的,因此數據總是不正確的,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在記憶體附近突然出現電子干擾等因素,可能造成記憶體軟錯誤的出現。作業系統或程式訪問記憶體地址不在當前物理記憶體中,而在磁碟上的頁面檔案內的情況。
基本介紹
- 中文名:硬錯誤
- 外文名:Hard fault /Page fault
- 對應問題:軟錯誤
- 別名:頁面錯誤
- 起因:硬體的損壞或缺陷
- 結果:性能的下降
定義,處理方法,針對MS-DOS,針對OS/2,ECC功能,ECC糾錯算法,ECC記憶體認識誤區,
定義
Hard faults are also known as page faults. Despite the negative connotation of the name, this is not an error condition. Rather, it represents an instance where a block of memory needed by the operating system or an application has to be fetched from the page file on the hard disk instead of from physical memory. A consistently high number of hard faults per second indicates a large—perhaps excessive—reliance on virtual memory, with consequent adverse performance effects.
“硬錯誤”也名為“頁面錯誤”。儘管字面上是負面的含義,但並非表示一種故障狀態。它表示作業系統或應用程式訪問的記憶體地址不在當前物理記憶體中,而在磁碟上的頁面檔案中的情況。每秒發生的“硬錯誤”數量長期處於較高說明系統過度依賴於虛擬記憶體,隨之引起的是性能的下降。
記憶體中的數據在工作過程中難免會出現錯誤,而對於穩定性要求高的用戶來說,比如完成一項需要連續求解30天的分析項目,記憶體中的數據錯誤可能會引起致命性的問題(當機、藍屏、重啟、數據丟失)和白白浪費寶貴的時間。記憶體錯誤根據其原因可分為硬錯誤和軟錯誤。硬錯誤是由於硬體的損壞或缺陷造成的,因此數據總是不正確的,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在記憶體附近突然出現電子干擾等因素,可能造成記憶體軟錯誤的出現。
處理方法
針對MS-DOS
MS-DOS處理硬錯誤的方法是相當直接的,當MS-DOS已運行到一定程度時發現上述的硬錯誤,就會與磁碟驅動器通訊。驅動器報告這個問題,MS-DOS就在螢幕上顯示“Abort,Retry,Ignore?”信息。通常,用戶糾正一下錯誤並給系統予以應答。MS-DOS然後按用戶指定的動作行動,完成其任務,並返回到套用級。應用程式常常並不要系統自動地處理硬錯誤。或許,它們擔心數據的完整性並要求直到寫磁碟問題,或者它們要防止用戶指明“Ignore”,或者它們並不想叫MS-DOS在不通知它們的情況下就在螢幕上顯示。為了處理這些情形,MS-DOS讓應用程式將硬錯誤處理程式的地址存放在INT24向量中。如果有這一硬錯誤處理程式,MS-DOS就調用它,而不調用自己的硬錯誤處理程式。
當系統處理MS-DOS硬錯誤時,系統處於的狀態並不一般,應用程式起動通過INT21向量調用MS-DOS,MS-DOS然後在其內調用較深的幾層,在這裡有一個MS-DOS內部過程即將硬錯誤處理程式調用到應用程式。因為MS-DOS通常不是可再入的,所以這時應用程式就不能通過INT21再調用MS-DOS,否則這樣做就意味著在同一時刻已調用二次MS-DOS了。應用程式很可能在處理硬錯誤時,需要做螢幕和鍵盤I/O操作,所以MS-DOS被做成是部分可再入的。因起始調用包含磁碟I/O操作,所以MS-DOS可通過螢幕/鍵盤I/O調用再進入而不會產生問題。
針對OS/2
對於OS/2,有一些問題使我們不能按照MS-DOS的方法來做。首先,和單任務MS-DOS不同,OS/2不能在作業系統調用應用程式期間(這樣的調用或許在很長時間內部不能返回)將操作暫停下來。第二,主要技術和安全性問題都包含在從0級(有特權的核心方式)到第3級(套用方式)的調用中。第三,在MS-DOS環境下,OS/2就不那么容易了,這是因為可能有多個進程使磁碟FAT扇區或磁碟目錄被編輯,由於OS/2所使用的緩衝技術也會在沒有進程做I/O操作時導致硬錯誤的出現。最後一點,即使我們解決了所有這些問題,引起硬錯誤的應用程式也會在後台螢幕組裡運行,它不能顯示信息或利用鍵盤。即使該應用程式在前台螢幕組內,如果它不是正控制螢幕和鍵盤的進程,它也不能使用螢幕和鍵盤。
ECC功能
為了提高記憶體中數據的可靠性,引入了ECC技術。ECC是Error Correcting Code的簡寫,中文名稱是“錯誤檢查和糾正”。ECC記憶體就是套用了這種技術的記憶體,一般多套用在伺服器和圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。
ECC糾錯算法
ECC記憶體技術是在數據位上額外的位存儲一個用數據加密的代碼,當數據被寫入記憶體時相應的ECC代碼同時也被保存下來,當重新讀回剛才存儲的數據時保存下來的ECC代碼就會和讀數據時產生的ECC代碼作比較,如果兩個代碼不相同,則他們會被以確定數據中的哪一位是不正確的,然後這個錯誤位將會被拋棄,記憶體控制器會釋放出正確的數據。被糾正的數據很少會被放回記憶體。假如相同的錯誤數據再次被讀出,則糾正過程再次被執行。重寫數據會增加處理過程的開銷,會導致系統性能的明顯降低。一般而言,同等性能等級的記憶體,當加入了ECC校驗技術後會導致整體性能下降10%或更多。不過,這種糾錯對大規模有限元分析等需要長期高負荷運行、時刻保持高度穩定性的套用來說是十分重要的。帶ECC校驗技術的記憶體價格一般會比普通記憶體貴一些。
ECC記憶體認識誤區
一談到伺服器記憶體,大家一般都一致強調要買ECC記憶體,認為ECC記憶體速度快,其實這是一種錯誤的認識。ECC記憶體的成功之處並不是因為它的速度快,而是因為它有特殊的糾錯能力,使伺服器保持穩定。ECC本身並不是一種記憶體型號,也不是一種記憶體專用技術,它是廣泛套用於各種計算機指令區域的一種指令糾錯技術。之所以說它並不是一種記憶體型號,是因為它並不是一種影響記憶體結構和存儲速度的技術。它可以用到不同的記憶體類型中,就像“奇偶校驗”記憶體,它也不是一種單純的硬體。