首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

键盘敲入 A 字母时,操作系统期间发生了什么...

我们一般会有一个硬件的中断控制器,当设备完成任务后触发中断中断控制器,中断控制器就通知 CPU,一个中断产生了,CPU 需要停下当前手里的事情来处理中断。...另外,中断有两种,一种软中断,例如代码调用 INT 指令触发,一种是硬件中断,就是硬件通过中断控制器触发的。...但中断的方式对于频繁读写数据的磁盘,并不友好,这样 CPU 容易经常被打断,会占用 CPU 大量的时间。...仅仅在传送开始和结束时需要 CPU 干预。...但是,除了读写操作,还需要有检查特定于设备的功能和属性。于是,需要 ioctl 接口,它表示输入输出控制接口,是用于配置和修改特定设备属性的通用接口。

52510

【Linux】对信号产生的内核级理解

一、键盘产生信号  键盘产生信号这里就要涉及一个重要的概念了,叫硬件中断。我这里会粗粒度地说一下键盘产生信号,以及信号被上层软件读到的过程,只是说一下我自己的理解。...一旦CPU接收到中断信号,它会暂停当前正在执行的程序(保存当前的状态,如程序计数器、寄存器值等),然后跳转到特定中断处理程序或中断服务例程来响应这个中断。...当我们在键盘中输入命令或数据时,CPU上对应的针脚会触发高电平,CPU此时就要发生硬件中断,将CPU中正在运行的进程的数据做保存,然后去响应这个中断。...CPU有寄存器能记录是几号(我觉得可以理解成数组下标)针脚触发了高电平。然后CPU就可以根据寄存器中的数字在中断向量表中找到对应数组下标中的读取键盘数据的方法。操作系统就去读取键盘上输入的数据。...当CPU尝试访问一个未映射或不可访问的虚拟地址时,会触发页错误,此时CR2会保存导致错误的虚拟地址。 CR3寄存器:功能:CR3用于存放最高级页目录地址(物理地址)。

9010
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 内核如何处理中断

中断是现代 CPU 工作方式中重要的部分。例如:当你每次在键盘上按下一个按键后,CPU 会被中断以使得 PC 读取用户键盘的输入。这个过程发生得相当快,以致于在使用体验上你不会感到任何变化或损害。...此外,键盘并不是导致中断的唯一组件。一般来说,有三种类型的事件会导致 CPU 发生中断:硬件中断、软件中断和异常。在具体介绍不同类型的中断前,我需要先定义一些术语。...当一个中断请求(IRQ)产生后,中断控制器(PIC)向 CPU 写入数据,并且触发中断请求引脚(INTR)。...如果你在某个程序中设置了一个断点,你就插入了一条可以触发陷阱执行的特殊指令。陷阱可以触发上下文切换来允许你的调试器读取和展示局部变量的值。之后程序可以继续运行。...在表的末尾,有一些非数字的中断。它们是特定于体系结构的中断,如 本地计时器中断(local timer interrupt)(LOC)的中断请求(IRQ)号为 236。

2.4K40

CPU的中断

一旦CPU接收了中断请求,CPU就会暂时停止执行正在运行的程序,并且调用一个称为中断处理器或中断服务程序(interrupt service routine)的特定程序。...如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。...当我们在键盘上按下一个按键时,键盘就会对CPU说,一个键已经被按下。在这种情况下,键盘的IRQ线路中的电压就会发生一次变化,而这种电压的变化就是来自设备的请求,就相当于说这个设备有一个请求需要处理。...可屏蔽中断(Maskable interrupts):这些中断是可以被CPU忽略或延迟处理的。当缓存控制器的外部针脚被触发的时候就会产生这种类型的中断,而中断屏蔽寄存器就会将这样的中断屏蔽掉。...我们可以将一个比特位设置为0,来禁用在此针脚触发中断。 软中断 编程异常通常叫做软中断,软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式 通常,软中断是一些对I/O的请求。

3.2K30

Vue学习笔记之Vue知识点补充

-- 只当在 event.target 是当前元素自身时触发处理函数 --> ......-- 点击事件将只会触发一次 --> 0x02 按键修饰符 在监听键盘事件时,我们经常需要检查常见的键值。...全部的按键别名: .enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right 0x03 系统修饰键 可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器...在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。...换句话说,只有在按住 ctrl 的情况下释放其它按键,才能触发 keyup.ctrl。而单单释放 ctrl 也不会触发事件。

1.2K20

内核的雏形(下) -- 添加异常中断响应机制

