- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编写操作系统之【荐】.pdf
编写操作系统之
键盘交互的实现
Version 0.01
谢煜波
xieyubo@
总述
一个操作系统必需要具有交互性。所谓交互性就是指人与计算机之间的一种交流,有
两种最基本的交互设备,一是显示器,一是键盘。显示器是计算机用来与人进行交流的,计
算机通过显示器来告诉人一些信息,而键盘是人用来与计算机进行交流的,人通过键盘将命
令发送给计算机,计算机接受人通过键盘发来的命令,然后进行处理,最后将处理的结果通
过显示器告诉人,这样就完成了一次最简单最基本的交互。在本篇中,笔才将从一个编写操
作系统的角度去描述操作系统应当怎样处理键盘,让人可以通过键盘与计算机进行交互。在
本篇中,我们同样将以 pyos 做为我们的实验平台,在 pyos 上实验操作系统对键盘的控制,
为了进行本次实验,笔者专门编写了一人非常简单的“推箱子”游戏,当 pyos 启动后,你
可以输入“game (回车)”命令,然后系统就会调入这个游戏,这时,你可以通过上下左右
四个方向键进行游戏,游戏结束后,按“ESC ”键,可以返回系统内核。所有的这一切你都
会从本篇中了解到去怎样实现它。
在本篇中,pyos 实现了类似 windows 的一个消息系统,换句话说,此处的pyos 是由消
息驱动的,如果你能 windows 的消息驱动很好奇,但又不知它是怎样实现的,那么,本篇
中所介绍的pyos 的消息驱动或许能对你理解windows 的消息戏动有些许帮助:)
本篇与前几篇实验报告是一脉相承的,特别是同《保护模式下中断编程》一篇有较为
紧密的相关性,你可以在我的主页上( )找到它们,上面的内容对理解本
篇会具有较大帮助。
在 pyos 的编写过程中,得到了许多朋友的大力支持与帮助,中国安天实验室的张栗炜
老师指出了 pyos 中存在的一些问题,并给出了怎样完全在 windows 环境下进行 pyos 开发的
方法,哈尔滨工业大学的 kylix ,sun 为本实现中曾经出现的奇怪现象提出了非常好的意见,
极大的扩展了笔者的思路及眼界,pineapple ,lizhenguo 为本实验的调试花费了许多精力……
还有许多朋友给我发来电子邮件及在 QQ 上留言,帮助并支持笔者进行实验,无法一一列举,
仅在此对上述关心 pyos 的朋友致以最真诚的谢意与问候!
Ok,言归正传,下面就让我们开始我们的实验,Let’s Go!~~
键盘驱动简介
CPU 对外部设备的管理是通过中断程序进行的,键盘也是一种外部设备,因此,CPU
对键盘的管理也是通过中断进行的。当你击打键盘的时候,键盘控制器会向 CPU 提出中断
申请,CPU 响应此中断进行处理,这就完成了一次很简单与人之间通过键盘进行的交互。
有关键盘的很详情的硬件控制说明,大家可以在纯 C 论坛上找到一篇名为《PS/2 键盘
控制》的文章,这篇文章里非常详细描述了有关键盘的硬件控制。由于本文旨在从操作系统
的角度描述操作系统怎样通过键盘与人进行交互,因此,并不打算详细而完整的描述对键盘
控制器的控制方法,如果你想了解对键盘的更多控制细节,比如设定键盘响应时间,重复键
频率,键盘自检等,你会在《PS/2 键盘控制》中找到所有的内容。这里,仅就 pyos 所用到
的一些细节进行简单的介绍,因为,pyos 是一个很简单的系统。☺
从上面的描述中我们可以看到,键盘有许多属性比如说响应时间,重复频率等需要进
行设置,不过比较幸运的是,在计算机被引导后,BIOS 已经将这一切为我们做好了,如果
你不需要很特别的应用,使用 BIOS 为我们设定的默认值对于 pyos 这样的系统来说是足够
了,因此,我很乐意在这里将BIOS 进行的设置称之为键盘初始化,由于 BIOS 的运行是在
操作系统运行之前进行的,因此,当操作系统被调入内存并运行时键盘已经完成了初始化,
这个时候键盘就处于等待用户输入的状态。在前面几篇中我们知道,键盘中断是连结在计算
机内部 8259A 中断控制器的IRQ1 号线上,当有按键发生时键盘控制器将会在 IRQ1 号线上
送出中断信号,8259A 中断控制器将此中断信号与其它外部设备通过其余的 IRQ 线送来的
中断信号进行判优、
文档评论(0)