操作系统如何确定将设备输入定向到何处?

时间:2018-06-07 08:15:09

标签: io operating-system

让我给出一些具体的动机背景。

我很享受AHK计划已经有一段时间了。它允许用户在Windows机器上编写各种任务的脚本,如果需要,可以将这些操作绑定到热键。

我从来没有理解如果我为alt+k创建一个绑定,Windows会理解在按下该键组合时首先通知AHK。如果AHK然后决定创建响应键击down,Windows将知道该命令的预期目标。

此外,如果我以管理员模式启动程序,似乎AHK现在不再抢占任何设备输入。现在输入立即传递给当前关注的程序。除非我也以管理员模式运行AHK脚本,否则一切都恢复正常。

有人能否了解幕后发生的事情?如果在Linux上存在相当大的差异,我也有兴趣了解这些。

1 个答案:

答案 0 :(得分:0)

根据我对操作系统课程的理解,我将以大多数通用方式回答这个问题。

每个 I / O 设备都有设备控制器。操作系统从不直接与设备控制器通信。操作系统使用名为设备驱动程序的特殊软件(通常由供应商自己提供),该软件位于设备控制器和操作系统之间。

设备驱动程序了解设备控制器,并为操作系统提供统一的接口以与设备通信。例如:要启动I / O操作,设备驱动程序将在设备控制器中加载适当的寄存器。控制器将检查寄存器的内容并检查要采取的操作(例如从键盘读取字符)。控制器将启动从设备到本地缓冲区的传输。

传输完成后,它将使用中断通知驱动程序。驱动程序将控制权返回给操作系统,可能返回指向数据的指针。对于其他操作,驱动程序返回状态。