.c 中定义供外部使用的函数,而对于仅在 .c 文件中使用的局部函数,则直接在 .c 文件中进行声明,并标识 static 关键字。...但是,你会发现编译运行后的结果与上一篇文章最后我们跳转进入 kernel,完成 gdt 迁移后的效果完全一致,这是当然的,我们既没有通过定义中断响应函数告诉操作系统触发中断后要执行什么指令,也没有触发中断...5.1 创建处理异常的中断响应函数 正如前面介绍的,硬件触发中断分为异常与硬件中断两种,硬件中断是通过级联在两块 8259A 芯片所暴露出来的 15 个端口触发的,而异常则是 CPU 预设的,相比于硬件中断...触发硬件中断 8.1 放开中断屏蔽 我们在此前的代码中,已经屏蔽了所有的硬件中断(参见 kernel/i8259.c): out_byte(INT_M_CTLMASK, 0xFF); 下面我们测试一下键盘中断的响应...8.2 运行系统 我们编译运行系统: 8.3 触发中断 看起来什么都没有发生,此时我们按下键盘,可以看到,中断响应函数正确执行,显示出了键盘中断号: 参考资料 《Orange’s 一个操作系统的实现

42620

MIT_6.S081_xv6.Information 4:Interrupt&Device Manage

6.S081_xv6.Information 4:Interrupt&Device Manage 于2022年3月23日2022年3月23日由Sukuna发布 设备管理 一个设备驱动程序就是操作系统对特定的设备进行管理的程序...总结:用户键盘输入->中断一次->UART把中断的输入读取出来送到consoleintr->consointr调用consoleread函数 控制台输出 read()系统调用能获得用户的键盘输入,write...然后机器就会从THR寄存器中读取要输出的内容,输出成功就触发中断,看看还有没有要要写的内容,有的话就接着放入THR寄存器中....时钟中断 RISC-V的CPU在一定的时间段就会触发一次时钟中断,RISC-V希望时钟中断能在M态处理而不是在S态处理.xv6选择在一个特殊的方法来处理时钟中断....在start.c中,我们设置了把所有中断都放在S态进行处理.但是我们在timeinit函数中创建了一个专属于时钟中断的处理模式.主要有几点: 配置了CLINT硬件,这个硬件会在一定间隔时间触发一次中断.

29820

Linux启动引导参数grub

0 表示关闭看门狗; panic 表示出现看门狗超时(长时间没喂狗)的时候触发 内核错误,通常和"panic="配合使用,以实现在系统出现锁死的时候自动重启。...nopanic 正好相反,表示即使出现看门狗超时(长时间没喂狗),也不触发内核错误。...HPET可以替代前述除RTC之外的所有时钟硬件(Timer),因为它既能定时触发中断,又能维护和读取当前时间。...也就是说,周期性时钟是通过周期性触发中断达到计时目的,如心跳一般。而单步递增时钟则不发送中断,取而代之的是由软件自己在需要的时候去主动读取TSC寄存器的值来获得时间。...video.brightness_switch_enabled={0|1} [背景知识]如果ACPI video.ko驱动(CONFIG_ACPI_VIDEO)能够收到用户通过键盘热键触发的ACPI事件

9.3K20

单片机中断—外部中断

51系列单片机的中断共有5个,其中外部中断共占两个。外部中断主要通过单片机的引脚P3.3、P3.4接收外部脉冲或高低电平触发CPU中断。与外部中断有关的多功能寄存器为IE、IP、TCON。...为了消除键盘抖动现象,键盘两端并联滤波电容器C4。P3.2是单片机的外部中断的输入端,当按键按下时,让单片机执行外部中断服务程序,在中断服务中完成对LED的控制。...这里没有设置INT0是下降沿触发中断或是低电平触发中断,原因是按键按下,不管产生不产生键抖现象,总能使INT0引脚产生1个下降沿和低电平。...利用外部中断触发作为按键输入很好的解决了键盘抖动问题。...IT0 = 0; //设置外部中断0为低电平有效触发 while(1); //等待按键按下,中断发生 } 如果需要多个键盘,把INT0口与I/O

2.6K20

CPU使用率过高问题排查及Linux之top命令用法详解

sy(sys):表示 CPU 在内核态运行的时间百分比(不包括中断),通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。...id(idle):表示 CPU 处于空闲态的时间占比,此时,CPU 会执行一个特定的虚拟进程,名为 System Idle Process。...hi(hardirq):表示 CPU 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行。...si(softirq):表示 CPU 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行。...负值表示高优先级,正值表示低优先级 P 最后使用的CPU,仅在多CPU环境下有意义 %CPU 上次更新到现在的CPU时间占用百分比 TIME 进程使用的CPU时间总计,单位秒 TIME+ 进程使用的CPU

