gpt4 book ai didi

assembly - 超越抽象的好奇心 : how is bytecode executed? 设备驱动程序如何工作?

转载 作者:行者123 更新时间:2023-12-04 07:45:39 26 4
gpt4 key购买 nike

我在 *nix 上看到的一切都是对硬件的一组抽象,但我很好奇硬件是如何工作的。
我已经在汇编中进行了编程,但这仍然只是一组抽象。

处理器如何理解汇编操作码(作为字节码)?
设备驱动程序如何工作(在较低级别(抽象)进行解释)?

最佳答案

设备驱动程序形成操作系统的设备 API 和实际硬件寄存器之间的接口(interface)。

linux 设备 API 模型是更广泛的 linux 概念的延续,即一切都是文件,应用程序可以通过 open()、read()、write()、ioctl() 和 close( ) 界面。在后台,有一个 install() 例程,但操作系统决定何时调用它。

硬币的另一面是硬件。 CPU 使用特殊的 I/O 指令访问设备寄存器,或者使用普通的内存访问连接到硬件的特殊内存位置。虽然硬件寄存器可以像内存一样工作,但它们可以做内存不能做的事情。相当频繁地,写入设备的一个寄存器可以改变它的一些其他寄存器的值,并且可以通过连接硬件中的电事件来改变或改变。

设备驱动程序弥合了这一差距。由于设备类型的可能性几乎是无限的,因此很难概括出功能是如何映射的,除了几个点。 install() 例程在系统启动时触发,配置寄存器以进行正确操作,通常这包括设置中断服务和处理; open() 例程为应用程序提供与设备的逻辑连接;通常会努力使 read() 和 write() 以某种合理的方式移动数据,尽管有时您会看到这些实现为无操作;动态设备设置通过 ioctl() 操作。当然,close() 的主要工作是撤消 open() 的工作,特别注意释放 open() 获取的任何系统资源。

好吧,无论如何,这就是以 linux 为中心的观点。 Windows 模型,至少是我熟悉的模型(可能已经过时),倾向于提供特定于设备的函数调用库。

关于assembly - 超越抽象的好奇心 : how is bytecode executed? 设备驱动程序如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com