在計算機領域,匯流排錯誤(bus error)是一種硬體故障,為通知作業系統乙個程序正嘗試訪問cpu無法訪問的實體地址,即乙個無效的位址匯流排位址,它由此得名。
在posix相容平台上,匯流排錯誤通常導致傳送sigbus訊號到導致錯誤的程序。sigbus也可能因計算機檢測到的任何常規裝置故障引發。匯流排錯誤很少代表硬體存在物理損壞,而通常是因程式
源**中的程式錯誤引起。
匯流排錯誤有至少三種主要原因:
軟體令cpu讀寫特定的物理記憶體位址時,cpu會將這個物理記憶體位址填入位址匯流排,並等待所有其他連線著cpu的硬體來認領並響應這個請求。當沒有任何硬體響應cpu時,cpu會觸發乙個異常,表示整個計算機系統都無法識別上述請求的物理記憶體位址。需要注意的是,這裡僅涉及到物理記憶體位址。如果訪問乙個未定義的虛擬記憶體
位址,一般會產生乙個段錯誤而不是匯流排錯誤,儘管對於mmu
與cpu分離的計算機來說,cpu無法區分這兩種情況。
匯流排錯誤和段錯誤相關概念
來自 c 專家程式設計.p157 在unix 上程式設計時,經常會遇到如下兩個常見的執行時錯誤 bus error 匯流排錯誤 segmentation fault 段錯誤 匯流排錯誤 匯流排錯誤幾乎都是由於未對齊的讀或寫造成的。它之所以稱為匯流排錯誤,是因為出現未對齊的記憶體訪問請求時,被堵塞的元...
匯流排錯誤和段錯誤相關概念
在unix 上程式設計時,經常會遇到如下兩個常見的執行時錯誤 bus error 匯流排錯誤 segmentation fault 段錯誤 匯流排錯誤 匯流排錯誤幾乎都是由於未對齊的讀或寫造成的。它之所以稱為匯流排錯誤,是因為出現未對齊的記憶體訪問請求時,被堵塞的元件就是位址匯流排。對齊的意思就是資...
匯流排錯誤和段錯誤問題的定位
對現在的很多初級的程式原來說如果遇到 匯流排錯誤 bus error 或者段錯誤 segementation fault core dump 是一件非常折磨人的事,讓人一時間找不到什麼好的方法也不知從何處下手去解決這個問題 和許多人一樣,我很快也遇到了這樣的問題 出現這個錯誤時,錯誤資訊對引起這種事...