浅谈ps/2键盘

news2024/12/26 20:47:30

文章目录

  • 说明
  • 基础知识
    • 操作系统中断
      • 类型
      • 工作机制
      • 优点
      • 应用
    • CPU对IO设备的轮询机制
      • 轮询机制的工作原理
      • 轮询机制的特点
      • 轮询机制的优、缺点
      • 与中断机制的对比
    • N-Key Roller(全键无冲)
      • 应用领域
      • 实现原理
      • 技术限制
  • PS/2接口简介
  • USB设备&PS/2设备的工作机制
  • PS/2键盘优&缺点
    • 系统相应级别高
    • 兼容性好
    • 支持N-Key Roller(全键无冲)
    • 安全性高
  • 不支持热插拔
  • USB键盘VSPS/2键盘

说明

  • 本文章学习自UP主 VirtualMOD 主板上保留PS/2[非原视频名称]
  • 本作者并非搬运视频的内容,而是从一个计算机相关的学习者出发,正好复习一下和计算机组成原理相关的内容,所以写下这篇文章,希望能给大家分享一些有趣的内容
  • 在此,感谢UP VirtualMOD的无私贡献

基础知识

操作系统中断

  • 操作系统中的中断是计算机硬件或软件发出的信号,它会导致中央处理单元(CPU)暂停当前正在执行的任务,转而去处理更高优先级的特定事件或条件。
  • 中断是现代计算机系统中非常关键的一个概念,它允许操作系统更有效、更实时地响应外部和内部事件

类型

中断主要分为两大类:

  1. 硬件中断(外部中断)
    • 由计算机硬件发出的信号,例如键盘输入、鼠标移动、网络数据到达等。
    • 硬件中断是由外部设备直接发送到CPU或通过中断控制器来管理的。
  2. 软件中断(内部中断)
    • 由执行中的程序指令序列产生,如系统调用或软件异常(如除零错误、访问无效内存等)。
    • 软件中断通常是程序员显式地在代码中加入的中断点或异常处理逻辑。

工作机制

当中断发生时,操作系统将执行以下步骤:

  1. 中断信号的接收:CPU接收到中断信号,当前执行的指令完成后响应该中断。
  2. 当前状态保存:操作系统保存当前任务的状态,包括程序计数器、寄存器等信息,以便中断处理完成后能恢复执行。
  3. 中断处理:CPU根据中断类型跳转到对应的中断服务程序(ISR),执行必要的操作来处理中断。
  4. 状态恢复:中断处理完毕后,操作系统恢复之前保存的任务状态,继续执行被中断的任务。

优点

  • 响应速度:中断使得CPU可以立即响应外部事件,提高系统的响应速度和效率。
  • 多任务处理:通过中断,操作系统可以在多个任务之间高效地切换,实现多任务并发执行。
  • 资源有效管理:中断驱动的输入/输出操作允许CPU在等待外部设备时执行其他任务,有效地利用系统资源。

应用

  • 实时操作系统中,中断处理是非常关键的,因为它们需要在严格的时间限制内响应外部事件。
  • 网络通信中,硬件中断用于处理到达的数据包,确保数据的及时处理。
  • 多用户环境中,中断使得操作系统能平等地分配处理器时间给不同的用户和程序。

CPU对IO设备的轮询机制

  • 在计算机系统中,轮询(Polling)是一种用于从I/O(输入/输出)设备检测状态的技术,其中CPU定期检查设备是否需要注意,如是否有数据可读取,或是否可以接受新数据进行写入。这是一种同步I/O处理方法,与基于中断的异步I/O处理形成对比。
  • 轮询机制通常由操作系统或设备驱动程序控制。

轮询机制的工作原理

  1. 轮询循环:CPU按照一定的顺序不断循环检查一组I/O设备。
  2. 设备状态检查:对于每个设备,CPU读取其状态寄存器来判断设备是否准备好进行数据传输。
  3. 数据传输:如果设备准备好,CPU将执行数据的读取或写入操作。
  4. 等待或继续:如果设备未准备好,CPU会继续轮询下一个设备,直到所有设备都被检查。

轮询机制的特点

  • 简单:轮询机制相对简单,容易实现。
  • 占用CPU资源:CPU需要不断检查各设备的状态,这会占用CPU资源,尤其是当I/O设备较多时。
  • 实时性不高:由于CPU需要依次检查每个设备,因此对于每个具体的设备来说,响应时间可能较长。
  • 适用于特定场景:轮询方式适合于I/O操作较少且预测性强的系统中,例如在嵌入式系统中常见。

轮询机制的优、缺点

优点:

  • 结构和编程简单,容易理解和实现。
  • 对于无需快速响应的设备,能够有效地工作。

