当前位置: 首页 > news >正文

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作:

1.当按下任意一个键时,键盘编码器监控会来判断按下的键是哪个

2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面

3.此时发送一个中断请求给中断控制器,中断控制器获取到中断号发送给CPU

4.cpu通过中断向量表(在操作系统初始化形成)来找到键盘服务程序的内存地址,此时cpu的程序计数器直接跳转到键盘中断程序。

5.在进行新程序时需要保存上个程序寄存器的一些值,以便于下次继续进行以前的操作

6.键盘中断服务程序一定存在于操作系统程序中,因为会进行in或者out等内核操作。

7.IN EAX  0x03FA    将0x03FA对应的键盘控制器的寄存器的值读取到CPU的 EAX中, OUT   0x06B1    EAX  将EAX的值写到显示控制器中0X06B1对应的寄存器中从而显示到屏幕上。

 当打印完后需要响应一次中断,之后CPU还需要将内存的打印字符再送到打印机的寄存器中,会极大浪费cpu的开销。此时加入一个DMA机制来缓解CPU的的开销,将数据移动的任务交给DMA,只需要在所有打印任务完成之后触发一次中断,最后恢复应用程序1的后续操作即可。如下两图

 

 

相关文章:

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作: 1.当按下任意一个键时,键盘编码器监控会来判断按下的键是哪个 2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面 3.此时发送一个中断请求给中断控制器,中断控制器获取到中断号发送…...

Spring Boot 接口访问频率限制的实现详解

目录 概述为什么需要接口访问频率限制常见的实现方式 基于过滤器的实现基于拦截器的实现基于第三方库Bucket4j的实现 实际代码示例 基于过滤器实现Rate Limiting基于拦截器实现Rate Limiting使用Bucket4j实现Rate Limiting 最佳实践 选择合适的限流算法优化性能记录日志和监控…...

前端页面:用户交互持续时间跟踪(duration)user-interaction-tracker

引言 在用户至上的时代,精准把握用户行为已成为产品优化的关键。本文将详细介绍 user-interaction-tracker 库,它提供了一种高效的解决方案,用于跟踪用户交互的持续时间,并提升项目埋点的效率。通过本文,你将了解到如…...

中文分词库 jieba 详细使用方法与案例演示

1 前言 jieba 是一个非常流行的中文分词库,具有高效、准确分词的效果。 它支持3种分词模式: 精确模式全模式搜索引擎模式 jieba0.42.1测试环境:python3.10.9 2 三种模式 2.1 精确模式 适应场景:文本分析。 功能&#xff1…...

EXO-helper解释

