信号----硬件中断

本文解析了键盘数据如何通过硬件中断进入操作系统,转化为信号的过程,以及中断向量表在其中的作用。操作系统通过检查中断信号,处理键盘输入,包括普通字符和控制键如Ctrl+C的特殊行为。
摘要由CSDN通过智能技术生成

硬件中断

键盘组合键是向进程发送信号,那么键盘数据是如何输入到内核中,然后变成信号的?这个信号又是由谁发送给进程的?

当键盘被按下,操作系统先知道用户用键盘输入了内容

那么操作系统是如何知道键盘上有内容了?
键盘数据是如何输入给内核的 ,ctrl+c是如何变成信号的?ctrl+c会被解释为2号信号。

根据冯诺依曼体系结构,键盘不能被直接访问,只能由它的管理者操作系统访问,所有首先知道键盘被按下的是操作系统先知道。

操作系统是如何知道键盘被按下,也就是如何知道键盘上有数据了,然后读取数据到他里面呢。是通过中断号!根据冯诺依曼体系结构,键盘属于外设
在这里插入图片描述
操作系统想要知道键盘是否有数据,要做定期检查。在Liunx下一切皆文件,键盘也是文件,有自己的文件描述符和内核缓冲区,他有自己的内核数据结构,操作系统把内核数据结构拷贝到文件缓冲区中。文件有自己的缓冲区,操作系统要拷贝前提是要知道键盘上已经有数据了,如何知道他定期的检查,那么计算机中存在很多的外设操作系统不可能去一一检查,他忙不过来有自己的事情要做,只有当他空闲的事情再检查,但是空闲时候检查有影响了效率,那么这个事情交给cpu去做

在计算机体系结构中,CPU不和外设直接打交道(在数据层面),不过在控制层面可以

cpu要读取外设,然后外设数据读到操作系统,操作系统读取数据时,实际上是拷贝到文件缓冲区中。在CPU上存在很多的帧角,直接集成在主板上,而设备也是插在主板上的,所有键盘间接在物理上可以和cpu连接。

cpu虽然不在键盘上读取数据,但是键盘是可以在硬件上给cpu发送一个硬件中断,硬件中断操作系统在执行对应工作时一旦硬件中断号就绪那么操作系统就会执行硬件中断号对应硬件中断表中的方法,一旦键盘上有数据了,键盘会通过一些硬件单元(常见8259)转化,把键盘中一些信息发送给cpu。

在计算机中存在很多设备cpu要计算这些数据先由操作系统将这些数据拷贝内存中,在拷贝这件事情上不难,但是怎么知道有数据是个问题,所有这一个问题不要操作系统去检查,通过cpu确定。当外设有数据了,外设会通过硬件单元发送硬件中断给cpu帧角,然后表明该设备有数据了,之后再通知操作系统去拷贝!
计算机中存在各种设备,各种设备都可以发送中断,所有cpu存在辨别中断是由哪一个设备发过来的,因此每一个设备的硬件中断是有对应编号的类似1,2,3,4之类的数字。假如给键盘分配的硬件终端号是1,所有未来键盘上有数据就绪就会给cpu发送1号中断号(通过和cpu直接相连的帧角发送)向cpu内某个帧角比如某个寄存器发送高低电频;给cpu某个帧角发送高低电频然后cpu来解释帧角收到的中断号是几,所有对应帧角上就有数据这是cpu知道的。因此cpu知道键盘上有数据,但是仅仅是cpu知道还没给拷贝到内存中。
在硬件层面上,向cpu某个帧角发送中断,cpu要记录下来某一个设备发过来的中断号是几,cpu是有记录的,这是因为在计算机中只认识二进制,所有在cpu中有一个寄存器能够保存数据,然后将接收过来的中断号对应的高低电频转换为二进制010101保存起来,然后转换为对应数据在给相应数据带上类型就是我们看见的数据了。那么cpu内部的寄存器为什么能保存数据?因为在硬件上不知道写的是什么数据,而硬件发送中断的过程起始就是在给某个帧角发送高低电频过程,就是对应01.

0:存储单元没有电信号;1:存储单元有电信号

cpu上寄存器能保存数据起始就是因为他能够有充放电过程,键盘通过发送高低电频给帧角之后cpu知道帧角是几,所有cpu会把对应帧角解释成高电位,然后就代表有数据。

硬件上数据交互就是在其充放电的过程,在硬件上是充电,而软件上就是解释成数据010101,然后再配上类型就是计算机上对应的数据了噢!

cpu的帧角是给外设准备的,键盘充放电就是在给cpu对应帧角发送中断。
中断向量表
在软件上呢在操作系统内部,计算机开机的时候会给操作系统新城一张中断向量表这是一个数组,然后中断向量表中都是存的是方法的地址,什么方法?直接访问外设的方法—主要是磁盘,显示器,键盘等外设,也可以说是函数指针,提供了一大堆的方法这些方法在操作系统内部实现,方法有读有写方法。提供中断向量表之后一旦外设上有数据操作系统一看终端向量表就知道哪个外设上有数据了就可以去拷贝设备到内存中。
一旦触发中断之后,操作系统立马识别到cpu上已经收到中断号,操作系统就会根据中段号去中断向量表中找这个中断号对应的方法,操作系统找到这个方法之后操作系统去执行这个方法,这个方法才是将数据拷贝到内存中的方法!

所有操作系统是如何得知键盘上有数据的?

是通过中断向量表和中断向量号还有cpu知晓!键盘一旦有数据就能按回车键盘立马通过cpu的帧角给cpu发送中断号发送中断号之后硬件中断以充放电的方式被cpu记录下来之后就让操作系统来读取这个数据

这个可以认为是操作系统来做的,那么中断号知道了,操作系统去查中断向量表里面的方法执行这个方法操作系统执行中断号对应方法这个方法就是从外设中读取数据到内核这个文件对应缓冲区中!

因为中断的产生操作系统不用花时间去检查外设是否有数据,外设只需要通过硬件中断就可以使操作系统知道自己的数据是否就绪!当操作系统知道数据之后就会将键盘上的数据拷贝到缓冲区中。
键盘输入数据判断
不过如果键盘上不是像1,2,3,4之类的数据而是组合键的形式输入的操作系统做什么?

对于键盘的输入分为普通输入和控制输入(组合键),操作系统要做出分辨分辨输入的是哪一种,所有操作系统在拷贝的时候要先对输入的数据做判断,若是控制数据,操作系统会将组合键尤其是(ctrl+c)转化为对进程发送信号,他并不会把它拷贝到文件缓冲区中。

键盘输入是基于硬件中断工作的,操作系统也是在不断接收中断处理的过程。

而信号也是数字,那么他是不是也是一种以中断的方式来的呢?信号是纯软件的行为不过它的功能和硬件中断很像在学习信号就是用软件的方式对进程模拟的硬件中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值