如键盘输入作为扫描码可以从调用获得中断09 IRQ1或类似的人或通过在段直接访问BIOS键盘缓冲区0040H为什么键盘驱动程序需要作为键盘输入可以从中断或通过访问键盘缓冲区?
为什么出现一个单独的键盘驱动程序的要求?还是键盘驱动程序本身为OS执行上述操作之一?
我的意思是当我们可以在BIOS键盘缓冲区或某些中断例程时进行键盘输入为什么需要写一个“键盘驱动程序”,因为在像minix这样的一些操作系统中,有一个单独的键盘河该OS的驱动程序?
如键盘输入作为扫描码可以从调用获得中断09 IRQ1或类似的人或通过在段直接访问BIOS键盘缓冲区0040H为什么键盘驱动程序需要作为键盘输入可以从中断或通过访问键盘缓冲区?
为什么出现一个单独的键盘驱动程序的要求?还是键盘驱动程序本身为OS执行上述操作之一?
我的意思是当我们可以在BIOS键盘缓冲区或某些中断例程时进行键盘输入为什么需要写一个“键盘驱动程序”,因为在像minix这样的一些操作系统中,有一个单独的键盘河该OS的驱动程序?
对驱动程序有要求,因为驱动程序是操作系统用来与设备进行交互的抽象机制,既是真实的也是想象的。
考虑/ dev/random,这是一个随机数发生器。操作系统知道它可以从该设备“读取”并获得一个随机数。随机数是如何产生的?操作系统不关心。该过程被驾驶员隔离并提取出去。它可能是一个伪随机算法。它可能是主板上的一种特殊设备。它可能是一台观看高峰时间流量的摄像机。谁知道。关键在于操作系统并不关心它是如何完成的,它只知道通过使用各种驱动程序,它可以与大多数任何硬件(真实的或合成的)进行通信。
就像您正在编写操作系统一样,您不会简单地从键盘缓冲区加载内存,但是您只需编写一次代码并调用子例程,驱动程序是更高级别的抽象机制,执行类似任务。
一般来说现代操作系统在内核模式和用户模式之间有所区别。内核拥有更高的权限,只有专用的代码才能在该模式下运行。访问硬件资源通常是内核模式的领域。另一方面,CPU阻止用户模式代码访问这些资源。
我不知道你在说哪个操作系统,但实质上你所说的驱动程序就是这个专门的代码。您的用户模式代码被禁止直接访问资源,并且必须与驱动程序通信。
如果你考虑一个比较简单的或者更旧的操作系统,例如没有区别的MS-DOS,那么所有的代码都可以访问硬件资源。但我不知道任何允许这个的现代通用操作系统。
这是一个非常好的维基百科文章来解释Kernel Model Programming的想法。
在Windows(和大多数现代操作系统),也就是在“用户模式”运行的代码和代码之间的区别 是在“内核模式”运行 。本章将指出一些 的差异。首先,英特尔CPU具有称为环 的操作模式,其指定可用于运行代码的指令类型和存储器。有四个环:
- 环0(也称为内核 模式)可以完全访问每个资源。这是运行Windows内核的模式。
- 环网1和环网2可以定制,其级别为 ,但通常未使用,除非有虚拟机 正在运行。
- 环3(也称为用户模式)限制访问 资源。
这样做的原因是因为如果所有节目在 内核模式下运行,它们将能够覆盖每个人的记忆和 可能导致整个系统时,他们崩溃。
谢谢您的建议先生。现在我的操作系统处于原始阶段。当它长大一点时,我会做那个先生。 – geek1000 2012-01-14 04:39:02