匯流排錯誤 - Wikiwand
For faster navigation, this Iframe is preloading the Wikiwand page for 匯流排錯誤.

匯流排錯誤

維基百科,自由的百科全書

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目沒有列出任何參考或來源。 (2017年5月25日)維基百科所有的內容都應該可供查證。請協助添加來自可靠來源的參照以改善這篇條目。無法查證的內容可能被提出異議而移除。 此條目需要擴充。 (2017年5月25日)請協助改善這篇條目,更進一步的訊息可能會在討論頁或擴充請求中找到。請在擴充條目後將此模板移除。 此條目需要精通或熟悉相關主題的編者參與及協助編輯。請邀請適合的人士改善本條目。更多的細節與詳情請參見討論頁。

電腦領域,匯流排錯誤bus error)是一種硬體故障英語Fault (computing),為通知作業系統一個行程正嘗試存取CPU無法存取的實體位址,即一個無效的位址匯流排位址,它由此得名。在現代的大多數架構中,這比記憶體區段錯誤(段錯誤)更罕見,而那主要由於記憶體存取衝突所造成:即邏輯位址或權限的問題。

POSIX相容平台上,匯流排錯誤通常導致傳送SIGBUS訊號到導致錯誤的行程。SIGBUS也可能因電腦檢測到的任何常規裝置故障引發。匯流排錯誤很少代表硬體存在物理損壞,而通常是因程式原始碼中的程式錯誤引起。[來源請求]匯流排錯誤也可能因其他某些分頁錯誤引發,見下文。

原因

匯流排錯誤有至少三種主要原因:

不存在的位址

軟體令CPU讀寫特定的物理記憶體位址時,CPU會將這個實體記憶體位址填入位址匯流排,並等待所有其他連接著CPU的硬體來認領並回應這個請求。當沒有任何硬體回應CPU時,CPU會觸發一個異常,表示整個電腦系統都無法辨識上述請求的實體記憶體位址。需要注意的是,這裡僅涉及到物理記憶體位址。如果存取一個未定義的虛擬記憶體位址,一般會產生一個段錯誤而不是匯流排錯誤,儘管對於MMU與CPU分離的電腦來說,CPU無法區分這兩種情況。

未對齊的存取

分頁錯誤

不存在段(x86)

x86上存在一種較舊的稱為x86記憶體區段的記憶體管理機制。

如果應用程式使用不存在段的選擇器載入段暫存器(在POSIX相容的作業系統下只能使用組合語言完成),則會生成異常。

參考資料

{{bottomLinkPreText}} {{bottomLinkText}}
匯流排錯誤
Listen to this article