5.4K42

vue常用的修饰符有哪些?

-- 点击事件将只会触发一次 --> 按键修饰符 在监听键盘事件时,我们经常需要检查常见的键值。....delete (捕获“删除”和“退格”键) (4) .esc (5) .space (6) .up (7) .down (8) .left (9) .right 系统修饰键 可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器...在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。...在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。...换句话说,只有在按住 ctrl 的情况下释放其它按键,才能触发 keyup.ctrl。而单单释放 ctrl 也不会触发事件。

2.8K20

v-on绑定的一系列事件修饰符

按键修饰符 在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符: <!...config.keyCodes 对象自定义按键修饰符别名: // 可以使用 `v-on:keyup.f1` Vue.config.keyCodes.f1 = 112 系统修饰键 可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器...在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。...在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。...这些修饰符会限制处理函数仅响应特定的鼠标按钮。

2.1K10

【Linux】进程信号(上)

个比特位,所以使用位图结构管理信号 而进程使用task_struct(PCB) 内部必定要存在一个位图结构,用int表示 从低到高的比特位,依次对应1-31 信号 发送信号的本质是写入信号,直接修改特定进程的信号位图中的特定比特位...在输入的时候,计算机怎么知道从键盘输入数据了呢?...键盘是通过硬件中断的方式,通知系统键盘已经按下了 ---- CPU存在很多针脚,有自己的编号,接到主板上 键盘是通过中断控制器(如8259)连接到CPU的, 当按键盘中的某个位置时,操作系统要知道是哪个设备按下的...(磁盘 键盘 网卡) 键盘通过中断控制器链接到9号阵脚处,触发中断 而从这个阵脚的数字被叫做 中断号 CPU内部有各种寄存器,当阵脚有数字时已经就绪时,向CPU寄存器的内部写数字 就完成了硬件中断 --...-- 操作系统内维护一张中断向量表 中断向量表内部包含函数指针 中断号作为中断向量表的下标,直接调用中断向量表中对应的方法 而这个方法会从键盘中读取数据 2.使用系统调用向进程发送信号 kill 输入

13620

【汇编语言王爽】学习笔记p54-p79

他的程序把自己的脏东西串传送到内存某个地方,然后触发中断,让自己的脏东西获得cpu运行,然后就可以显示自己的东西了。...@ int指令调动子程序,此子程序就是中断处理程序简称 中断例程 ------可以自定义中断例程来实现特定功能 具体7ch 存在0000:7ch*4这个地方 中断例程 参数:放在ax里面可以 出入栈...提取cmos ram时间 信息 —时间信息用BCD码存放的------- 外设的连接和中断中断—可屏蔽中断-cpu检测到可屏蔽终端信息的时候如果IF=1那么cpu执行完当前指令后响应中断...=(8),cs=(0ah) 注意 不可屏蔽中端中断值固定为2 注意8086 设置if指令 sti set if为1,cli clear 清理为0 PC键盘的处理过程----1键盘输入2引发9号中断3执行...int9中断例程 pc机键盘的处理过程-引发终端 bios 键盘缓冲区在内存 能存放十五个键盘输入 用一个字存 高位的前半个字放扫描码 低位放字符码 也就是ascii码 控制键 切换键 处理就是

76330

Linux BSP实战课(中断篇):中断控制器的硬件实现

