Dud*_*dle 1 language-agnostic performance events computer-science
我是计算机科学专业的学生,在计算机程序运行的过程中学到了很多关于"幕后"的基本概念.但最近我意识到我不明白软件事件如何有效地工作.
在硬件中,这很容易:代替处理器"忙着等待"以查看是否发生了某些事情,组件发送中断请求.
但是,这是如何工作的,例如,鼠标悬停事件?我的猜测是:如果鼠标发送信号("移动"),操作系统计算其新的位置p,然后检查什么程序正在在屏幕上绘制,告诉程序位置P,则程序本身检查什么object位于p,检查是否有任何事件处理程序与所述对象关联并最终触发它们.
这对我来说听起来非常低效,因为微小的鼠标移动等同于许多cpu上下文切换(我学到的相对昂贵).然后有许多后台应用程序也可能想要自己做一些事情.
我的直觉在哪里失败了?我意识到即使是"慢速"的500MHz处理器每秒也能完成5亿次操作,但对于这样一个简单的事件来说,它似乎仍然有太大的作用.
提前致谢!
考虑网络数据包之类的事件,因为它们通常由类似的机制处理.现在想想,你的鼠标每秒最多发送几百个数据包,每个数据包大约6个字节.与现代机器的带宽功能相比,这没什么.
实际上,你可以创建一个响应式GUI,其中每个鼠标运动在大约20年前构建的硬件上实际上发送了一个网络数据包(86字节包括标题):X11,Linux和大多数其他Unix的基本GUI机制,可以做到这一点,并且经常在80年代末和90年代初使用这种方式.当我第一次使用GUI时,它就是这样,虽然现在的标准不是很好,但鉴于它在20 MHz机器上运行,它确实可用.
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |