我有兴趣了解:操作系统崩溃(不限于 Windows 崩溃)最常见的技术原因(从操作系统编程的角度来看)是什么?我正在寻找一个不像“打开太多应用程序”这样的答案,而是当打开太多应用程序导致崩溃时具体会发生什么。
8 回答
在我看来
- 坏司机
- 内核错误
- 硬件故障
- 资源结束
现代操作系统不会让单纯的应用程序崩溃。
导致操作系统崩溃的是错误驱动程序。只有操作系统本身和驱动程序才能损害系统。
对您的建议:
如果应用程序访问与操作系统相同的内存,则操作系统不会出现问题。内存可访问或不可访问。如果应用程序试图访问它不应该的内存,CPU 会生成分段错误。操作系统将其交给应用程序,问题就解决了。(99% 的应用程序会在之后崩溃,但这不是操作系统的错)。
您是在建议较慢的程序更安全。这不是真的。操作系统不需要知道你的程序到底在做什么。
在现代操作系统中,应用程序代码和操作系统代码在不同的地址空间中运行。应用程序代码不能使操作系统崩溃。看这里:
http://en.wikipedia.org/wiki/Ring_(computer_security)
最常见的崩溃阅读是作为操作系统一部分的代码与作为操作系统一部分的其他代码相互干扰。一个常见的原因是存在于操作系统地址空间中的设备驱动程序编写不当。
不太常见的是,崩溃是由硬件故障引起的。
由于以下两个主要原因之一,可能会发生任何操作系统崩溃:
- 硬件问题。
- 软件问题。
硬件问题:
电源相关问题:系统电源功能不正常会导致系统立即关闭。
RAM 过热:RAM过热可能会导致其中的数据损坏。这可能会导致必须重置的明确崩溃。
不正确的超频:导致过热。某些硬件组件对热敏感。当自动发生过热时,系统会关闭。
硬盘中的坏扇区:硬盘分为存储数据的扇区。一些部门成为坏部门。 原因: 一。长时间使用 - 多次写入和读取。 乙。制造缺陷。如果硬盘中存储重要系统信息的扇区变成坏扇区,则很难加载这些文件,从而导致崩溃。
- RAM 问题: 原因:无法检索数据。这非常重要,因为这会导致致命异常错误
主要误解:系统中的应用程序崩溃并不总是导致系统崩溃。通常,操作系统“什么都没有”发生。它只是向您发送报告,说明某某应用程序已崩溃。
软件问题:
- 损坏的注册表:在启动任何应用程序之前,操作系统会查看其注册表。Registry 是一个小型数据库,其中存储了有关内核、驱动程序和有关应用程序的所有信息。由于应用程序卸载不当、注册表编辑不慎、安装的应用程序过多等 原因,注册表可能会损坏。注册表损坏的更多原因。这会导致常规应用程序拒绝启动,从而导致显示蓝屏死机。
- 不正确的驱动程序:为了使用额外的硬件,我们需要驱动程序,通常是从互联网上下载的。这些驱动程序可能包含错误。这些错误会导致操作系统崩溃。现代操作系统发布时带有“安全模式启动”选项。安全模式引导仅加载重要的驱动程序(最少)而不是全部。安全模式引导用于诊断目的,以查找有错误的驱动程序。
- 病毒和木马:操作系统崩溃的常见原因。病毒和特洛伊木马会破坏系统文件,“吃掉”内存,当程序停止时不允许操作系统检索它,更改管理设置,频繁重启而没有任何迹象等
- Thrashing:当两个正在运行的程序需要控制特定资源时,就会发生死锁。有时在死锁期间,操作系统会尝试在两个程序之间来回切换。这最终会导致抖动,其中硬盘驱动器通过在系统内存和虚拟内存之间移动信息过度导致系统崩溃而过度工作。
不,你很遥远。通常,应用程序无法执行任何可能导致操作系统崩溃的操作。操作系统崩溃通常是由错误的设备驱动程序和硬件故障引起的。
试图访问锁定区域的两个不同来源是一个问题。让所有互斥锁、监视器和锁 100% 工作并非易事。
如果我们以 Vista 为例 - 驱动程序... NVidia 特别是http://arstechnica.com/news.ars/post/20080325-vista-capable-lawsuit-paints-picture-of-buggy-nvidia-drivers.html . 决定内存分配的是操作系统,而不是应用程序。嗯,这就是理论。
操作系统崩溃也可能由于硬盘中的某些扇区崩溃而导致,这是因为我所有的 pc 操作系统都存在于硬盘的主驱动器中。