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

终端设备的控制

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

班级:软嵌191

姓名:杜家宝

学号:1930110783

一、实验目的

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

二、实验环境

本操作系统实验的硬件环境是 IA-32(x86) 架构的 PC 机(在实验楼的环境中就是右侧的窗口),主要软件环境是 Bochs + gcc + 你最喜 欢的编辑器 / IDE + 你最喜欢的操作系统 + Linux 0.11 源代码。 三、实验内容 键盘 I/O 是典型的中断驱动,在 kernel/chr_drv/console.c 文件中: void con_init(void) //控制台的初始化 { // 键盘中断响应函数设为 keyboard_interrupt set_trap_gate(0x21, &keyboard_interrupt); } 所以每次按键有动作,keyboard_interrupt 函数就会被调用,它在文件 kernel/chr_drv/keyboard.S(注意,扩展名是大写的 S)中实现。 所有与键盘输入相关的功能都是在此文件中实现的,所以本实验的部分功能也可以在此文件中实现。 简单说,keyboard_interrupt 被调用后,会将键盘扫描码做为下标,调用数组 key_table 保存的与该按键对应的响应函数。

四、实验过程及数据记录 图片描述 图片描述 图片描述

五、实验心得 正常情况下打开模拟器中,按下功能键F12即可显示内核栈中各个进程的状态信息,而当把func中的call show_stat屏蔽掉后,再按下F12就什么也没有了,可见func实现的功能就是调用show_stat函数来显示内核栈中各个进程的状态信息。

最新评论
暂无评论~