操作系统实验指导书3rd.docx

上传人:b****5 文档编号:5129056 上传时间:2022-12-13 格式:DOCX 页数:16 大小:28.97KB
下载 相关 举报
操作系统实验指导书3rd.docx_第1页
第1页 / 共16页
操作系统实验指导书3rd.docx_第2页
第2页 / 共16页
操作系统实验指导书3rd.docx_第3页
第3页 / 共16页
操作系统实验指导书3rd.docx_第4页
第4页 / 共16页
操作系统实验指导书3rd.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

操作系统实验指导书3rd.docx

《操作系统实验指导书3rd.docx》由会员分享,可在线阅读,更多相关《操作系统实验指导书3rd.docx(16页珍藏版)》请在冰豆网上搜索。

操作系统实验指导书3rd.docx

操作系统实验指导书3rd

版本号:

3.0

撰写人:

孙自广

合整理:

陈波(博士)

欧阳浩

日期:

2011-09-08

 

操作系统实验指导书

(第3版)

 

广西工学院计算机工程系

2011年09月

前言

操作系统是计算机科学与技术专业(软件工程方向)的一门非常重要的专业课程,操作系统是应用软件与底层硬件的桥梁。

通俗的说“只有搞懂了操作系统,才能真正理解计算机”。

学好操作系统课程可以提升学生应用计算机解决问题的能力,并获得开发大型复杂软件的经验。

操作系统至关重要,但学好它并不容易。

虽然Windows界面友好,方便使用,但是底层运行机制被有效的隐藏,在很多人眼里计算机还是一个黑匣子。

在选择教学用操作系统上颇费苦心,目前可用于教学的操作系统有Minix,Nochos,Geekos,JOS,FreeBSD等,而Linux不仅是开源的,而且资料丰富并拥有大量的应用软件,所有我们选择了Linux作为实验的平台。

本实验指导书参阅了很多网上的优秀资源,在此对提供这些资源的整理,表示感谢。

 

实验1Linux的安装与使用

1.实验目的

在做本课程系列实验之前需要先安装Linux系统。

如果你的计算机上已经安装了Linux,则本实验可以不做。

熟悉Linux提供的图形用户界面。

2.实验预备知识

Linux系统的安装方法和图形界面基本操作请参考相关资料。

3.实验内容

(1)在虚拟机软件VMWare上安装Linux操作系统,版本是RedHatLinux9。

(2)进入Linux的资源管理器,以树状结构查看系统目录,并在/home目录下创建子目录,目录名任意。

(3)实现文本方式与图形方式的切换。

(4)打开文字处理器,输入一段文字后存盘,与Word进行比较。

(5)插入软盘,单击桌面上的软盘上的软盘标志,观察软盘驱动器的动作,观察窗口上显示的问价名,核对是否是软盘上的文件。

(6)进入Linux的控制面板,参考Windows进行设置。

比如设置文字为中文、设置显示器等。

(7)进入/usr/src/linux-2.4子目录下查看有哪些文件夹,在进入其中的kernel子目录中看看,再进入其中的include/linux子目录看看有哪些头文件。

该文件夹是本课程后续章节所看到的数据结构集中存放的地方。

(8)选择菜单“红帽子”—>“系统工具”—>“系统监视器”,进入Linux的系统监视器看看,与Windows的任务管理器进行比较。

4.实验要求与思考

(1)按照系统提示进行安装,同时学习VMWare的使用方法。

(2)以Windows操作系统窗口的操作方式使用Linux图形界面,比较它们的异同。

(3)比较Linux的文本方式和窗口方式,哪种更受用户欢迎?

(4)可以打开多个虚拟文本窗口吗?

比较它与实验2-1的文本有什么相同和不同之处。

实验2Linux的键盘命令

1.实验目的

(1)通过本实验使学生了解Linux所提供的用户界面中的键盘命令操作界面;

(2)熟练掌握常用的键盘命令;

(3)了解Linux的实模式文本操作界面。

2.实验预备知识

请参考相关资料学习Linux的命令。

3.实验内容

进入Linux的文本方式,完成以下键盘命令的操作。

(1)目录操作

1在/home下建立自己的子目录,子目录名自己取,然后在自己的子目录下再创建子目录,可以多建几个。

2进入/home,查看创建的子目录。

3删除一部分自己的子目录下的子目录。

4再回自己的子目录,显示当前目录清单。

5显示当前目录所处的路径。

6在自己的子目录下再创建子目录sub和sub1。

7进入sub子目录。

(2)文件操作

1复制一部分文件到sub子目录(当前目录)

