操作系统原理 第2版实验与思考第9章IO设备管理.docx
《操作系统原理 第2版实验与思考第9章IO设备管理.docx》由会员分享,可在线阅读,更多相关《操作系统原理 第2版实验与思考第9章IO设备管理.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【实验与思考】Linux重定向以及对声音设备编程1.实验背景在本实验中,我们使用高级Linux命令来完成重定向和管道。(1)通过重定向和管道操作,熟悉输入/输出(I/O)重定向;把标准输出重定向创建一个 文件;防止使用重定向的时候覆盖文件;把输出追加到一个现有的文件中;把一个命令的输出 导入到另一个命令中。(2)通过对机器内部扬声器的编程,了解和学习Linux内部设备的控制和管理方法。(3)熟悉Linux环境的程序设计和调试方法,进一步了解操作系统输入/输出处理技术。每一个Linux命令都有一个源作为标准输入,一个目的作为标准输出。命令的输入通常来 自键盘(尽管它也可以来自文件)。命令通常输出
2、到监视器或者屏幕上。Linux计算环境使用重 定向可以控制命令的I/O。当试图把命令的输出保存到一个文件,以供以后查看的时候是很有用 的。通过管道,可以取得一个命令的输出,把它作为另一个命令的进一步处理的输入。有几个元字符可用于输入/输出重定向符号:输出重定向使用右尖括号(,又称大于号); 输入重定向使用左尖括号() o本实验重点在输出重定向。重定向命令的格式是:Command Redirection-Symbol File(text file or device file)标准输出比标准输入或标准出错更经常被重定向。许多命令,如Is、cat、head和tail产生 标准输出到屏幕上,常常会希
3、望把这个输出重定向到一个文件中,以便将来查看、处理或者打 印。通过替换文件名,可以截获命令的输出,而不是让它到达默认的监视器上。最强大的元字符之一是管道符号(I) o管道取得一个命令的标准输出,把它作为标准输入 传递给下一个命令(通常为more命令、Ip (行式打印机)命令或者一个文件处理命令,如grep 或sort) o必须在管道的每边都有一个命令,命令和管道之间的空格是可选的。管道命令的格式是:command | command接着,我们来学习如何实现Linux下对机器内部扬声器的编程。在Linux环境下对声音设备进行编程比大多数人想象的要简单得多。常用的声音设备是内 部扬声器和声卡,它们
4、对应/dev目录下的一个或多个设备文件,我们可以像打开普通文件一样 打开它们,用ioctl()函数设置一些参数,然后对这些打开的特殊文件进行写操作。由于这些文件并非普通文件,所以不能用ANSIC (标准C)的fopen、fclose等来操作文件, 而应该使用系统文件I/O处理函数(open read write Iseek和close)来处理这些设备文件。ioctl() 或许是Linux下最庞杂的函数,它可以控制各种文件的属性,在Linux声音设备编程中,最重要 的就是使用此函数正确设置必要的参数。(A,B, C,D为参数的数值。)运行结果(如果运行不成功,则可能的原因是什么?):适当调整参数
5、的值,看看声音有何变化。将上面的例子稍作扩展,我们就可以让扬声器唱歌。只要找到五线谱或简谱的音阶、音长。 节拍和频率、发声时长、间隔的对应关系就可以了。4 .实验总结5 .教师实验评价由于此类编程涉及到系统设备的读写,所以,很多时候需要有root权限,如果将实验例子 编译后不能正确执行,那么,首先请检查是否因为没有操纵某个设备的权限。内部扬声器是控制台的一部分,所以它对应的设备文件为/dev/consoleo变量KIOCSOUND 在头文件/usr/include/linux/kd.h中声明,使用ioctl()函数可以来控制扬声器的发声,使用规则 为:ioctl(fdAKIOCSOUND, (
6、int) tone);fd为文件设备号,tone是音频值。当tone为0时,终止发声。但是,这里的音频和我们平 常认为的音频是不同的。由于计算机主板定时器的时钟频率为1.19MHz,所以要进行正确的发 声,必须进行如下的转换:扬声器音频值=1190000/期望的音频值扬声器发声时间的长短通过函数usleep(unsigned long usee)来控制,它在头文件 /usr/include/unistd.h中定义,让程序睡眠usee微秒。6 .工具/准备工作在开始本实验之前,请回顾教科书的相关内容。(1)由实验指导老师分配的登录用户名(如user2)和口令。(2)需要准备一台运行Linux操作
7、系统,带有GNOME的计算机。7 .实验内容与步骤(1)重定向。在本实验中将会用到下列命令:pwd:显示当前的工作路径。cd:改变目录路径。1s:显示指定目录的内容。more:分页显示文件的内容。这是用于显示文本文件的首选方法。head:截取显示文件的开头部分(默认为开头10行)。tail:截取显示文件的结尾部分(默认为最后10行)。cal:有关日历的命令。set:shell特性的设置。echo:显示变量的值。ps:显示当前进程。data:显示或设置系统日期和时间。grep:查找文件中有无指定的关键字。sort:排序指令。提示:如果对命令的格式不清楚,可以用man命令请求帮助,即:man mo
8、re。步骤1:开机,登录进入GNOME。在GNOME登录框中填写指导老师分配的用户名和口 令并登录。步骤2:访问命令行。单击红帽子,在“GNOME帮助” “系统工具”菜单中单击“终端” 命令,打开终端窗口。使用重定向标准输出符号,完成以操作:步骤1:重定向标准输出,创建一个文件。右尖括号或称大于符号()把命令的输出发送 到一个文件中:使用单个右尖括号,当指定文件名不存在的时候,将创建一个新文件;如果文 件名存在,它将被覆盖。(注意:命令、重定向符号和文件名之间的空格是可选的)。重定向标准输出命令的格式是:command file 为核实当前所在目录位置,使用什么命令?如果当前位置不在主目录中,
9、使用什么命令可以改变到主目录中?如果希望把文件和目录列表截获,存储为主目录中的一个文件,这样可以追踪主目录中 有什么文件。使用什么命令,把长文件列表的输出重定向,创建一个叫做homedir.list的文件。 新文件homedir.list被放在哪里?使用1s命令核实新文件存在。 使用什么命令,以一次一屏的方式,来查看刚才创建的文件内容? 使用head命令截获homedir.list文件的最后10行,并同时通过重定向,创建一个叫做 dhomedir.list-tail-10的新文件。应该使用什么命令?使用more命令查看文件的内容。使用tail命令,截获homedir.list文件的前10行,并
10、同时通过重定向,创建一个叫做 dhomedir.list-top-10的新文件。使用什么命令?使用more命令查看文件的内容。通过重定向命令截获cal -y命令的输出,把它存到名为calendar的文件中。查看文件的 内容。截获了什么?请写出操作步骤及结果。 通过重定向命令截获cal 2010命令的输出,把它存到名为calendar的文件中。查看文件 的内容。其中有什么内容?请写出操作步骤及结果。calendar文件有什么变化?步骤2:防止使用重定向的时候覆盖文件。在bash shell中,一个叫做noclobber的选项可以用来设定防止在重定向的过程中覆盖文件。 可以在命令行中使用$set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统原理 第2版实验与思考 第9章 IO设备管理 操作系统 原理 实验 思考 IO 设备管理
限制150内