作为扫描码的键盘输入可以通过调用中断09 IRQ1 或类似的来获得,也可以直接访问 0040h
栏为什么需要单独的键盘驱动程序?或者键盘驱动程序本身是否为操作系统执行上述操作之一?
我的意思是当我们可以使用BIOS键盘缓冲区或某些中断例程时输入键盘输入为什么需要编写“键盘驱动程序”,因为在某些操作系统(如minix)中,驱动程序列表中有一个单独的键盘河那个操作系统?
答案 0 :(得分:1)
一般而言,现代操作系统在内核模式和用户模式之间有区别。内核具有更高的权限,只有专门的代码才能在该模式下运行。访问硬件资源通常是内核模式的领域。另一方面,用户模式代码被CPU阻止访问这些资源。
我不知道你在谈论哪个操作系统,但实质上你所谈到的驱动程序就是这个专门的代码。您的用户模式代码无法直接访问资源,必须与驱动程序通信。
如果您考虑使用更简单或更旧的操作系统,例如MS-DOS,则没有区别,因此所有代码都可以访问硬件资源。但我不知道任何允许这种情况的现代通用操作系统。
这是一篇非常好的维基百科文章,用于解释Kernel Model Programming个想法。
在Windows(和大多数现代操作系统)中,有一个区别 在“用户模式”下运行的代码与正在运行的代码之间 在“内核模式”中。本章将指出一些问题 差异。首先,Intel CPU具有称为环的操作模式 它指定了可用的指令和内存类型 运行代码。有四个戒指:
- 环0(也称为内核 mode)具有对每个资源的完全访问权限。这是模式 Windows内核运行。
- 戒指1和戒指2可以定制水平 访问但通常未使用,除非有虚拟机 运行。
- 响铃3(也称为用户模式)限制访问 资源。
原因是因为所有程序都在运行 内核模式,他们将能够覆盖彼此的内存和 当它们崩溃时可能会导致整个系统崩溃。
答案 1 :(得分:0)
驱动程序需要驱动程序,因为驱动程序是操作系统用来与设备交互的抽象机制,无论是真实的还是想象的。
考虑/ dev / random,这是一个随机数生成器。操作系统知道它可以从该设备“读取”并获得一个随机数。如何生成随机数?操作系统并不关心。该过程被驱动程序隔离并抽象出来。它可以是伪随机算法。它可能是主板上的特殊设备。它可能是一个观看高峰时段交通的摄像机。谁知道。关键是操作系统并不关心它是如何完成的,它只知道通过使用各种驱动程序,它可以与大多数硬件进行对话,无论是真实的还是合成的。
就像你编写操作系统一样,你不会简单地从键盘缓冲区加载内存,但是你只需编写一次代码并调用子程序,驱动程序是一种更高级别的抽象机制,它执行类似的任务