“操作系统实验”实验报告

终端设备的控制

实验名称:终端设备的控制

实验日期:2021.7.6

班级:软嵌192

姓名:贾梦娇

学号:1930110798

一、实验目的

  • 加深对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念;
  • 通过实践掌握 Linux 0.11 对键盘终端和显示器终端的处理过程。

二、实验环境

本操作系统实验的硬件环境是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,再进行输出替换。依此类推。实验成功。

六、实验心得

这次实验,加深了对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念,进一步加深了对操作系统学习的理解,方便以后的学习。

最新评论
暂无评论~