终端设备的控制
参考至
原文链接:https://blog.csdn.net/qq_41708792/article/details/91040147
实验目的
- 加深对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念;
- 通过实践掌握 Linux 0.11 对键盘终端和显示器终端的处理过程。
实验内容
本实验的基本内容是修改 Linux 0.11 的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。
在初始状态,一切如常。用户按一次 F12 后,把应用程序向终端输出所有字母都替换为“*”。用户再按一次 F12,又恢复正常。第三次按 F12,再进行输出替换。依此类推。
实现思路
我们先简单介绍一下操作系统是如何使键盘工作的
键盘作为一个写入设备,键盘的每一次敲击就是一次中断,中断号为0x21
,当键盘引起中断后,调用keyboard_interrupt
函数,在该函数中,操作系统会根据扫描码(键盘的按键)从key_table中找到对应的处理函数,处理函数会找到键盘按键对应的ASCLL码,然后将其放入read_q
队列中,等待CPU读取,详细的代码可以看这篇博客CPU如何读取键盘传过来的数据
在这个例子中,F12
按键的对应函数就是func
,我们要做的就是修改这个func
函数<