《程序是怎样跑起来的》第十一章
关于控制硬件,Windows提供了通过应用来间接控制硬件的方法,利用操作系统提供的系统调用功能就能实现对硬件的控制。在Windows中系统调用称为API。API就是应用调用的函数,这些函数存储在DLL文件中。Windows控制硬件时借助的是输入输出指令,这些指令也是汇编语言的助记符。IN指令通过指定的端口号的端口输入数据,并将其存储在CPU内部的寄存器中。OUT指令则是吧CPU寄存器中存储的数据输出到指定端口号的端口。I/O控制器中有用于临时保存输入输出数据的内存,这个内存就叫端口。I/O内部的寄存器与CPU的寄存器不同,CPU的寄存器是用来进行数据运算处理的,而I/O寄存器则主要用来临时存储数据。实现I/O控制的集成电路中,会存在多个端口,所以就会有多个I/O控制器,一个I/O控制器既可以控制一个外围设备,也可以控制多个外围设备,各端口之间通过端口号区分,端口号也称为I/O地址。IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制,这个机制被称为中断处理。实施中断请求的是链接外围设备的I/O控制器,负责实施中断处理程序的是CPU。外围设备的中断请求会使用跟I/O端口不同的编号,称为中断编号。由于外围设备有很多个,因此就有必要按照顺序来调查。按照顺序调查多个外围设备的状态称为轮询。DMA是指在不通过CPU的情况下,外部设备直接和主内存进行数据传送。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现