为什么作为键盘输入所需的键盘驱动程序可以从中断或通过访问键盘缓冲区获取?

时间:2012-01-14 04:01:07

标签: keyboard interrupt bios

作为扫描码的键盘输入可以通过调用中断09 IRQ1 或类似的来获得,也可以直接访问 0040h

为什么需要单独的键盘驱动程序?或者键盘驱动程序本身是否为操作系统执行上述操作之一?

我的意思是当我们可以使用BIOS键盘缓冲区或某些中断例程时输入键盘输入为什么需要编写“键盘驱动程序”,因为在某些操作系统(如minix)中,驱动程序列表中有一个单独的键盘河那个操作系统?

2 个答案:

答案 0 :(得分:1)

一般而言,现代操作系统在内核模式和用户模式之间有区别。内核具有更高的权限,只有专门的代码才能在该模式下运行。访问硬件资源通常是内核模式的领域。另一方面,用户模式代码被CPU阻止访问这些资源。

我不知道你在谈论哪个操作系统,但实质上你所谈到的驱动程序就是这个专门的代码。您的用户模式代码无法直接访问资源,必须与驱动程序通信。

如果您考虑使用更简单或更旧的操作系统,例如MS-DOS,则没有区别,因此所有代码都可以访问硬件资源。但我不知道任何允许这种情况的现代通用操作系统。

这是一篇非常好的维基百科文章,用于解释Kernel Model Programming个想法。

  

在Windows(和大多数现代操作系统)中,有一个区别   在“用户模式”下运行的代码与正在运行的代码之间   在“内核模式”中。本章将指出一些问题   差异。首先,Intel CPU具有称为环的操作模式   它指定了可用的指令和内存类型   运行代码。有四个戒指:

     
      
  • 环0(也称为内核   mode)具有对每个资源的完全访问权限。这是模式   Windows内核运行。
  •   
  • 戒指1和戒指2可以定制水平   访问但通常未使用,除非有虚拟机   运行。
  •   
  • 响铃3(也称为用户模式)限制访问   资源。
  •   
     

原因是因为所有程序都在运行   内核模式,他们将能够覆盖彼此的内存和   当它们崩溃时可能会导致整个系统崩溃。

答案 1 :(得分:0)

驱动程序需要驱动程序,因为驱动程序是操作系统用来与设备交互的抽象机制,无论是真实的还是想象的。

考虑/ dev / random,这是一个随机数生成器。操作系统知道它可以从该设备“读取”并获得一个随机数。如何生成随机数?操作系统并不关心。该过程被驱动程序隔离并抽象出来。它可以是伪随机算法。它可能是主板上的特殊设备。它可能是一个观看高峰时段交通的摄像机。谁知道。关键是操作系统并不关心它是如何完成的,它只知道通过使用各种驱动程序,它可以与大多数硬件进行对话,无论是真实的还是合成的。

就像你编写操作系统一样,你不会简单地从键盘缓冲区加载内存,但是你只需编写一次代码并调用子程序,驱动程序是一种更高级别的抽象机制,它执行类似的任务