应用程序怎么控制cpu和主内存以外的硬件?

应用程序怎么控制CPU和主内存以外的硬件?

应用程序通过调用Windows提供的API间接控制硬件,而windows也是软件,所以windows应该向CPU传递了某些指令,从而通过软件控制了硬件!

而Window控制硬件时借助的是输入输出指令。其中具有代表性的两个输入输出指令就是IN和OUT;

  • IN指令: 将指定端口号的端口中的数据,输入到CPU内部的寄存器中。
  • OUT指令: 把CPU寄存器中存储的数据,输出到指定端口号的端口中。

1.什么是端口和端口号?

由于计算机主机与外围设备电压不同,不能直接相连,所以在两者之间有一个连接器做中介,连接器中有I/O控制器可以解决这个问题;

每个外围设备都有自己的I/O控制器,I/O控制器中有用于临时保存输入输出数据的内存。这个内存就是端口;

一个I/O控制器可以连接多个外部设备,也就存在多个端口,为了区分而给这些端口编号,成为端口号,端口号也叫I/O地址;
在这里插入图片描述

2.IRQ:Interrupt request 中断请求

cpu停下正在运行的程序转而去处理新的程序,新的处理完毕后再继续处理老的,这一过程交中断;

发送中断请求的是连接外围设备的I/O控制器,处理中断请求的是CPU。中断请求都有自己的中断编号;

假如同时有多个外围设备进行中断请求的话,CPU就不知道怎么处理。为此,在I/O控制器和CPU中间加入名为中断控制器的IC来进行缓冲。中断控制器会把从多个外围设备发出的中断请求有序地传递给CPU,如图:
在这里插入图片描述

CPU接收到来自中断控制器的中断请求后,会把当前正在运行的主程序中断,并切换到中断处理程序。中断处理程序的第一步处理,就是把CPU所有寄存器的数值保存到内存的栈中。在中断处理程序中完成外围设备的输入输出后,把栈中保存的数值还原到CPU寄存器中,然后再继续进行对主程序的处理,如图:
在这里插入图片描述

3.DMA:direct memory access

不通过CPU的情况下,外围设备直接和主内存进行数据传送。例如磁盘。每个使用DMA的设备都有DMA通道;

I/O端口号、IRQ中断编号、DMA通道可以说是识别外围设备的3点组合。

4.说明

本文为《程序是怎样跑起来的》读书笔记,如有错误,请兄弟们指正,大家一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值