总线错误:修订间差异

求闻百科,共笔求闻
添加的内容 删除的内容
(修改自此处;原许可:CC BY-SA 3.0[网站升级迁移])
 
(我来啦, replaced: 體 → 体 (4), 區 → 区 (2), 電 → 电, 運 → 运, 腦 → 脑, 匯 → 汇 (2), 誤 → 误, 記 → 记 (4))
第2行: 第2行:
|G1=IT
|G1=IT
}}
}}
在[[電腦運算|计算机]]领域,'''总线错误'''('''bus error''')是一种硬件{{tsl|en|Fault (computing)||故障}},为通知[[操作系统]]一个进程正尝试访问[[中央处理器|CPU]]无法访问的物理地址,即一个无效的[[位址流排]]地址,它由此得名。在现代的大多数架构中,这比[[體區段錯]](段错误)更罕见,而那主要由于内存访问冲突所造成:即[[逻辑地址]]或权限的问题。
在[[电脑运算|计算机]]领域,'''总线错误'''('''bus error''')是一种硬件{{tsl|en|Fault (computing)||故障}},为通知[[操作系统]]一个进程正尝试访问[[中央处理器|CPU]]无法访问的物理地址,即一个无效的[[位址流排]]地址,它由此得名。在现代的大多数架构中,这比[[体区段錯]](段错误)更罕见,而那主要由于内存访问冲突所造成:即[[逻辑地址]]或权限的问题。


在[[POSIX]]兼容平台上,总线错误通常导致发送SIGBUS信号到导致错误的进程。SIGBUS也可能因计算机检测到的任何常规设备故障引发。
在[[POSIX]]兼容平台上,总线错误通常导致发送SIGBUS信号到导致错误的进程。SIGBUS也可能因计算机检测到的任何常规设备故障引发。
第10行: 第10行:


=== 不存在的地址 ===
=== 不存在的地址 ===
软件令CPU读写特定的物理[[位址|内存地址]]时,CPU会将这个物理内存地址填入[[位址流排|地址总线]],并等待所有其他连接着CPU的硬件来认领并响应这个请求。当没有任何硬件响应CPU时,CPU会触发一个[[异常处理|异常]],表示整个计算机系统都无法识别上述请求的物理内存地址。需要注意的是,这里仅涉及到''物理''内存地址。如果访问一个未定义的[[虚拟内存]]地址,一般会产生一个段错误而不是总线错误,尽管对于[[内存管理单元|MMU]]与CPU分离的计算机来说,CPU无法区分这两种情况。
软件令CPU读写特定的物理[[位址|内存地址]]时,CPU会将这个物理内存地址填入[[位址流排|地址总线]],并等待所有其他连接着CPU的硬件来认领并响应这个请求。当没有任何硬件响应CPU时,CPU会触发一个[[异常处理|异常]],表示整个计算机系统都无法识别上述请求的物理内存地址。需要注意的是,这里仅涉及到''物理''内存地址。如果访问一个未定义的[[虚拟内存]]地址,一般会产生一个段错误而不是总线错误,尽管对于[[内存管理单元|MMU]]与CPU分离的计算机来说,CPU无法区分这两种情况。


=== 未对齐的访问 ===
=== 未对齐的访问 ===
第16行: 第16行:


=== 不存在段(x86) ===
=== 不存在段(x86) ===
[[x86]]上存在一种较旧的称为[[x86體區段]]的内存管理机制。
[[x86]]上存在一种较旧的称为[[x86体区段]]的内存管理机制。


如果应用程序使用不存在段的选择器加载段寄存器(在POSIX兼容的操作系统下只能使用[[汇编语言]]完成),则会生成异常。
如果应用程序使用不存在段的选择器加载段寄存器(在POSIX兼容的操作系统下只能使用[[汇编语言]]完成),则会生成异常。
第27行: 第27行:
[[Category:计算机总线]]
[[Category:计算机总线]]
[[Category:计算机错误]]
[[Category:计算机错误]]
[[Category:管理]]
[[Category:管理]]