首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >操作系统问题

操作系统问题
EN

Stack Overflow用户
提问于 2010-04-10 18:01:41
回答 4查看 706关注 0票数 11

我最近问自己:如果启动了像Mozilla这样的程序,就必须以某种方式将控件交给它。但是当程序崩溃时,为什么我的整个系统不像早期的Windows版本那样崩溃呢?

  • Windows如何才能从程序中收回控件,或者甚至不将其完全交给它呢?

(注:这不是我的作业;我上学,但在我的信息学课上,真的只有那些人会回答“我能吃那个吗?”)当我问他们关于谷物的事时。)我的老师也是如此。)

EN

回答 4

Stack Overflow用户

发布于 2010-04-10 18:16:32

这就是关于戒指和例外的故事。访问冲突将向预先设置的OS处理程序抛出控制,以决定要做什么。程序也可能设置处理程序,但如果不设置,则是未处理的访问冲突,这是您所称的崩溃事件之一。

在某些情况下,这样的机制被用来做好事。例如,当磁盘发送实际内存时,这就是页面错误的工作方式。操作系统捕获访问冲突并加载所需的内容,然后恢复程序执行,就好像什么都没有发生一样。

其他的东西可能会导致坠机。

操作系统也将捕获无效指令。如果它是来自较新的、尚未被CPU支持的指令集的有效指令,OS将在软件中实现它。如果没有,它将声明一个未处理的异常并关闭您的进程。

从没有以正确模式运行的进程访问硬件端口,也会导致程序崩溃。

蓝色屏幕是由故意调用一个名为KeBugCheckEx()的特殊函数引起的。这将由在内核模式下运行的内核或设备驱动程序来完成。这是为了宣布他们自己达到了一个不一致的逻辑状态,而且他们非常重要,他们相信这是一个很好的理由让整个系统立即瘫痪,以避免对硬件或其他组件的进一步破坏。

票数 2
EN

Stack Overflow用户

发布于 2010-04-10 18:05:37

通常,崩溃将导致处理器中发生中断。操作系统为这些中断中的每一个设置了处理程序,因此此时将控制返回给OS。

并不是所有的中断都是坏的。IO中断从磁盘/网络读取)。但是,当操作系统遇到一个坏的中断时,它会:

  • 忽略它并允许程序继续运行。
  • 关闭程序并(大多数操作系统)通知用户
  • 如果程序导致了操作系统不能忽略的中断,并且是无法从,则为操作系统本身将崩溃

至于操作系统如何不能完全控制程序:现代处理器有一个标志(称为PE钻头),它决定进程是以完全权限(内核模式)还是以有限权限(用户模式)运行。用户模式程序彼此隔离,必须通过OS (“系统调用”)相互通信。

票数 1
EN

Stack Overflow用户

发布于 2010-04-10 19:00:38

其实很简单。因为Windows是一个多任务操作系统,它不断地从一个应用程序切换到下一个应用程序(每一个X毫秒)。通过给每个程序一个非常短的运行时间,它创造了一种错觉,即程序同时工作。

当应用程序挂起时,应用程序可能处于一个长(可能是没完没了的)循环中。Windows总是给应用程序一个很短的运行时间,并且没有注意到这一点(除非您希望与应用程序交互,并且它不会在一秒钟内响应)。这是第一种“崩溃”。

在第二种类型,真正的崩溃,一些严重的错误发生,使Windows不能让程序继续。例如,该程序尝试将内存区域写入某个其他程序或Windows本身。处理器有一个内建机制,当这种情况发生时,它会产生一个中断(对处理器来说是一种事件)。Windows被编程来对这个中断作出反应,因为它没有办法解决这个问题,所以它会将程序视为“崩溃”并立即终止它。

如前所述,写入错误的内存地址会导致处理器自动中断(保护)。其他可能导致无法恢复的错误中断的事情包括:

  • 从不允许的内存地址读取
  • 这个特定应用程序的内存不足(但是,分页基本上消除了这个问题)
  • 尝试执行不可执行内存(例如,数据)
  • 跳到无效地址(例如在机器指令的中间)

Windows构建由处理器上的内存管理单元(MMU)使用的特殊表,该表包含有关当前进程可以访问的内存区域的信息。对于每个进程,此表是不同的。显然,因为每个进程驻留在内存中不同的位置,而且它必须能够访问自己的数据和代码。

因此,使用专用访问表的操作系统,再加上处理器触发的保护中断,主要是程序不带整个操作系统的原因。否则,分时处理允许在程序挂起时继续执行操作系统和程序的其余部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2614339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档