实验名称:终端设备的控制
实验日期:2021.7.6
班级:软嵌192
姓名:贾梦娇
学号:1930110798
一、实验目的
二、实验环境
本操作系统实验的硬件环境是IA-32(x86)架构的PC机(在实验楼的环境中就是右边的窗口)。
主要软件环境是Bochs + gcc +编辑器/ IDE +操作系统+ Linux 0.11源代码。
三、实验内容
本实验的基本内容是修改 Linux 0.11 的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。
在初始状态,一切如常。用户按一次 F12 后,把应用程序向终端输出所有字母都替换为“*”。用户再按一次 F12,又恢复正常。第三次按 F12,再进行输出替换。依此类推。
四、实验过程及数据记录
环境准备:
cd ~/oslab
tar -zxvf hit-oslab-linux-20110823.tar.gz -C /home/shiyanlou
copy
在/kernel/chr_drv/keyboard.S中,删除call show_state.原代码中,F12用来显示进程信息,现在我们按下F12不需要该功能,注释掉。
修改kernel/chr_drv/tty_io.c文件,该文件中的copy_to_cooked函数是处理ASCII字符的函数。先在该函数的定义外面增加全局变量如下,flag即开关标志,f1~f3是等会判断要用到的一些中间变量。修改处如图所示:
为了实现按下F12键,文字变为“”的功能,我们修改/kernel/chr_drv/console.c中的con_write()函数,添加if语句,注意添加声明,如图所示:
所有修改完成后,编译内核,通过
$ cd /home/shiyanlou/oslab/
$ cd ./linux-0.11/
$ make all
copy
运行BIOS 输入ls,按下F12后输入的内容变为“**” :
五、实验结果分析
修改 Linux 0.11 的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。在初始状态,一切如常。用户按一次 F12 后,把应用程序向终端输出所有字母都替换为“*”。用户再按一次 F12,又恢复正常。第三次按 F12,再进行输出替换。依此类推。实验成功。
六、实验心得
这次实验,加深了对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念,进一步加深了对操作系统学习的理解,方便以后的学习。
学习时间 134分钟
操作时间 24分钟
按键次数 196次
实验次数 8次
报告字数 1608字
是否完成 完成