目录 helper解释 helper解释 在Python中,字符串 "\033[93m" 是一个ANSI转义序列,用于在支持ANSI转义码的终端或控制台中改变文本的颜色。具体来说,\033[93m 用于将文本颜色设置为亮黄色(或浅黄色,具体取决于终端的显示设置)。 这里的 \033 实际上是八进制的 …...

Qt开发网络嗅探器01

引言 随着互联网的快速发展和普及,人们对网络性能、安全和管理的需求日益增长。在复杂的网络环境中,了解和监控网络中的数据流量、安全事件和性能问题变得至关重要。为了满足这些需求,网络嗅探器作为一种重要的工具被 广泛应用。网络嗅探器是…...

mysql面试(三)

MVCC机制 MVCC(Multi-Version Concurrency Control) 即多版本并发控制,了解mvcc机制,需要了解如下这些概念 事务id 事务每次开启时,都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后…...

阿里云公共DNS免费版自9月30日开始限速 企业或商业场景需使用付费版

本周阿里云发布公告对公共 DNS 免费版使用政策进行调整,免费版将从 2024 年 9 月 30 日开始按照请求源 IP 进行并发数限制,单个 IP 的请求数超过 20QPS、UDP/TCP 流量超过 2000bps 将触发限速策略。 阿里云称免费版的并发数限制并非采用固定的阈值&…...

捷配生产笔记-一文搞懂阻焊层基本知识

什么是阻焊层? 阻焊层(也称为阻焊剂)是应用于PCB表面的一层薄薄的聚合物材料。其目的是保护铜电路,防止焊料在焊接过程中流入不需要焊接的区域。除焊盘外,整个电路板都涂有阻焊层。 阻焊层应用于 PCB 的顶部和底部。树…...

html 常用css样式及排布问题

1.常用样式 <style>.cy{width: 20%;height: 50px;font-size: 30px;border: #20c997 solid 3px;float: left;color: #00cc00;font-family: 黑体;font-weight: bold;padding: 10px;margin: 10px;}</style> ①宽度&#xff08;长&#xff09; ②高度&#xff08;宽&a…...

【SpingCloud】客户端与服务端负载均衡机制,微服务负载均衡NacosLoadBalancer, 拓展:OSI七层网络模型

客户端与服务端负载均衡机制 可能有第一次听说集群和负载均衡&#xff0c;所以呢&#xff0c;我们先来做一个介绍&#xff0c;然后再聊服务端与客户端的负载均衡区别。 集群与负载均衡 负载均衡是基于集群的&#xff0c;如果没有集群&#xff0c;则没有负载均衡这一个说法。 …...

【Elasticsearch】Elasticsearch 中的节点角色

Elasticsearch 中的节点角色 1.主节点&#xff08;master&#xff09;1.1 专用候选主节点&#xff08;dedicated master-eligible node&#xff09;1.2 仅投票主节点&#xff08;voting-only master-eligible node&#xff09; 2.数据节点&#xff08;data&#xff09;2.1 内容…...

pip install与apt install区别

pipapt/apt-get安装源PyPI 的 python所有依赖的包软件、更新源、ubuntu的依赖包 1 查看pip install 安装的数据包 命令 pip list 2 查看安装包位置 pip show package_name参考 https://blog.csdn.net/nebula1008/article/details/120042766...

分表分库是一种数据库架构的优化策略,用于处理大规模数据和高并发请求,提高数据库的性能和可扩展性。

分表分库是一种数据库架构的优化策略&#xff0c;用于处理大规模数据和高并发请求&#xff0c;提高数据库的性能和可扩展性。以下是一些常见的分表分库技术方案&#xff1a; 1. **水平分表&#xff08;Horizontal Sharding&#xff09;**&#xff1a; - 将单表数据根据某个…...

【ffmpeg命令入门】获取音视频信息

文章目录 前言使用ffmpeg获取简单的音视频信息输入文件信息文件元数据视频流信息音频流信息 使用ffprobe获取更详细的音视频信息输入文件信息文件元数据视频流信息音频流信息 总结 前言 在处理多媒体文件时&#xff0c;了解文件的详细信息对于调试和优化处理过程至关重要。FFm…...

【IoTDB 线上小课 05】时序数据文件 TsFile 三问“解密”!

【IoTDB 视频小课】持续更新&#xff01;第五期来啦~ 关于 IoTDB&#xff0c;关于物联网&#xff0c;关于时序数据库&#xff0c;关于开源... 一个问题重点&#xff0c;3-5 分钟详细展开&#xff0c;为大家清晰解惑&#xff1a; IoTDB 的 TsFile 科普&#xff01; 了解了时序数…...

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲人两行泪 获取b站的章若楠的视频 一、话不多说&#xff0c;先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条&#xff0c;安全第一条 爬…...

C# yaml 配置文件的用法(一)

目录 一、简介 二、yaml 的符号 1.冒号 2.短横杆 3.文档分隔符 4.保留换行符 5.注释 6.锚点 7.NULL值 8.合并 一、简介 YAML&#xff08;YAML Aint Markup Language&#xff09;是一种数据序列化标准&#xff0c;广泛用于配置文件、数据交换和存储。YAML的设计目标是…...

人工智能与机器学习原理精解【4】

文章目录 马尔科夫过程论要点理论基础σ代数定义性质应用例子总结 马尔可夫过程概述一、马尔可夫过程的原理二、马尔可夫过程的算法过程三、具体例子 马尔可夫链的状态转移概率矩阵一、确定马尔可夫链的状态空间二、收集状态转移数据三、计算转移频率四、构建状态转移概率矩阵示…...

Go channel实现原理详解(源码解读)

文章目录 Go channel详解Channel 的发展Channel 的应用场景Channel 基本用法Channel 的实现原理chan 数据结构初始化sendrecvclose使用 Channel 容易犯的错误总结Go channel详解 Channel 是 Go 语言内建的 first-class 类型,也是 Go 语言与众不同的特性之一。Channel 让并发消…...

第1章:AI Agent认知与全景图

本章你将收获:AI Agent的核心概念与演变历程;主流框架(LangChain、AutoGPT、CrewAI)的深度对比与选型指南;5个真实Agent应用案例的拆解;一套评估项目是否需要引入Agent的决策方法论;以及可运行的Agent代码示例(含免费API)。 📌 本章导读 2024年以来,“AI Agent”成…...

基于树莓派A+与3.5寸PiTFT打造便携式触摸屏设备全攻略

1. 项目概述与核心价值如果你和我一样&#xff0c;对嵌入式开发和硬件DIY有浓厚的兴趣&#xff0c;那么将一块功能强大的单板计算机&#xff08;比如树莓派&#xff09;变成一个可以揣在口袋里、随时掏出来就能用的便携式触摸屏设备&#xff0c;绝对是一个充满成就感的项目。这…...

程序员录音转行动项工具口碑推荐 | 经筛选的实用方案

针对2026年程序员群体的录音转行动项需求&#xff0c;实测多款主流工具后&#xff0c;筛选出实用方案&#xff0c;可有效解决需求对接、会议访谈后&#xff0c;录音整理、任务提取耗时久、准确率不佳的痛点。本次评测选取多款主流办公类录音转写工具&#xff0c;围绕程序员核心…...

NotebookLM多源文档交叉去重实战:基于BERT-Embedding相似度阈值调优(附可复用Python脚本)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM多源文档交叉去重的核心挑战与价值定位 NotebookLM 作为 Google 推出的基于引用的 AI 笔记工具&#xff0c;其核心能力依赖于对用户上传文档的语义理解与跨文档关联。然而当用户导入多个来源…...

为开发者工具注入情感分析能力:开源库ai-devtools-sentiment实战指南

1. 项目概述&#xff1a;一个为开发者工具注入情感分析能力的开源库最近在折腾一些开发者工具&#xff0c;比如代码审查机器人、文档生成器或者IDE插件&#xff0c;我总感觉它们冷冰冰的。它们能告诉你代码有语法错误&#xff0c;能提示你某个API已废弃&#xff0c;但它们无法感…...

从8251A芯片实战出发:手把手教你用8086汇编完成串口通信初始化编程

从8251A芯片实战出发&#xff1a;手把手教你用8086汇编完成串口通信初始化编程 在嵌入式系统与硬件接口开发领域&#xff0c;掌握串口通信编程是工程师的必修技能。8251A作为经典的通用同步/异步收发器(USART)芯片&#xff0c;至今仍在教学和工业控制领域广泛应用。本文将带您从…...

欧美客户下最后通牒:2026年起没有Sedex,订单再多也出不了货!

各位外贸老板、工厂负责人注意了&#xff01;2026年&#xff0c;全球供应链的ESG合规风暴已经进入下半场。如果你还在做纺织品、家具、电子、玩具出口&#xff0c;还没搞懂Sedex和SMETA新政&#xff0c;很可能随时被踢出欧美客户的供应商名录&#xff01;没有这块“敲门砖”&am…...

企业智能体如何高效快速部署落地,这N个细节需要注意

随着企业级智能体技术的日趋成熟&#xff0c;越来越多企业将其作为数字化转型的重要抓手&#xff0c;期望通过智能体提升业务效率、降低运营成本。但现实中&#xff0c;多数企业陷入“部署慢、落地难、效果差”的困境&#xff1a;有的耗时数月仍无法正常上线&#xff0c;有的上…...

构建智能家居自动化桥梁:基于Webhook与事件驱动的跨平台集成实战

1. 项目概述与核心价值最近在折腾智能家居和自动化流程&#xff0c;发现很多朋友都卡在了一个看似简单却非常关键的环节上&#xff1a;如何让不同的智能设备或软件服务之间“说上话”。比如&#xff0c;你希望家里的智能音箱在收到指令后&#xff0c;不仅能控制灯光&#xff0c…...

数据投毒太多,尝试把资料搬进本地知识库

说实话&#xff0c;这几天没睡好。上周翻到一个新闻&#xff0c;看得我后背发凉——谷歌首次发现攻击者用AI开发“零日漏洞”攻击工具。不是概念验证&#xff0c;是真实案例。攻击者拿AI绕过双重认证&#xff0c;代码写得跟教科书似的&#xff0c;还带“幻觉”出来的CVSS评分。…...