实验名称:终端设备的控制
班级:软嵌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函数来显示内核栈中各个进程的状态信息。
学习时间 74分钟
操作时间 3分钟
按键次数 10次
实验次数 3次
报告字数 1058字
是否完成 完成