欢迎来到天天文库
浏览记录
ID:34069374
大小:242.98 KB
页数:11页
时间:2019-03-03
《编写操作系统之》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编写操作系统之键盘交互的实现Version0.01谢煜波xieyubo@gmail.com总述一个操作系统必需要具有交互性。所谓交互性就是指人与计算机之间的一种交流,有两种最基本的交互设备,一是显示器,一是键盘。显示器是计算机用来与人进行交流的,计算机通过显示器来告诉人一些信息,而键盘是人用来与计算机进行交流的,人通过键盘将命令发送给计算机,计算机接受人通过键盘发来的命令,然后进行处理,最后将处理的结果通过显示器告诉人,这样就完成了一次最简单最基本的交互。在本篇中,笔才将从一个编写操作系统的角度去描述操作系统应当怎
2、样处理键盘,让人可以通过键盘与计算机进行交互。在本篇中,我们同样将以pyos做为我们的实验平台,在pyos上实验操作系统对键盘的控制,为了进行本次实验,笔者专门编写了一人非常简单的“推箱子”游戏,当pyos启动后,你可以输入“game(回车)”命令,然后系统就会调入这个游戏,这时,你可以通过上下左右四个方向键进行游戏,游戏结束后,按“ESC”键,可以返回系统内核。所有的这一切你都会从本篇中了解到去怎样实现它。在本篇中,pyos实现了类似windows的一个消息系统,换句话说,此处的pyos是由消息驱动的,如果你能w
3、indows的消息驱动很好奇,但又不知它是怎样实现的,那么,本篇中所介绍的pyos的消息驱动或许能对你理解windows的消息戏动有些许帮助:)本篇与前几篇实验报告是一脉相承的,特别是同《保护模式下中断编程》一篇有较为紧密的相关性,你可以在我的主页上(http://xieyubo.com)找到它们,上面的内容对理解本篇会具有较大帮助。在pyos的编写过程中,得到了许多朋友的大力支持与帮助,中国安天实验室的张栗炜老师指出了pyos中存在的一些问题,并给出了怎样完全在windows环境下进行pyos开发的方法,哈尔滨工
4、业大学的kylix,sun为本实现中曾经出现的奇怪现象提出了非常好的意见,极大的扩展了笔者的思路及眼界,pineapple,lizhenguo为本实验的调试花费了许多精力……还有许多朋友给我发来电子邮件及在QQ上留言,帮助并支持笔者进行实验,无法一一列举,仅在此对上述关心pyos的朋友致以最真诚的谢意与问候!Ok,言归正传,下面就让我们开始我们的实验,Let’sGo!~~键盘驱动简介CPU对外部设备的管理是通过中断程序进行的,键盘也是一种外部设备,因此,CPU对键盘的管理也是通过中断进行的。当你击打键盘的时候,键盘
5、控制器会向CPU提出中断申请,CPU响应此中断进行处理,这就完成了一次很简单与人之间通过键盘进行的交互。有关键盘的很详情的硬件控制说明,大家可以在纯C论坛上找到一篇名为《PS/2键盘控制》的文章,这篇文章里非常详细描述了有关键盘的硬件控制。由于本文旨在从操作系统的角度描述操作系统怎样通过键盘与人进行交互,因此,并不打算详细而完整的描述对键盘控制器的控制方法,如果你想了解对键盘的更多控制细节,比如设定键盘响应时间,重复键频率,键盘自检等,你会在《PS/2键盘控制》中找到所有的内容。这里,仅就pyos所用到的一些细节进
6、行简单的介绍,因为,pyos是一个很简单的系统。☺从上面的描述中我们可以看到,键盘有许多属性比如说响应时间,重复频率等需要进行设置,不过比较幸运的是,在计算机被引导后,BIOS已经将这一切为我们做好了,如果你不需要很特别的应用,使用BIOS为我们设定的默认值对于pyos这样的系统来说是足够了,因此,我很乐意在这里将BIOS进行的设置称之为键盘初始化,由于BIOS的运行是在操作系统运行之前进行的,因此,当操作系统被调入内存并运行时键盘已经完成了初始化,这个时候键盘就处于等待用户输入的状态。在前面几篇中我们知道,键盘中
7、断是连结在计算机内部8259A中断控制器的IRQ1号线上,当有按键发生时键盘控制器将会在IRQ1号线上送出中断信号,8259A中断控制器将此中断信号与其它外部设备通过其余的IRQ线送来的中断信号进行判优、排队,最后,将此信息送给CPU。CPU在一条指令运行结束后,会查询一下是否有中断信号送来,如果此时发现有中断信号送来,就会通过此中断信号的中断向量在中断描述符表中查询应当使用哪一个中断处理程序。当找到中断处理程序后,CPU将调用此中断处理程序进行中断处理,完成中断处理后,CPU再返回到原来被中断的程序处继续执行。有
8、关8259A的初始化,中断向量及中断向量表的初始化的问题在上一篇实验报告〈〈保护模式下的8259A芯片编程及中断处理探究〉〉中已经详细描述过了,这里就不在多费口舌了。现在我们只需要知道,CPU通过8259A发送来的键盘中断的中断向量号,在中断向量表中调入了键盘中断程序进行键盘中断的处理。下面我们将集中精力,来看看键盘中断程序到底都完成了些什么事情。键盘中断程
此文档下载收益归作者所有