浅谈ps/2键盘

devtools/2024/9/20 1:32:19/ 标签: 计算机外设

文章目录

  • 说明
  • 基础知识
    • 操作系统中断
      • 类型
      • 工作机制
      • 优点
      • 应用
    • 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.ppmy.cn/devtools/32914.html

相关文章

【强训笔记】day8

NO.3 思路&#xff1a;相乘除以最大公约数等于最小公倍数。最小公倍数等于gcd&#xff08;a&#xff0c;a%b&#xff09;递归直到b等于0。 代码实现&#xff1a; #include <iostream> using namespace std;int gcd(int a,int b) {if(b0) return a;return gcd(b,a%b); }…

深入学习Redis(1):Redis内存模型

Redis的五个对象类型 字符串&#xff0c;哈希&#xff0c;列表&#xff0c;集合&#xff0c;有序集合 本节有关redis的内存模型 1.估算redis的内存使用情况 目前内存的价格比较的高&#xff0c;如果对于redis的内存使用情况能够进行计算&#xff0c;就可以选用合适的设备进…

组合总和2(力扣40)

解题思路&#xff1a;因为这里不能有重复的组合&#xff0c;所以采取用下表used来判断其是否在前面出现过&#xff0c;如果出现过就直接跳过&#xff0c;同时判断是树层重复还是树枝重复&#xff0c;如果是树枝重复就不用跳过 具体代码如下&#xff1a; class Solution { pu…

Leetcode—1056. 易混淆数【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—1056. 易混淆数 &#x1f4a9;山实现代码 class Solution { public:bool confusingNumber(int n) {int arr[10] {0};int notNum 0;int arr2[12] {0};int size 0;while(n) {int x n % 10;arr[x] 1;arr2[size] x;if(…

【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数

力扣对应题目链接&#xff1a;LCR 135. 报数 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;打印从1到最大的n位数_牛客题霸_牛客网 (nowcoder.com) 一、《剑指Offer》内容 二、分析题目 1、暴力解法 2、用字符串模拟数字加法 首先要考虑当 n 很大时&…

IoTDB 入门教程 基础篇⑦——数据库管理工具 | DBeaver 连接 IoTDB

文章目录 一、前文二、下载iotdb-jdbc三、安装DBeaver3.1 DBeaver 下载3.2 DBeaver 安装 四、安装驱动五、连接数据库六、参考 一、前文 IoTDB入门教程——导读 二、下载iotdb-jdbc 下载地址org/apache/iotdb/iotdb-jdbc&#xff1a;https://maven.proxy.ustclug.org/maven2/o…

【数学建模】矩阵微分方程

一、说明 我相信你们中的许多人都熟悉微分方程&#xff0c;或者至少知道它们。微分方程是数学中最重要的概念之一&#xff0c;也许最著名的微分方程是布莱克-斯科尔斯方程&#xff0c;它控制着任何股票价格。 ​​ 股票价格的布莱克-斯科尔斯模型 微分方程可以由数学中的许多…

MyBatisPlus @TableLogic实现全局自动逻辑删除

一、背景 有一天&#xff0c;小王在编写代码时实现了一个删除操作&#xff0c;但由于测试场景覆盖不全&#xff0c;上线后不慎删除了系统中的部分业务数据。幸运的是&#xff0c;系统已经开启了binlog日志功能&#xff0c;使得我们能够根据日志来恢复这些误删的数据。这一事故…

关于测试用例

目录 一 测试用例介绍 二 写用例的好处 三 不适合写用例的情况 一 测试用例介绍 测试用例由测试来写&#xff0c;编写时间在需求评审和设计评审&#xff08;如有&#xff09;结束后&#xff0c;需求提测前&#xff0c;用例依赖需求文档来编写。一般包含用例标题&#xff0c…

算法提高之二维费用的背包问题

算法提高之二维费用的背包问题 核心思想&#xff1a;二维01背包 每个物品只能用一次 所以是01背包模板用f[j][k] 表示第一维费用不超过V 第二维费用不超过M的方案 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const i…

OneFlow深度学习框原理、用法、案例和注意事项

本文将基于OneFlow深度学习框架&#xff0c;详细介绍其原理、用法、案例和注意事项。OneFlow是由中科院计算所自动化研究所推出的深度学习框架&#xff0c;专注于高效、易用和扩展性强。它提供了一种类似于深度学习库的接口&#xff0c;可以用于构建神经网络模型&#xff0c;并…

R和Python市场篮分析算法及行为分析模型

&#x1f3af;要点 行为数据分析&#xff1a;&#x1f3af;线性统计研究生学业表现&#xff1a;&#x1f58a;绘制测试分数配对图 | &#x1f58a;构建简单线性回归模型&#xff0c;拟合数据 | &#x1f58a;构建多线性回归&#xff0c;三维可视化数据拟合模型 | &#x1f58a…

前端 JS 异常那些事

前言 人无完人&#xff0c;所以代码总会出异常的&#xff0c;异常并不可怕&#xff0c;关键是怎么处理 什么是异常 程序发生了意想不到的情况&#xff0c;影响到了程序的正确运行 从根本上来说&#xff0c;异常就是一个普通的对象&#xff0c;其保存了异常发生的相关信息&a…

《Maven》linux中安装maven并配置环境变量

阿丹&#xff1a; 很多项目需要在服务器上使用maven来打包&#xff0c;这里就需要使用配置maven来进行运行指令&#xff0c;本文章来快速的安装和配置一下这个Maven并且来完成环境变量的配置。 步骤 1: 安装Maven 在Linux系统上安装Maven: 如果你使用的是基于Debian的系统&a…

Codeforces Round 942 (Div. 2) (A-D2)C++题解

链接 : Dashboard - Codeforces Round 942 (Div. 2) - Codeforces A. Contest Proposal 数据范围小&#xff0c;模拟就好了; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n #define int long long typedef l…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术&#xff0c;并与sql server 2000数据库相结合&#xff0c;研发了一套车辆档案管理系统。该系统扩展性好&#xff0c;易于维护。简化了车辆档案设计流程&#xff0c;去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…

【Python】 逻辑回归:从训练到预测的完整案例

我把我唱给你听 把你纯真无邪的笑容给我吧 我们应该有快乐的 幸福的晴朗的时光 我把我唱给你听 用我炙热的感情感动你好吗 岁月是值得怀念的留恋的 害羞的红色脸庞 谁能够代替你呀 趁年轻尽情的爱吧 最最亲爱的人啊 路途遥远我们在一起吧 &#x1f3b5; 叶…

Redis 相关问题总结

Redis 相关问题 Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些&#xff1f; 单线程的redis为什么这么快 redis的数据类型&#xff0c;以及每种数据类型的使用场景&#xff0c;Redis 内…

Git推送本地项目到gitee远程仓库

Git 是一个功能强大的分布式版本控制系统&#xff0c;它允许多人协作开发项目&#xff0c;同时有效管理代码的历史版本。开发者可以克隆一个公共仓库到本地&#xff0c;进行更改后将更新推送回服务器&#xff0c;或从服务器拉取他人更改&#xff0c;实现代码的同步和版本控制。…

力扣39(组合总和)

解题思路&#xff1a;没有什么特殊的&#xff0c;按照递归三部曲确定返回值与参数&#xff0c;确定终止条件&#xff0c;确定单层循环的逻辑就可以解出来 代码实现&#xff1a; class Solution { public: vector<vector<int>>result; vector<int>path; vo…