cp/usr/src/linux-2.4/kernel/*.c.

注意:

命令最后有一个小数点,表示目标位置为当前目录,后面的命令中也要注意。

2用长格式显示目录清单,看看文件的权限。

3查看sub目录中是否有sys.c文件(只显示该文件名)。

4将sys.c改名为mysys.c

5查看sub目录中是否有mysys.c文件,是否还有sys.c文件。

6建立mysys.c的一个文件链接文件名为mydoc.c。

7查看上述两个文件是否有相同的i节点号。

使用格式:

ls-i文件名//查看该文件的节点号

⑧按页显示文件mysys.c的内容(分别使用more和less)。

9将mysys.c按高比例进行压缩,压缩前后的文件大小进行观察和比较。

10将sub子目录下的所有文件进行打包,并压缩生成doc.tar文件。

11查看该文件,注意文件名的颜色。

12进入sub1子目录。

13在sub1子目录下将sub中的doc.tar文件解压到当前目录。

14查看sub1子目录下的文件,查看是否已经解压包解压。

15删除sub1下的所有文件(一次性删除,不用选择提示)。

16返回父目录。

17查找文件mysys.c。

18进入sub子目录。

19修改文件mysys.c的权限为如下。

文件拥有者:

可读,可写,可执行。

所属同组用户:

可读,可执行。

不同组用户:

可读。

20删除sub子目录下的所有文件,mysys.c除外,并查看是否完成。

21删除mysys.c。

22返回用户目录。

23删除sub和sub1子目录。

⑶历史命令的调用

用光标移动键↑和↓显示已经用过的命令,体会其方便之处。

⑷日期与实践

1显示系统当前时间和日期。

2显示2002年12月的日历。

3显示2002年全年的日历。

⑸输入输出重定向

1键盘输入文件file1的内容(用∧d存盘退出)。

2键盘输入文件file2的内容。

3分别显示file1和file2。

4将文件file1,file2合并到file中。

5显示file。

6将file追加到file1的末尾。

7显示file1.

(6)管理操作

用一条命令合并file,file1,file2,并显示(使用管道)。

(7)安装与卸载U盘(以下操作注意观察软驱是否运转)

1 将U盘插入驱动器,并挂接到安装点上。

2 将文件file1复制到U盘上。

3 显示U盘上的文件清单(文本文件与DOS兼容)。

4 显示file1的内容(该内容可以在Windows下显示出来)。

5 将U盘卸载。

(8)用户管理

1 用root登录。

2 添加用户名为a1的用户。

3 为该用户设置密码:

123456

4 重新启动系统。

5 用a1登录并输入密码。

6 注意用户状态下的提示符与管理员状态下的不同。

7 重新启动系统,用root登录.

8 显示/etc/passwd/和/etc/shadow文件的内容,查看该用户信息。

9 删除用户a1。

10 重新启动系统再用a1登录,看系统是否允许;若不允许,则用root登录。

11 在/home下建子目录abc。

12 再添加用户b1,并指定其主目录为/home/abc。

13 显示/etc/passwd/和/etc/shadow文件的内容,查看该用户信息。

14 使用用户名b1进入该用户的主目录,查看是否进入/home/abc。

15 删除用户b1。

4.实验注意事项

(1)在用root登陆时,注意是以特权用户的身份登录的,具有最大的实用权利,因此也极易破坏系统。

(2)在修改密码时要注意,如果不给出用户名,则系统默认用户就是特权用户,被修改的密码是特权用户的密码。

实验3-1Linux进程的创建与父子进程同步

1.实验目的

(1)熟悉在C语言源程序中使用Linux所提供的系统调用界面的方法;

(2)掌握Linux中进程的创建方法以及调度执行情况,理解进程与程序的区别;

(3)使用系统调用wait()和exit(),实现父子进程同步;

(4)了解Linux提供的C编译器gcc的调用;

(5)进一步掌握vi的使用。

2.实验预备知识

(1)vi的使用请参考相关资料。

(2)C编译器gcc的使用请参考相关资料。

3.实验内容

(1)父进程创建子进程,返回后父子进程都分别循环输出字符串“Iamparent.”或“Iamchild.”5次,每输出一次后使用sleep

(1)延时1秒,然后再进入下一次循环,如下所示。

将该源程序链接后执行,观察并分析运行结果。

父进程返回后执行:

for(i=0;i<5;i++)

{

printf(“Iamparent.\n”);

sleep

(1);

}

子进程返回后执行:

for(i=0;i<5;i++)

{

printf(“Iamchild.\n”);

sleep

(1);

}

(2)进程家族树

在源程序中连续使用4个fork(),而不是用if()进行返回值的判段,在4个fork()语言后面输出字符“A”。

观察并分析该程序编译连接执行后的输出结果。

(3)父子同步进程

修改第

(1)题的程序,使用exit()和wait()实现父子进程同步,其同步方式为父进程等待子进程的同步,即:

子进程先循环输出5次,然后父进程再循环输出5次.观察是否有不同的结果出现。

4.实验要求与思考

(1)观察运行结果,分析结果产生的原因。

(2)当程序中创建了子进程后,该程序的执行有什么特点?

为什么?

(3)如果连续创建多个子进程而不使用条件进行各自空间的分隔,会出现什么情况?

请画出第

(2)题实验的进程家族树。

(4)如何实现父子进程之间的父进程等待子进程的同步?

实验3-2Linux子进程映像的重新加载

1.实验目的

(1)掌握在Linux中如何加载属于子进程自己的程序,以取代在子进程创建时由系统复制的父进程的程序;

(2)掌握父进程通过创建子进程来完成某项任务的方法;

(3)熟悉系统调用execv()和execl()的使用。

2.实验预备知识

有关Linux子进程映像的重新加载的知识点请相关资料。

3.实验内容

(1)由父进程创建一个子进程,子进程的功能是输出26个英文字母,使用execl()加载子进程的程序。

(2)创建一个子进程,并使用execv()给它加载程序,其功能是调用键盘命令ps–a.已知键盘命令ps的路径与文件名为:

/bin/ps。

4.实验思考

(1)加载子进程映像的目的何在?

(2)如何加载子进程映像?

实验4-1Linux软中断通信

1.实验目的

(1)掌握软中断通信信号的使用;

(2)熟悉通过软中断信号实现子进程等待父进程的同步;

(3)了解使用软中断通信实现异步事件的方法;

(4)熟悉线程的使用。

2.实验预备知识

(1)与本实验软中断通信有关的知识点请参考相关资料。

(2)与本实验线程有关的知识点请参考相关资料。

3.实验内容

(1)编写一个程序循环显示“Howareyou?

”,当键盘输入Ctrl+C的组合键后中断循环显示,执行软中断程序,软中断程序的功能是修改循环变量的值终止循环,然后输出“Byebye”。

(2)使用软中断实现父子进程同步,同步方式为:

父进程先输出字符“A”,然后子进程再输出“B”。

(3)编写一个程序,完成以下功能。

1父进程创建两个子进程P1和P2;

2父进程捕捉从键盘上通过Ctrl+C键发来的中断信号;

3父进程获得中断信号后使用系统调用kill()向两个子进程分别发终止执行信号SIGUSR1和SIGUSR2;

4子进程捕捉到各自的信号后分别输出:

Child1iskilledbyparent!

Child2iskilledbyparent!

然后终止执行(无先后次序的要求):

5父进程等待两个子进程终止后输出以下信息,然后终止执行:

Parentprocessiskilled!

(4)编写一个程序,完成以下功能。

由进程创建一个线程,并定义软中断信号Ctrl+C终止进程执行。

运行后,父子两个线程分别循环输出“Thissismainpthread.\n”和“Thisisthesecondpthread.\n”。

父进程接收软中断信号出循环,然后显示“Byebye!

\n”后终止执行。

说明:

由于线程没有自己的位置空间,所以父进程执行终止后其子线程也会随之终止,因此该程序中只需要父线程接收软中断信号后终止即可。

4.实验思考

(1)对实验内容

(1)进行改进,先输出10次“Howareyou?

”,在此过程中使用Ctrl+C不能中断循环显示,10次以后使用Ctrl+C可以中断循环。

(2)本次实验内容

(2)实现子进程等待父进程,而实验3-2中实现了父进程等待子进程,它们分别采用了什么方法?

相互之间可不可以代替?

(3)实验内容(3)中一共存在几个进程?

它们执行的顺序是怎么样的?

如果现在要求实现进程间的同步关系child1、child2、parent,需要怎样改进?

(4)线程的创建与执行与进程有何区别?

当程序后中使用了创建线程的调用后,其编译参数与进程有何不同?

实验4-2Linux管道通信

1.实验目的

(1)掌握父子进程使用管道进行通信的方法。

(2)了解管道通信的特点和使用上的限制。

2.实验预备知识

了解无名管道工作原理和无名管道编程实现。

3.实验内容

编写一个程序,实现以下功能。

(1)父进程使用系统调用pipe()建立一个无名管道;

(2)创建两个子进程,分别向管道各分布下面中一条信息后结束;

Child1issendingamessagetoparent!

Child2issendingamessagetoparent!

(3)父进程从管道中分别接收两个子进程发来的消息并显示该消息,然后父进程结束。

(4)两个子进程的发送没有先后要求。

4、实验思考

(1)管道通信与软件中断通信在信息量的大小上有何区别?

(2)共享同一个管道进行通信的读写进程之间必须满足什么关系?

为什么?

实验4-3Linux信息缓冲通信

1.实验目的

(1)掌握Linux中进程之间使用消息缓冲实现进程通信的方法;

(2)了解消息缓冲通信的特点;

(3)了解Linux提供的IPC机制。

2.实验预备知识

查找资料了解消息缓冲通信的实现方法。

3.实验内容

(1)父进程创建一个消息队列和一个子进程,由子进程发送消息,父进程等待子进程结束后接收子进程发来的消息,并显示消息内容。

以“end”作为结束消息。

(2)分别编写发送进程和接收进程,由发送进程发送消息,接收进程接收消息。

采用先执行发送进程后执行接收进程的方式同步。

以“end”作为结束消息。

(3)模拟C/S通信,要求如下。

1模拟客户(Client端)程序client,其功能如下。

a)显示下列服务功能菜单:

Enteryourchoice:

1.Savemoney

2.Takemoner

b)接收用户键入的功能号进行选择;

c)将用户键入的功能号作为一条信息发送消息队列,然后结束。

②模拟服务器端(Server端)程序server,其功能如下。

a)从消息队列接搜Client端发来一条消息:

b)根据消息作如下处理。

若消息为“1”,则创建子进程1,由子进程1加载服务模块save,该模块的作用为显示以下信息:

Yourmoneywassaved!

若消息为“2”,则创建子进程2,由子进程2加载服务模块take,该模块的作用为显示以下消息:

Pleasetakeyourmoney!

c)等待子进程终止后,Server进程删除消息队列,然后结束。

注意:

1save和take要事先编译连接好,放在合适的子目录下;

2采用先运行客户端进程,然后运行服务器端进程的方式实现同步;

3子进程的加载方法请参考实验3-2。

4.实验思考

(1)消息缓冲通信有哪些特点?

(2)在使用消息缓冲通信进行通信时,发送和接收之间的同步机制由谁提供?

(3)消息缓冲通信与管道通信有哪些不同之处?

当两个独立的进程之间需要传递大量信息时,应该使用其中哪一种通信方式?

实验4-4Linux共享存储通信

1.实验目的

(1)掌握Linux提供的共享存储区通信方式的使用方法。

(2)了解共享存储区通信方法的特点。

(3)了解实现进程间通信的不同方法之间的区别、特点和适用情况。

2.实验预备知识

(1)了解共享存储区通信方式的适用方法。

(2)了解子进程等待父进程的同步的实现方法。

3.实验内容

(1)编写发送信息程序shmsnd.c和接受信息程序shmrcv.c,其功能分别为:

//shmsnd.c//

1创建一个共享存储区间;

2将它附接到自己的位置空间;

3循环写入若干信息,以“end”结束(提示:

信息以追加方式存放到共享区中,可以用strcat()函数实现追加);

4断开共享区;

5结束。

//shmrcv.c//

1创建/获取同一个共享存储区;

2将它附接到自己的位置空间;

3输入其中已经由发送地方输入的内容;

4断开共享区

5删除共享区

6结束。

采用先执行发送进程、后执行接受进程来实现同步。

(2)父进程创建一个共享存储区,然后创建子进程;采用终端实现父进程发送信息和子进程接受信息的同步;信息以“end”作为结束标志。

4.实验思考

(1)共享存储区间通信有哪些优点?

使用上有哪些限制?

适用于哪种场合?

(2)总结共享存储区通信与消息缓冲通信、管理通信方式各有哪些特点?

实验5Linux信号量与P、V操作函数的定义

1.实验目的

(1)掌握Linux信号量的使用方法和P、V操作函数的定义;

(2)掌握使用P、V操作实现进程之间的同步和互斥的方法;

(3)加深对进程同步互斥概念的理解。

2.实验预备知识

(1)Linux信号量的使用方法请参考附件材料。

(2)共享存储通信请参考实验4-4.

(3)用P、V操作实现进程互斥与同步请参考附件材料。

3.实验内容

(1)使用信号量及P、V操作实现进程互斥。

阅读附件材料中例4-9,将程序编译连接后运行,观察运行结果。

(2)使用信号量及P、V操作实现子进程之间通过共享内存通信的读写同步,如实验图5-1所示。

要求如下:

生产者进程消费者进程A

sum

父进程

消费者进程B

实验图5-1

1请参考附件材料中的例4-11,设计一个父进程,创建三个子进程。

3个子进程中一个是生产者进程,两个是消费者进程。

父子进程都使用父进程创建的共享存储区进行通信。

2由生产者进程发送数值1~10到由5个缓冲区组成的共享内存中,两个消费者进程轮流接受并输入这10个数据,同时将两个消费者进程对读出的所有数据进行累加求和。

33个子进程结束后,由父进程输出两个消费者进程所读出数据的累加和。

它们的同步关系使用P、V操作系统。

提示:

在例4-11使用2个共享内存的基础上再使用一个共享内存来存放读出信息的累加和,由两个消费者进程和父进程共享使用。

4.实验思考

(1)针对每个信号量需要进行哪些定义?

(2)总结使用信号量系统调用的步骤与方法。

(3)进程之间如何使用信号量及其P、V操作实现互斥?

(4)进程之间如何使用信号量及其P、V操作实现同步?

(5)总结数值型共享内存作为变量或作为数组的使用方法。

实验6在Linux中增加一个新的系统调用函数

1.实验目的

(1)了解在Linux内核中增加一个系统调用函数的方法;

(2)了解内核被修改后必须重新编辑连接的道理,了解编译连接的过程。

2.实验预备知识

(1)系统调用的实现原理请参考相关材料;

(2)在Linux内核中增加一个系统调用的方法和步骤请参考附件材料。

3.实验内容

在Linux内核中增加一个系统调用函数,其功能是输出一个字符串,并返回数值5。

测试函数中调用该函数,并输出其返回值,查看是否将字符串和返回值输出。

4.实验思考

(1)作为操作系统,为用户提供系统调用用户界面需要做那些工作?

(2)用户如何将新的系统调用函数增加到Linux内核中?

(3)在实现的过程中,遇到了那些困难?

是如何解决的?

实验7动态申请内存

1.实验目的

(1)掌握Linux中动态申请内存的方法;

(2)了解操作系统对于高级语言程序设计所提供的环境变量支撑。

2.实验预备知识

Linux内存分配策略和系统调用请参考附件材料。

3.实验内容

(1)使用键盘命令以字节为单位显示系统中的内存使用情况,特别是当前系统中的空闲内存大小。

(2)编写一个程序申请两块大小为10的内存,分别存放字符串“123456789”和“987654321”,并输出字符串及存放位置,然后重新调整内存大小为20,再次输出位置。

(3)再次显示系统中的内存使用情况,看看前后系统中的空闲内存大小有没有变化。

4.实验思考

(1)实验内容

(1)中的前后两次输出的内存位置有何不同?

与附件材料中的例11-2相比区别在哪里?

为什么会产生这些?

(2)在程序中申请使用了内存后有没有释放?

如果不释放申请的内存,会产生什么后果?

实验8Linux字符设备驱动

1.实验目的

(1)了解设备驱动程序的编写、编译、和装载、卸载的方法;

(2)了解设备文件的创建;

(3)了解如何编写测试程序测试自己的系统是否能够正常工作。

2.实验预备知识

请参考附件材料中“字符设备驱动程序实例分析”中的mydriver.

3.实验内容

将附件材料节中的mydriver在自己的计算机上实现,并测试该字符设备的open、write和read函数。

4.实验思考

(1)设备与文件的接口是什么?

(2)实现对字符设备需要编写哪些函数?

如何实现?

(3)在对设备,模块进行编译时与普通文件的编译有何不同?

需要增加哪些参数?

(4)在调试运行中遇到了哪些问题?

是如何解决的?

实验9Linux文件系统调用

1.实验目的

(1)掌握Linux提供的文件系统调用的使用方法;

(2)熟悉文件操作的系统调用用户接口;

(3)了解操作系统文件系统的工作原理和工作方式。

2.实验预备知识

Linux文件系统调用中的相关调用格式和参数说明请参考附件材料。

3.实验内容

编写一个文件工具filetools,使其具有以下功能:

*********************************

1、退出

2、创建新文件

3、写文件

4、读文件

5、修改文件权限

6、查看当前文件权限并退

*********************************

提示用户输入功能号,并根据用户输入的功能选择完成相应的功能。

4.实验要求与思考

(1)先做一个针对一个文件的工具,即该工具可以处理的一个给定的文件。

(2)在

(1)的基础上加以改进,是该工具能够处理任意文件,文件名由用户从键盘输入。

(3)要求在完成某个功能后返回主菜单,只有在主菜单下选择0或查看权限后才能退出该工具,返回操作系统。

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1