缺点:

  • 效率低:在没有I/O需求时,CPU仍在不断地检查,导致处理器时间的浪费。
  • 实时性差:对于需要快速响应的I/O操作,轮询可能无法及时响应。
  • 不适宜I/O密集型应用:对于I/O密集型任务,轮询方式的CPU开销会非常大。

与中断机制的对比

中断机制下,设备在需要CPU注意时会直接发出中断请求,CPU响应中断后,暂停当前任务,转而处理I/O事件。中断机制更有效率,因为它允许CPU专注于其他任务,只有在必要时才处理I/O任务。但中断机制相比轮询在设计和实现上更复杂,需要更精细的控制和错误处理机制。

总体而言,轮询通常用于简单或对实时性要求不高的环境,而需要快速和高效响应I/O请求的环境则更倾向于使用中断机制。

N-Key Roller(全键无冲)

  • N-Key Rollover(NKRO):指键盘在同一时间可以识别并正确处理所有按键的能力。简单来说,具有N-Key Rollover功能的键盘可以在任何时候同时识别所有被按下的按键,每个按键都会被独立地发送到计算机,不会发生按键冲突或遗漏。

应用领域

  • 对于快速打字者、程序员或游戏玩家,他们可能需要同时按下多个键而不丢失任何一个按键动作。例如,在某些高速或竞技游戏中,玩家可能需要同时按下多个方向键和功能键来执行复杂的操作。

  • 游戏:玩家在游戏中可能需要快速且准确地按下多个键。

  • 打字:打字快速者不希望因为键盘限制而减慢速度或产生错误。

  • 音乐制作:在使用键盘作为MIDI控制器时,可能需要同时按下多个键来演奏和弦。

实现原理

  • NKRO通常是通过矩阵布线实现的,这种设计使得键盘中的每一个键都有一个唯一的电路,避免了“键盘幽灵”现象——这是指在多键同时按下时,键盘错误地注册了未被按下的按键。

技术限制

  • 早期的USB键盘受到USB HID标准的限制,该标准一开始只允许6个键加上修饰键(如Shift、Ctrl等)的同时按下,被称为6-Key Rollover(6KRO)。不过,现代USB键盘通过特殊技巧可以克服这一限制,提供完整的N-Key Rollover。

PS/2接口简介

在这里插入图片描述

  • PS/2接口是一种用于连接计算机键盘和鼠标的接口。接口由IBM在1987年随Personal System/2系列计算机一起推出,因此得名PS/2。该接口是对之前的DIN(Deutsches Institut für Normung,即德国国家标准化组织)连接器的改进,后者在1980年代的IBM兼容计算机上非常常见。

PS/2接口的特性包括:

  • 形状和尺寸:PS/2端口是一个小圆形连接器,通常有6个针脚并呈现迷你DIN的形式。

  • 颜色代码:为了区分键盘和鼠标的接口,经常使用颜色编码——通常键盘端口是紫色的,鼠标端口是绿色的。一半是紫色,另一半是绿色,可以兼容键盘或鼠标的连接,可以将键盘或鼠标插入同一个端口。

  • 不支持热插拔:在大多数情况下,PS/2设备不支持热插拔,这意味着在连接或断开设备时,计算机应该处于关闭状态。

  • 双向通信PS/2接口支持全双工通信,设备和主机可以同时发送和接收信号。

  • IRQ线PS/2设备每个都有专用的中断请求(IRQ)线,允许键盘和鼠标直接向CPU发送中断信号,在理论上可以提供较低的输入延迟。

  • PS/2接口在21世纪初期逐渐被USB接口所取代,原因包括USB接口的热插拔能力支持更多设备类型及其能够通过集线器扩展更多端口的能力。

  • 尽管PS/2端口在新电脑上变得不那么常见,但在需要稳定连接和较低输入延迟的场合仍然可以找到它的身影。例如,笔记本自带的键盘通常采用ps/2接口形式,下面展示的是HP 战X的笔记本键盘设备就是使用的PS/2接口

在这里插入图片描述

USB设备&PS/2设备的工作机制

  • USB设备的工作依赖于计算机的轮询机制
    在这里插入图片描述

请添加图片描述

  • 常见USB键盘工作在125HZ,就是每秒向计算机报告125次键盘状态,理论延迟在0~8ms,平均延迟为4ms

  • 鼠标工作在不同频率,如125hz、250hz、500hz、1000hz,平均延迟分别在在4ms、2ms、1ms、0.5ms
    请添加图片描述

  • PS/2协议允许键盘和鼠标中断,CPU当前的操作及发送指令,理论上PS/2的延迟为0。
    请添加图片描述

PS/2键盘优&缺点

系统相应级别高

  • 在计算机资源紧张的时候,系统可能会降低对USB设备的轮询效率,甚至完全停止轮询,导致USB设备无法被正确识别。
  • 例如:Ctrl+At+Delete的组合键通常会产生一个不可屏蔽的中断以重启系统,但在某些极端电脑死亡的情况下,系统可能不会相应USB键盘的指令,而PS/2协议拥有更高的中断优先级,使用PS/2键盘就可以解决系统不响应Ctrl+At+Delete的组合键的问题。

兼容性好

  • PS/2设备在兼容性方面具有其他优势,相比于USB设备需要加载控制器驱动,并于计算机痛信以识别设备,PS/2接口专门为键鼠设计,需要在设备开机前插入键盘,并在设备启动后立刻被识别,在缺乏对USB支持的操作系统和BIOS中,PS/2键鼠可以正常工作。

支持N-Key Roller(全键无冲)

  • PS/2设备支持真正的N-Key Roller(全键无冲),意味着可以在键盘上同时按下多的按键并且同时被系统识别。
    在这里插入图片描述
  • 常见的USB键盘最多只支持6Key甚至是2Key-Rollover。当同时按下的按键超过限制时,USB类型键盘会停止工作或失去响应。当然,USB设备可以通过在系统设备中模拟多个多个键盘,来支持N-Key Roller(全键无冲),可能的缺陷是限制其他设备的数量。
    在这里插入图片描述

安全性高

  • 使用PS/2键鼠导致windows蓝屏或死机的概率远小于使用USB设备。USB设备在连接时需要加载带有签名的驱动程序,可能带来潜在的风险,使用PS/2键鼠可以禁用所有的USB端口,防止通过USB端口进行数据读写操作。这也是政府机构普遍采用PS/2+内网组合的原因之一。

不支持热插拔

  • 不支持热插拔:在大多数情况下,PS/2设备不支持热插拔,这意味着在连接或断开PS/2设备时,计算机应该处于关闭状态。

USB键盘VSPS/2键盘

  • PS/2键盘和USB键盘的主要区别、优点和缺点:
特性PS/2键盘USB键盘
接口类型圆形的六针连接器矩形连接器
识别方式在BIOS级别工作,无需操作系统支持由操作系统动态识别
插拔方式不支持热插拔,可能需重启计算机支持热插拔
优点专用中断,低输入延迟;支持N-Key Rollover热插拔;普遍适用性高;扩展性好
缺点不支持热插拔;插槽数量有限;逐渐被淘汰可能的输入延迟;电源管理问题;共享带宽
适用性适合需要高精度和低延迟的专业应用适合日常使用和现代电脑配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1651765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XSS、CSRF、SSRF漏洞原理以及防御方式_xss csrf ssrf

这里写目录标题 XSS XSS攻击原理:XSS的防范措施主要有三个:编码、过滤、校正 CSRF CSRF攻击攻击原理及过程如下:CSRF攻击的防范措施: SSRF SSRF漏洞攻击原理以及方式SSRF漏洞攻击的防范措施 XMLXSS、CSRF、SSRF的区别 XSS、CSRF的…

MySQL mydumper工具

目录 1. mydumper介绍 2. mydumper参数解释 3. 备份例子 3.1 备份全库(未包含其他) 3.2 备份全库(包含其他) 3.3 备份指定数据库(-B或--database) 3.4 导出指定表(-T或--tables-list) 3.5 只导出表结构,不导出表数据(-d或--no-data) 3.6 只导出表数据&#…

Cloudera的简介及安装部署

