他们是否反复检查条件并在条件满足时执行。例如,操作系统如何确切地知道何时插入USB设备,或者MSN如何确切地知道您何时收到电子邮件。这是如何工作的?
由于
答案 0 :(得分:33)
在低级别,操作系统内核“知道”什么时候发生,因为有问题的设备会向CPU发送硬件中断。
因此,当网络数据包到达时,网络控制器会发送一个中断,并且操作系统内核会在适当时做出响应。
在程序级别,它的工作方式完全不同 - 大多数应用程序运行“事件循环”,在那里他们获取消息(例如,来自操作系统的消息说“在应用程序的这一点上点击了鼠标” ),执行适当的操作以响应该操作,然后,收听更多消息。如果没有消息,操作系统将休眠该线程,直到它有一条要传递的消息。
答案 1 :(得分:2)
看一下 Interrupts 这应该解释硬件如何启动某些'事件'
答案 2 :(得分:1)
取决于
通常会在生成事件的对象中注册事件侦听器。当事件发生时,对象遍历所有向其注册的侦听器,通知它们事件。例如,看一下Java中的AWT / Swing事件模型。
操作系统确切知道何时获得USB
在低级别我怀疑是硬件中断(有人纠正我,如果我弄错了),这是由内核/ USB驱动程序处理的。通常有更高级别的系统(例如DBUS)可以监听它并让事件监听器听取它们。
或MSN如何确切地知道您何时收到电子邮件。
我怀疑这是一个简单的情况,每隔x秒轮询邮箱(例如通过POP3)并检查邮件数量(虽然可能是错误的)。
匿名。解释了硬件中断和软件级事件监听之间的区别。
答案 3 :(得分:1)
电子邮件检查程序等程序通常会运行后台服务,每隔X个时间段检查一次新邮件。还有其他方法可以做到这一点,但对于软件级事件,它几乎肯定会是这样的。