实验日期:2022年6月2日
班级:软嵌201
姓名:王威
学号:2030110750
1.加深对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念;
2.通过实践掌握 Linux 0.11 对键盘终端和显示器终端的处理过程。
硬件环境是 IA-32(x86) 架构的 PC 机(在实验楼的环境中就是右侧的窗口),主要软件环境是 Bochs + gcc + 你最喜欢的编辑器 / IDE + 你最喜欢的操作系统 + Linux 0.11 源代码
修改 Linux 0.11 的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。
在初始状态,一切如常。用户按一次 F12 后,把应用程序向终端输出所有字母都替换为“*”。用户再按一次 F12,又恢复正常。第三次按 F12,再进行输出替换。依此类推。
1.准备实验环境
tar -zxvf hit-oslab-linux-20110823.tar.gz
-C /home/shiyanlou/
2.把func函数(kernel/chr_drv/keyboard.S)中那条指令call show_stat注释掉
3.修改copy_to_cooked函数(kernel/chr_drv/tty_io.c)
4.在con_write()函数(kernel/chr_drv/console.c)中添加判断语句
##五.实验结果分析
基本符合实验要求
1.在原始代码中,按下 F12,中断响应后,中断服务程序会调用 func?它实现的是什么功能?
正常情况下打开模拟器中,按下功能键F12即可显示内核栈中各个进程的状态信息,而当把func中的call show_stat屏蔽掉后,再按下F12就什么也没有了,可见func实现的功能就是调用show_stat函数来显示内核栈中各个进程的状态信息。
2.在你的实现中,是否把向文件输出的字符也过滤了?如果是,那么怎么能只过滤向终端输出的字符?如果不是,那么怎么能把向文件输出的字符也一并进行过滤?
没有把向文件输出的字符过滤,只过滤向终端输出的字符是通过con_write函数的修改来实现的。过滤向文件输出的字符则通过修改file_write函数来实现。
这次实验比前几个实验要稍稍简单一些,只要能静下心来梳理其中逻辑结构,再结合自己网上学习,分析,最终可以完成实验。
学习时间 171分钟
操作时间 30分钟
按键次数 178次
实验次数 5次
报告字数 1595字
是否完成 完成