简介 Cloudera是一家位于美国的软件公司,成立于2008年,专注于为企业客户提供基于Apache Hadoop的软件、支持、服务以及培训。Cloudera的开源Apache Hadoop发行版,即Cloudera Distribution including Apache Hadoop(CDH&am…

新能源汽车充电站智慧充电电能服务综合解决方案

安科瑞薛瑶瑶18701709087/17343930412 ★解决方案 ✔目的地充电-EMS微电网平台 基于EMS解决方案从设备运维的角度解决本地充电的能量管理及运维问题,与充电管理平台打通数据,为企业微电网提供源、网、荷、储、充一体化解决方案。 ✔运营场站--电能服务…

07_Flutter使用NestedScrollView+TabBarView滚动位置共享问题修复

07_Flutter使用NestedScrollViewTabBarView滚动位置共享问题修复 一.案发现场 可以看到,上图中三个列表的滑动位置共享了,滑动其中一个列表,会影响到另外两个,这显然不符合要求,先来看下布局,再说明产生这个…

深圳车间厂房降温用什么设备好?

环保水空调(也被称为水冷空调或蒸发式降温换气机组)的特点主要体现在以下几个方面: 节能环保:环保水空调使用水作为冷媒介,相比传统空调的制冷方式,它能在制冷过程中节约更多的能源,减少碳排放…

测评工作室的养号成本,效率,纯净度,便捷性等问题怎么解决?

大家好,我是南哥聊跨境,最近有很多做测评工作室的朋友找到南哥,问我有什么新的测评养号系统可以解决成本,效率,纯净度,便捷性等问题 测评养号系统从最早的模拟器、虚拟机到911、VPS、手机设备等&#xff0…

革新品质检测,质构科技重塑肉类行业新篇章

革新品质检测,质构科技重塑肉类行业新篇章 在现代社会,消费者对食品安全和品质的要求日益提升,特别是在肉类行业。为了满足这一市场需求,质构科技凭借其精准、高效的优势,正逐渐成为肉类品质检测的新星。今天&#xf…

Rust开发工具有哪些?

目录 一、JetBrains公司的RustRover​编辑 二、微软公司的Visual Studio Code 三、Rust编译工具 一、JetBrains公司的RustRover RustRover是由JetBrains开发的一款专为Rust开发量身定制的新兴IDE,目前还处于早期访问阶段。它支持Rust、Cargo、TOML、Web和数据库等…

Leecode42:接雨水

第一反应是按照高低这个思路来求解,因为可以把盛雨水的容器想成是从左往右的,遇到一个沟就存一点雨水。 这个思路 看了下题解,发现自己的思路其实没问题,确实是按照最高最低来求,但是这个地方太复杂了求的&#xff0c…

计算机毕业设计 | springboot+vue小米商城 购物网站管理系统(源码+论文+讲解视频)

1,项目背景 国家大力推进信息化建设的大背景下,城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区,商业和服务业也比较发达,公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…

API接口调用失败的常见原因?如何进行排查和处理?

API接口调用失败的常见原因有以下几种: 1. 无效的请求参数:可能是由于请求参数缺失、格式错误或者不符合接口要求导致的。解决方法是检查请求参数是否正确,并确保按照接口文档提供正确的参数。 2. 接口权限不足:有些接口需要特定…

互联网产品为什么要搭建会员体系?

李诞曾经说过一句话:每个人都可以讲5分钟脱口秀。这句话换到会员体系里面同样适用,每个人都能聊点会员体系相关的东西。 比如会员体系属于用户运营的范畴,比如怎样用户分层,比如用户标签及CDP、会员积分、会员等级、会员权益和付…

【go从入门到精通】go命令使用

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢…

用一个故事告诉你协程到底是什么

神秘使者 “久闻Java语言跨越平台,框架众多,不过二十年功夫,就已晋升天下第一编程语言,今日一见,果然名不虚传呐!” “使者先生您过奖了,咱们快些走,国王陛下已经等候多时了” 今…

自动化机器学习——贝叶斯优化

自动化机器学习——贝叶斯优化 贝叶斯优化是一种通过贝叶斯公式推断出目标函数的后验概率分布,从而在优化过程中不断地利用已有信息来寻找最优解的方法。在贝叶斯优化中,有两个关键步骤:统一建模和获得函数的优化。 1. 统一建模 在贝叶斯优…

孩子用什么样的灯对眼睛没有伤害?分享多款满分护眼台灯

为人父母以后,深感压力山大。如今不仅要抓孩子的学习,还得时刻关注孩子的身心健康,尤其是视力问题。现在不少学生都存在近视的现象,而导致这一现象的主要原因,除了平时的学业压力过大以外,夜晚学习的光线也…

美港通正规炒股市场恒生科指半日跌近2% 大型科技股集体下行

查查配5月7日电 7日,港股主要股指回调。截至午盘,恒生指数跌0.85%,恒生科技指数跌1.98%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投资体验。 来源:Wind 盘面上,零售、软…

用C#打造精美系统托盘消息提醒,让你的应用更具魅力

使用效果: 代码: #region 消息框变量private Timer fadeTimer; // 定义计时器private int fadeSpeed 2;//淡出速度private NotifyIcon notifyIcon;//气泡通知private int opacityLevel 10;//不透明度public enum NotificationType{Error,//错误Warning…

Golang | Leetcode Golang题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; func minWindow(s string, t string) string {ori, cnt : map[byte]int{}, map[byte]int{}for i : 0; i < len(t); i {ori[t[i]]}sLen : len(s)len : math.MaxInt32ansL, ansR : -1, -1check : func() bool {for k, v : range ori {if c…