【问题标题】:Is Segmentation Fault a.k.a Bus Error, an error or a fault? [closed]分段故障又名总线错误,是错误还是故障? [关闭]
【发布时间】:2011-08-12 13:42:55
【问题描述】:

我很困惑。分段错误也称为总线错误。那么应该如何分类,是错误还是故障。在 Windows 术语中,也称为非法操作错误。在我看来,它应该被称为错误,因为它是由底层错误或硬件故障引起的。

我认为错误是错误的表现,而不是相反。我遵循“可靠和安全计算的基本概念和分类”给出的分类。大家觉得呢?

【问题讨论】:

  • 有人需要画那个bike shed
  • 我想你已经在不到一个小时前提出了这个问题。
  • hexa,是的,我问过它,但有些人认为这是一项家庭作业,事实并非如此。我对错误和故障的分类感到非常困惑。有人说错误导致错误,其他人说错误导致错误!真的很混乱,不是吗?
  • 是否应该将其移至英语语言 SO?毕竟,这是关于“错误”和“故障”之间的语义差异。大多数非母语人士无法分辨这两者之间的区别,因此只有拥有英语硕士学位的人才感兴趣。
  • 我不知道你们为什么要取笑这个。在研究可靠和安全的计算时,两者之间的区别很重要!

标签: c linux windows segmentation-fault


【解决方案1】:

分段错误与总线错误并不完全相同。分段错误是由操作系统运行时创建的错误,当正在运行的软件尝试访问允许的内存页面之外的内存时,就会发生这种错误。这通常与受保护的内存操作系统有关,它只允许用户模式进程访问某些段中的内存,并使其他内存段仅限于更高特权的内核进程。另一方面,总线错误是当软件尝试进行硬件无法进行的内存访问时发生的硬件错误。这两种类型的错误在语义上可能是一致的,例如在 x86 这样的处理器架构上,当进行内存访问时,处理器会抛出一般保护错误或其他一些处理器异常。但您也可能出现并非由处理器异常引起的分段错误。

【讨论】:

  • 所以你是说,这是一个错误,而不是一个错误?
  • “总线错误”通常来自抛出处理器异常......即内存访问未对齐、一般保护错误等。请注意,总线错误不仅仅是来自“过错”。换句话说,总线错误包括某些类型的硬件相关故障以及一般的内存硬件错误。另一方面,分段错误与软件相关,并且来自访问超出操作系统运行时为用户模式进程提供的允许范围的内存。
  • @MetalicPriest 你真的应该使用谷歌并使用一些 CS 教科书。这是非常基本的东西,在很多操作系统设计文献中都有介绍。 ERROR == FAULT 出于所有意图和目的。
  • 亚当,我不这么认为。我遵循“可靠和安全计算的基本概念和分类”一文中给出的分类,它清楚地区分了两者。
  • IIRC 故障是外部观察者尚不可见的不良情况。而错误被定义为可见的故障。分段错误是否导致错误取决于他如何处理它。即使在软件上或您如何定义观察者。分段错误是 AFAIK,不称为总线错误。我第一次听到这个,我确实学习 CS,重点是操作系统和嵌入式硬件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多