Windows 驱动程序和计算机架构问题

Windows 驱动程序和计算机架构问题

我只是想知道是否存在,如果是,如何区分操作系统需要内置哪些驱动程序,哪些不需要,甚至了解一点关于 CPU 和周围设备之间的通信。

让我解释一下 - 操作系统必须有驱动程序(也许它们甚至不被称为驱动程序,因为它们太基础了)来做一些非常基本的事情,比如显示某些东西(但我相信 BIOS 例程用于此)和访问键盘、硬盘。

但是这些设备是如何连接的呢?让我们以 HDD 为例。它通过南桥集成到 Intel 系统中。但是操作系统如何访问它呢?因为使用 CPU,您只能执行端口 IO 操作和内存映射 IO。通过这种方式,我相信它可以联系北桥,而北桥有其内部方式可以进一步联系南桥和其他外围设备。

更困难的是,几年前甚至有单独的键盘、中断等控制器。那么当时它是如何工作的呢?所有这些控制器是否都连接到 CPU 的 portIO 总线并仅对其地址做出响应,还是它们连接到北桥以过滤掉请求?

我还有另一个例子。假设我在键盘上输入了一些内容。现在键盘控制器将中断发送到中断控制器,中断控制器将中断发送到 CPU。然后 CPU 必须使用 PortIO 从中断控制器读取触发了哪个中断。如果它读取了例如 IRQ 5 并发现它与键盘相连,那么它必须联系键盘控制器以获取键代码。我说得对吗?

请帮我解决这个问题。谢谢。

答案1

我认为您说的是 DMA,即直接内存访问。这就是现在所有快速设备所使用的。不过我不确定您在问什么。如果您想了解计算机的理论知识,可以从维基百科或谷歌开始?

答案2

考虑一下:当英特尔在最初的 8088 之后为 PC 开发 CPU 时,他们并没有删除任何现有功能,而是“添加”了其他功能。这就是为什么您拥有强大的多千兆赫 8 核 64 位 SSE4+ 处理器,并且仍然以 16 位 640KB 8088 模式启动,以防您仍然想运行 DOS。

PC 硬件中有很多东西都是这样的;显卡就是一个典型的例子。VGA 是附加在 EGA、CGA 和 MDA 上的附加功能,现代 GPU 仍然启动并看起来像 VGA 卡,并具有文本模式支持,直到驱动程序激活高级功能。

过去,除了显卡之外,几乎所有东西都使用标准化的 I/O 端口。显卡的 RAM 连接到 A000:0000 到 AFFF:FFFF,具体取决于卡中的 RAM 大小,并且它还具有它响应的特定 I/O 端口。软盘驱动器使用 DMA 将数据从磁盘传输到 RAM。

因此,当基于 BIOS 的 PC 启动时,其中的许多硬件都会重新创建旧的 IBM 5150 PC,直到触及某些其他端口(通常是在驱动程序加载和初始化时),这会导致设备失去兼容性并进入“本机”模式。

理想情况下,每个设备只分配一个 IRQ。键盘的 IRQ 为 IRQ 1,因此 CPU 可以假定来自 IRQ 1 的任何中断都是键盘的,然后它可以读取相应的 I/O 端口以获取键码。

谷歌搜索“IBM 5150 BIOS 反汇编”或“IBM 5150 BIOS 源代码”。IBM 在其技术手册之一中包含了原始 BIOS 的源代码。这本书读起来非常有趣,可以教你很多东西,并解答你的很多问题。

相关内容