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

终端设备的控制

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

实验日期: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函数来实现。

六.实验心得

这次实验比前几个实验要稍稍简单一些,只要能静下心来梳理其中逻辑结构,再结合自己网上学习,分析,最终可以完成实验。

最新评论
暂无评论~