操作系统实验指导书3rd.doc
《操作系统实验指导书3rd.doc》由会员分享,可在线阅读,更多相关《操作系统实验指导书3rd.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、版本号:3.0 撰写人:孙自广合作者:陈波(博士) 欧阳浩日期:2011-09-08操作系统实验指导书(第3版) 广西工学院计算机工程系 2011年09月前言 操作系统是计算机科学与技术专业(软件工程方向)的一门非常重要的专业课程,操作系统是应用软件与底层硬件的桥梁。通俗的说“只有搞懂了操作系统,才能真正理解计算机”。学好操作系统课程可以提升学生应用计算机解决问题的能力,并获得开发大型复杂软件的经验。操作系统至关重要,但学好它并不容易。虽然Windows界面友好,方便使用,但是底层运行机制被有效的隐藏,在很多人眼里计算机还是一个黑匣子。在选择教学用操作系统上颇费苦心,目前可用于教学的操作系统有
2、Minix, Nochos, Geekos, JOS,FreeBSD等,而Linux不仅是开源的,而且资料丰富并拥有大量的应用软件,所有我们选择了Linux作为实验的平台。本实验指导书参阅了很多网上的优秀资源,在此对提供这些资源的作者,表示感谢。 目 录前言1实验1 Linux的安装与使用3实验2 Linux的键盘命令4实验3-1 Linux进程的创建与父子进程同步8实验3-2 Linux子进程映像的重新加载10实验4-1 Linux软中断通信11实验4-2 Linux管道通信13实验4-3 Linux信息缓冲通信14实验4-4 Linux共享存储通信16实验5 Linux 信号量与 P、V操
3、作函数的定义18实验6 在Linux中增加一个新的系统调用函数20实验7 动态申请内存21实验8 Linux字符设备驱动22实验9 Linux 文件系统调用23实验1 Linux的安装与使用1. 实验目的在做本课程系列实验之前需要先安装Linux系统。如果你的计算机上已经安装了Linux,则本实验可以不做。熟悉Linux提供的图形用户界面。2. 实验预备知识Linux系统的安装方法和图形界面基本操作请参考相关资料。3. 实验内容(1)在虚拟机软件VMWare上安装Linux操作系统,版本是Red Hat Linux 9。(2)进入Linux的资源管理器,以树状结构查看系统目录,并在/home目
4、录下创建子目录,目录名任意。(3)实现文本方式与图形方式的切换。(4)打开文字处理器,输入一段文字后存盘,与Word进行比较。(5)插入软盘,单击桌面上的软盘上的软盘标志,观察软盘驱动器的动作,观察窗口上显示的问价名,核对是否是软盘上的文件。(6)进入Linux的控制面板,参考Windows进行设置。比如设置文字为中文、设置显示器等。(7)进入/usr/src/linux-2.4子目录下查看有哪些文件夹,在进入其中的kernel子目录中看看,再进入其中的include/linux子目录看看有哪些头文件。该文件夹是本课程后续章节所看到的数据结构集中存放的地方。(8)选择菜单“红帽子”“系统工具”
5、“系统监视器”,进入Linux的系统监视器看看,与Windows的任务管理器进行比较。4. 实验要求与思考(1)按照系统提示进行安装,同时学习VMWare的使用方法。(2)以Windows操作系统窗口的操作方式使用Linux图形界面,比较它们的异同。(3)比较Linux的文本方式和窗口方式,哪种更受用户欢迎?(4)可以打开多个虚拟文本窗口吗?比较它与实验2-1的文本有什么相同和不同之处。实验2 Linux的键盘命令1. 实验目的(1)通过本实验使学生了解Linux所提供的用户界面中的键盘命令操作界面;(2)熟练掌握常用的键盘命令;(3)了解Linux的实模式文本操作界面。2. 实验预备知识请参
6、考相关资料学习Linux的命令。3. 实验内容进入Linux的文本方式,完成以下键盘命令的操作。(1) 目录操作 在/home下建立自己的子目录,子目录名自己取,然后在自己的子目录下再创建子 目录,可以多建几个。 进入/home,查看创建的子目录。 删除一部分自己的子目录下的子目录。 再回自己的子目录,显示当前目录清单。 显示当前目录所处的路径。 在自己的子目录下再创建子目录sub和sub1。 进入sub子目录。(2) 文件操作 复制一部分文件到sub子目录(当前目录)cp /usr/src/linux-2.4/kernel/*.c .注意:命令最后有一个小数点,表示目标地址为当前目录,后面的
7、命令中也要注意。 用长格式显示目录清单,看看文件的权限。 查看sub目录中是否有sys.c文件(只显示该文件名)。 将sys.c改名为mysys.c 查看sub目录中是否有mysys.c文件,是否还有sys.c文件。 建立mysys.c的一个文件链接文件名为mydoc.c。 查看上述两个文件是否有相同的i节点号。 使用格式: ls -i 文件名 /查看该文件的节点号 按页显示文件mysys.c的内容(分别使用more 和 less)。 将mysys.c按高比例进行压缩,压缩前后的文件大小进行观察和比较。 将sub子目录下的所有文件进行打包,并压缩生成doc.tar文件。 查看该文件,注意文件名
8、的颜色。 进入sub1子目录。 在sub1子目录下将sub中的doc.tar文件解压到当前目录。 查看sub1子目录下的文件,查看是否已经解压包解压。 删除sub1下的所有文件(一次性删除,不用选择提示)。 返回父目录。 查找文件mysys.c。 进入sub子目录。 修改文件mysys.c的权限为如下。文件拥有者:可读,可写,可执行。所属同组用户:可读,可执行。不同组用户:可读。 删除sub子目录下的所有文件,mysys.c除外,并查看是否完成。21 删除mysys.c。22 返回用户目录。23 删除sub和sub1子目录。 历史命令的调用用光标移动键和显示已经用过的命令,体会其方便之处。 日
9、期与实践 显示系统当前时间和日期。 显示2002年12月的日历。 显示2002年全年的日历。 输入输出重定向 键盘输入文件file1的内容(用d存盘退出)。 键盘输入文件file2的内容。 分别显示file1和file2。 将文件file1,file2合并到file中。 显示file。 将file追加到file1的末尾。 显示file1.(6) 管理操作用一条命令合并file, file1,file2,并显示(使用管道)。(7) 安装与卸载U盘(以下操作注意观察软驱是否运转) 将U盘插入驱动器,并挂接到安装点上。 将文件file1复制到U盘上。 显示U盘上的文件清单(文本文件与DOS兼容)。
10、显示file1的内容(该内容可以在Windows下显示出来)。 将U盘卸载。(8)用户管理 用root登录。 添加用户名为a1的用户。 为该用户设置密码: 重新启动系统。 用a1登录并输入密码。 注意用户状态下的提示符与管理员状态下的不同。 重新启动系统,用root登录. 显示/etc/passwd/和/etc/shadow文件的内容,查看该用户信息。 删除用户a1。 重新启动系统再用a1登录,看系统是否允许;若不允许,则用root登录。 在/home下建子目录abc。 再添加用户b1,并指定其主目录为/home/abc。 显示/etc/passwd/和/etc/shadow文件的内容,查看该
11、用户信息。 使用用户名b1进入该用户的主目录,查看是否进入/home/abc。 删除用户b1。4.实验注意事项(1) 在用root登陆时,注意是以特权用户的身份登录的,具有最大的实用权利,因此也极易破坏系统。(2) 在修改密码时要注意,如果不给出用户名,则系统默认用户就是特权用户,被修改的密码是特权用户的密码。实验3-1 Linux进程的创建与父子进程同步1. 实验目的(1)熟悉在C语言源程序中使用Linux所提供的系统调用界面的方法;(2)掌握Linux中进程的创建方法以及调度执行情况,理解进程与程序的区别;(3)使用系统调用wait()和exit(),实现父子进程同步;(4)了解Linux
12、提供的C编译器gcc的调用;(5)进一步掌握vi的使用。2. 实验预备知识(1)vi的使用请参考相关资料。(2)C编译器gcc的使用请参考相关资料。3. 实验内容 (1)父进程创建子进程,返回后父子进程都分别循环输出字符串“I am parent.”或“I am child.”5次,每输出一次后使用sleep(1)延时1秒,然后再进入下一次循环,如下所示。将该源程序链接后执行,观察并分析运行结果。 父进程返回后执行: for(i=0;i5;i+)printf(“I am parent.n”);sleep(1); 子进程返回后执行: for(i=0;i5;i+)printf(“I am chil
13、d.n”);sleep(1); (2)进程家族树 在源程序中连续使用4个fork(),而不是用if()进行返回值的判段,在4个fork()语言后面输出字符“A”。观察并分析该程序编译连接执行后的输出结果。(3)父子同步进程 修改第(1)题的程序,使用exit()和wait()实现父子进程同步,其同步方式为父进程等待子进程的同步,即:子进程先循环输出5次,然后父进程再循环输出5次.观察是否有不同的结果出现。4. 实验要求与思考(1)观察运行结果,分析结果产生的原因。(2)当程序中创建了子进程后,该程序的执行有什么特点?为什么?(3)如果连续创建多个子进程而不使用条件进行各自空间的分隔,会出现什么
14、情况?请画出第(2)题实验的进程家族树。(4)如何实现父子进程之间的父进程等待子进程的同步?实验3-2 Linux子进程映像的重新加载1. 实验目的(1)掌握在Linux中如何加载属于子进程自己的程序,以取代在子进程创建时由系统复制的父进程的程序;(2)掌握父进程通过创建子进程来完成某项任务的方法;(3)熟悉系统调用execv()和execl()的使用。2. 实验预备知识有关Linux子进程映像的重新加载的知识点请相关资料。3. 实验内容(1)由父进程创建一个子进程,子进程的功能是输出26个英文字母,使用execl()加载子进程的程序。(2)创建一个子进程,并使用execv()给它加载程序,其
15、功能是调用键盘命令ps a.已知键盘命令ps的路径与文件名为:/bin/ps。4. 实验思考(1)加载子进程映像的目的何在?(2)如何加载子进程映像?实验4-1 Linux软中断通信1. 实验目的(1) 掌握软中断通信信号的使用;(2) 熟悉通过软中断信号实现子进程等待父进程的同步;(3) 了解使用软中断通信实现异步事件的方法;(4) 熟悉线程的使用。2. 实验预备知识(1) 与本实验软中断通信有关的知识点请参考相关资料。(2) 与本实验线程有关的知识点请参考相关资料。3. 实验内容(1) 编写一个程序循环显示“How are you?”,当键盘输入Ctrl+C的组合键后中断循环显示,执行软中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 指导书 rd
限制150内