从技术的深层次来看,中断是处理器在正常运行过程中,因外部或内部事件(如外围设备的输入/输出请求、异常错误等)而暂时中断当前执行的程序,转而执行特定中断服务程序(Interrupt Service Routine...在操作系统的上下文中,中断处理是外围设备管理的基石。外围设备如硬盘、键盘、鼠标等,它们的工作通常是异步的,即它们不会按照处理器执行指令的线性顺序来请求服务。...GIC v3中断类别 GICv3定义了以下中断类型: SGI (Software Generated Interrupt):软件触发中断。...软件可以通过写 GICD_SGIR 寄存器来触发一个中断事件,一般用于核间通信,内核中的 IPI:inter-processor interrupts 就是基于 SGI。...SPI (Shared Peripheral Interrupt):公用的外部设备中断,也定义为共享中断中断产生后,可以分发到某一个CPU上。比如按键触发一个中断,手机触摸屏触发中断

21110

javaScript事件处理

对此还有: resize事件:当调整浏览器的窗口到一个新的宽度或者高度时,就会触发resize事件。 scroll事件:文档或者浏览器窗口被滚动期间会触发scroll事件。...---- 3.键盘事件 <!...---- 5.常用事件方法(包括窗口事件,鼠标事件,键盘事件,文本事件) 方法 描述 onabort 图像加载被中断 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标单击某个对象...ondblclick 鼠标双击某个对象 onerror 当加载文档或者图像时发生某个错误 onfocus 元素获得焦点 onkeydown 某个键盘的键被按下 onkeypress 某个键盘的键被按下或者按住...文本被选定 onsubmit 提交按钮被单击 onunload 用户退出页面 ---- 6.事件冒泡和事件捕捉 事件发生就会产生事件流,当一个HTML元素产生一个事件时,该事件会在元素节点和根节点之间按特定的顺序转播

2.3K10

Linux中top命令参数详解

-p:指定特定的pid进程号进行观察。 在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的): ?...0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比 0.0 si 软中断(Software Interrupts)占用CPU的百分比 0.0 st 第4行:KiB Mem: 1530752...负值表示高优先级,正值表示低优先级 P 最后使用的CPU,仅在多CPU环境下有意义 %CPU 上次更新到现在的CPU时间占用百分比 TIME 进程使用的CPU时间总计,单位秒 TIME+ 进程使用的CPU...1、在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况: 2、敲击键盘‘b’(打开关闭加亮效果)top视图变换如下: PID为16283为当前top视图中唯一的运行态进程。...也可以敲击键盘‘y’来打开或者关闭运行态进程的加亮效果。

7.3K30

指北 | 聊聊中断机制

当我们分析某种中断事件时,我们需要搞清楚这四个对象: 中断中断源是谁 中断源在什么条件下触发中断 中断源如何触发 中断信号 信号具体指的是什么 信号是否需要存储 如何存储 中断控制器 中断信号的管理...我们分别以上述四个对象来看: 中断中断源:外部设备,如打印机,键盘,鼠标等。...触发条件:如外围设备报告I/O状态的I/O中断;外围设备发出的对应信号中断,如时钟中断键盘/鼠标对应信号的中断,关机/重启动中断等。 触发方式:由外部设备向中断控制器发出中断请求IRQ。...可以是通过一条信号线上产生特定的电平(利用高低电平表示是否中断两种状态),也可以在总线上发送特定消息或者消息序列,也可以是在中断寄存器中设置已发生的中断状态等。...嗯,就这么简单~ 我们来稍微分析一下中断事件中的“四个对象”: 中断中断源:A线程 中断触发条件:A线程说了算 中断触发方式:A线程中调用threadB#interrupt()方法.

61910

Linux之进程信号详解【上】

键盘特定输入 ——> OS解释为信号 ——> 向目标进程发送信号 ——> 进程收到信号 ——> 进程做出响应   当我们把二号信号进行捕捉,并且回调函数只对信号进行打印动作,我们再使用 Ctrl-C...管道不具备写的软件条件了,所以触发了终止信号,这种信号为 SIGPIPE(13号信号)。   ...而未来我们在按键盘时,通过针脚,使 CPU触发硬件中断!当然也没这么简单,他们之间可能存在 8259可中断控制器,这个我们目前不需要了解。   ...不管如何,键盘和CPU可以通过针脚相互连接,而用户在键盘上输入数据时(发送高电平),就会触发硬件中断,此时CPU就可以检测到这个针脚有高电平,从而识别到键盘。...拿着这个中断号从中断向量表中查询(中断号就是中断向量表的下标索引)对应处理键盘资源的方法,进而调用这个方法去收集键盘发来的数据了。于是就可以把从键盘输入的数据读取到内存当中了。

7810

重学计算机组成原理(十二) - 异常和中断

3 异常的分类 异常可以由硬件触发,也可以由软件触发 3.1 中断(Interrupt) 顾名思义,就是程序在执行到一半的时候,被打断了。这个打断执行的信号,来自于CPU外部的I/O设备。...你在键盘上按下一个按键,就会对应触发一个 相应的信号到达CPU里面。CPU里面某个开关的值发生了变化,也就触发了一个中断类型的异常。 3.2 陷阱(Trap) 程序员“故意“主动触发的异常。...可以用Linux下的time指令,去查看一个程序运行实际花费的时间,里面有在用户态花费的时间(user time),也有在内核态发生的时间 (system time)。...但是,因为“异常”和函数调用有一个很大的不同,那就是它的发生时间。函数调用的压栈操作我们在写程序的时候完全能够知道,而“异常”发生的时间却很不确定。...、键盘中断、外部设备中断等。

1.3K40
领券