操作系统实验.docx
- 文档编号:12890704
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:36
- 大小:30.01KB
操作系统实验.docx
《操作系统实验.docx》由会员分享,可在线阅读,更多相关《操作系统实验.docx(36页珍藏版)》请在冰豆网上搜索。
操作系统实验
四川师范大学计算机学院
实验报告册
院系名称:
计算机科学学院
课程名称:
操作系统
实验学期年至年第学期
专业班级:
姓名:
学号:
指导教师:
实验最终成绩:
实验报告须知
1.学生填写实验报告应按规范填写,填写格式见由任课老师给出的实验报告样本;
2.学生应填写的内容包括:
封面相关栏目、第一页中‘本学期(年)开设实验课程情况一览表’中的实验名称、学时数;每次报告中的实验性质、同组人姓名、实验日期、以及实验报告中的一至五项;
3.教师填写内容为:
实验评价、每次报告成绩、第一页中‘本学期(年)开设实验课程情况一览表’中成绩、及封面的实验最终成绩;
4.学生实验结束后,教师应对学生实验结果进行核实,学生方可离开实验室。
5、实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。
6.本实验册应妥善保管,本课程实验结束后应交回实验室。
本学期(年)开设实验课程情况一览表
序号
实验名称
(学生实验后填写)
学时数
成绩
(分数或等级)
1
Linux系统的基本操作
2
2
Linux中vi编辑器和C编译器的使用
2
3
进程管理
2
4
进程创建
2
5
生产者-消费者Linux下C实现
2
6
死锁避免算法实现
2
7
动态分区分配算法
2
实验报告
(1)
实验名称
Linux系统的基本操作
同组人姓名
无
实验性质
□基本操作□验证性
□综合性□设计性
实验日期
2011-3-23
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
熟悉Linux系统运行环境,掌握Linux操作系统上的基本操作。
二、实验内容
一、登录Linux系统和使用GNOME
二、Linux系统的基本命令
三、Linux系统的文件、目录和权限
四、Linux通配符的使用。
五、Linux文件系统
六、Linux系统注销方式,至少两种
三、主要设备及软件
PC机一台+VMwareWorkstation软件
四、实验流程、操作步骤或核心代码、算法片段
1)登录Linux系统和使用GNOME
a)在启动系统,登陆进入系统后,桌面上有3个图标,它们的名字和作用是什么?
它们和windows系统的什么软件功能相当?
A.
名字:
计算机作用:
为用户提供管理计算机的接口,和windows的我的电脑作用相同。
B.
名字:
Root的主文件夹作用:
为当前的用户提供保存资料。
它和windows的我的文档作用相同。
C.
名字:
回收站作用:
存放用户所删除的文件它和windows的回收站作用相同
b)在屏幕的最下方,有一个快捷栏,其中有哪些图标,它们的名字和作用是什么?
它们和windows系统的什么软件功能相当?
A.
Harddisk(硬盘)作用:
用于存储数据,文件等;和windows磁盘功能相当
B.
Networkadapter(网络适配器)作用:
用于建立网络连接;和windowsinode功能相当
C.
Soundcard(声卡)作用:
用于调节音量;和windows音量控制器功能相当
D.
Printer(打印机)作用:
用于输出数据的打印;和windows打印机功能相当
E.
GenesyslogicUSBstorage(USB插件)作用:
管理即插即用设备;和windowsUSB硬件功能相当
F.
Messagelog(信息记录)作用:
用于提醒用户系统消息;和windows消息提醒功能相当
2)Linux系统的基本命令
a)列举打开Linux终端的两种方式,分别叙述其过程
A.
单击applications,选择accessories,再选择terminal
B.
单击右键,选择terminal
b)使用pwd命令可以查看用户当前所处的工作目录,你的工作目录
是dir
b)使用more命令可以查看当前文件夹的内容
c)分别键入命令who,mandate,cal 5,exit解释各个命令具体实现的功能
A.
who指令显示了当前登陆在该机器上的所有用户的列表
B.
mandate指令用来查看系统中关于date命令的使用说明
C.
cal5命令:
日历命令,显示本年12个月日历
D.
exit命令:
退出终端
3)Linux系统的文件、目录和权限
a)查询当前用户所处的位置
使用pwd命令
b)在当前文件夹下创建一个名为os的文件夹
Mkdiros
c)使os目录成为当前目录
Cdos
创建一个名为file.c的文本文件,该文件放置在文件夹os中
Cdoscat>file.c
d)把file.c文件拷贝到用户主目录中(登陆进系统时所处的目录),文件名不变
Cp/root/gaoting/file.c/root/file.c
e)把主目录中的file.c文件更名为source.c
Mv–lfile.csource.c
返回到主目录
Cd/
f)使用命令"ls–l",其显示内容是什么?
对各列内容进行解释?
Drwxr-xr2gaotinggaoting4096mar262011desktop
文件类型权限链接数所属用户所属组文件大小创建时间文件名
g)删除文件夹os
Rm–rfos
h)删除当前目录下所有以source开始的文件
Rmsource.*
4)Linux通配符的使用。
在当前目录下创建五个文件(inv1jig.c、inv2jig.c、inv3jig.c、invinitjig.c、invpar.c),列出下述每个命令的运行结果,并解释原因
命令:
$lsinv?
jig.c
结果:
inv1jig.cinv2jig.cinv3jig.c
原因:
ls命令用于显示?
代表一个任意的字符,所以除了这个字符不同,而其他的字符相同的文件都予以显示出;
命令:
$lsinv[13]jig.c
结果:
inv1jig.cinv3jig.c
原因:
ls命令用于显示[13]表示显示该位的字符是“1”或“3”的文件
命令:
$lsinv[1-3]jig.c
结果:
inv1jig.cinv2jig.cinv3jig.c
原因:
ls命令用于显示[1-3]表示显示该位的字符是1至3的所有文件
命令:
$lsinv*jig.c
结果:
inv1jig.cinv2jig.cinvjig.cinvinitjig.c、
原因:
ls命令用于显示*表示任意个任意的字符。
故除去该位不同,而其它位与其相同的文件都显示出;
命令:
$ls*[0-9]*.[co]
结果:
inv1jig.cinv2jig.cinv3jig.c
原因:
ls命令用于显示*表示任意个任意的字符,[0-9]表示0至9之间的任意字符。
故显示结果如上所示。
4)Linux文件系统
a)使用"cd/"和"ls"两个命令后,你能看到一些什么文件夹,它们的主要作用是什么?
列举几个你所熟悉的文件夹
A.
bin
B.
home
C.
root
D.
proc
5)Linux系统注销方式,至少两种
A.
#skill–KILL–uroot
B.
#skill–KILL–v/dev/pts/*
五、实验结果的分析与评价
实验报告
(2)
实验名称
Linux中vi编辑器和C编译器的使用
同组人姓名
无
实验性质
□基本操作□验证性
□综合性□设计性
实验日期
2011-3-16
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
熟悉Vi编辑器,能够熟练地编辑文本文件,能够使用cc命令编译、链接C语言程序
二、实验内容
一、使用vi编辑器创建一个C语言程序文件example.c
二、编译该C程序文件,在当前目录下生成的同名的目标程序
三、编译该C程序文件,在当前目录下生成名为a.out的可执行程序
四、运行a.out程序。
五、编译该C程序文件,在当前目录下生成名为example的可执行程序
六、运行examle程序
三、主要设备及软件
PC机一台+VMware软件
四、实验流程、操作步骤或核心代码、算法片段
2)使用vi编辑器创建一个C语言程序文件example.c
Viexample.c
3)编译该C程序文件,在当前目录下生成的同名的目标程序
编译方法:
gcc-o输出文件名输入文件名.c
Gcc-oexampleexample.c
4)编译该C程序文件,在当前目录下生成名为a.out的可执行程序
Gccexample.c
5)运行a.out程序
./a.out
6)编译该C程序文件,在当前目录下生成名为example的可执行程序
Gccexample.c[-oexample]
7)运行examle程序
./example.out
五、实验结果的分析与评价
在生成可执行程序时,可以以默认方式,也可以自定义命名方式!
实验报告(3)
实验名称
进程管理
同组人姓名
无
实验性质
□基本操作□验证性
□综合性□设计性
实验日期
2011-3-23
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
掌握Windows中的进程查询和终止,熟悉Linux系统中的进程的查询,终止,作业查询,区分前台作业和后台作业。
二、实验内容
1、Windows部分
一、打开“任务管理器”窗口,正在运行的应用程序有
二、Windows“任务管理器”的窗口由___5___个选项卡组成,分别是
三、当前“进程”选项卡显示的栏目分别是
四、进程主要有几个类别,分别列出来
五、描述终止一个进程的步骤
2、Linux部分
使用ps命令查询进程;使用jobs命令查询作业;使用bg控制后台和前台作业;使用Kill命令终止进程;
三、主要设备及软件
PC机一台+VMware软件
四、实验流程、操作步骤或核心代码、算法片段
.1Windows部分
打开“任务管理器”窗口,正在运行的应用程序有:
1)文件夹:
实验1-4
2)redhatenterpriselinux5-vmware
3)准备实验安装使用linux
4实验3
5)XX搜索
Windows“任务管理器”的窗口由5个选项卡组成,分别是:
1)应用程序
2)进程
3)性能
当前“进程”选项卡显示的栏目分别是
1)映像名称
2)用户名
3)cpu
4)内存使用
进程主要有几个类别,分别列出来
1)父进程
2)子进程
3)孤儿进程
4)僵尸进程描述终止一个进程的步骤
选中需要终止的进程,然后按结束进程按钮
5)描述更改正在运行的程序的优先级步骤
选中需要更改优先级的进程,单击右键选择设置优先级,选择优先级别
2.2Linux部分
1)ps命令
a)执行manps,简要说明ps命令的作用
显示ps命令的使用帮助
b)执行下面命令,并解释命令输出结果中的各列
ps
PID(进程标识符)TTY(终端的次要装置号码)TIME(执行的时间)CMD(所执行的指令)
c)假设jkx123是Linux系统中的一个普通用户,执行下面各个命令,并解释每行命令的作用
①ps–uax
显示所有包含其他使用者的行程
②ps–ujkx123
按用户名和启动时间的顺序来查看用户jkx123的进程
2)jobs命令
a)执行manjobs,简要说明jobs命令的作用
显示当前终端关联的后台任务情况
b)依次执行下述各个命令,对每个命令的输出进行解释
1jobs
查看后台运行的进程
②jobs-l
显示进程组id和作业在运行的目录
3)后台和前台作业
a)进入vim编辑器,执行ctrl+z将该作业挂起。
运行结果是什么?
[1]+Stoppedvimgt.c
b)执行vimfile&,再使用fg%ID将vim带回前台。
写出执行后的结果。
(注:
ID为作业序号)
[1]+exit127vimfile
c)使用jobs查看被挂起作业。
写出结果。
[1]+Stoppedvigt.c
d)执行fg%ID,将该挂起作业带入前台。
观察结果。
fg%3453
e)使用kill%ID终止一进程
kill%3475
4)Kill命令
a)执行mankill,简要说明kill命令的作用
终止进程
b)重复步骤b)后,依次执行下述各个命令,命令②③中的pid用①中输出结果中的一个pid代替,并对命令②③④进行解释
①ps
②killpid
杀死进程
③kill-2pid
杀死进程
④kill-9%1
杀死进程
五、实验结果的分析与评价
命令的参数能够控制不同的操作!
实验报告(4)
实验名称
进程创建
同组人姓名
无
实验性质
□基本操作□验证性
□综合性□设计性
实验日期
2011-4-6
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程竞争资源现象,学习解决进程互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
二、实验内容
(1)进程的创建
调用fork()创建两个子进程,返回值分别付给p1和p2。
判断p1、p2值,让每一个进程在屏幕上显示一个字符:
父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。
试观察纪录屏幕上的显示结果,并分析原因。
(2)获取进程id号
在显示b、c时,两个子进程调用getpid()分别获取pid号;
在显示a时,同时显示p1、p2的值,并调用getpid()获pid号,
(3)进程的控制
修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话或者使用for循环输出1000次字符,在观察程序执行时屏幕出现的现象,并分析原因。
三、主要设备及软件
PC机一台+VMware软件
四、实验流程、操作步骤或核心代码、算法片段
#include
#include
#include
voidwaiting(),stop();
intwait_mark;
main()
{
intp1,p2;
if(p1=fork())
{
if(p2=fork())
{
wait_mark=1;
signal(SIGINT,stop);
waiting();
kill(p1,16);
kill(p2,17);
wait(0);
wait(0);
printf("parentprocessiskilled!
\n");
exit(0);
}
else
{
wait_mark=1;
signal(SIGINT,SIG_IGN);
signal(17,stop);
waiting();
lockf(1,1,0);
printf("childprocess2iskilledbyparent!
\n");
lockf(1,0,0);
exit(0);
}
}
else
{
wait_mark=1;
singnal(SIGINT,SIG_IGN);
signal(16,stop);
waiting();
lockf(1,1,0);
printf("childprocess1iskilledbyparent!
\n");
lockf(1,0,0);
exit(0);
}
}
voidwaiting()
{
while(wait_mark!
=0);
}
voidstop()
{
wait_mark=0;
}
五、实验结果的分析与评价
1)比较使用signal(SIGINT,SIG_IGN)和不使用时,程序执行的结果,有什么区别,为什么?
答:
使用signal(SIGINT,SIG_IGN)执行后的结果为:
childrenprocess2iskilledbyparent!
Childrenprocess1iskilledbyparent!
Parentprocessiskilled!
当不使用时,执行结果为:
parentprocessiskilled!
语句signal(SIGINT,SIG_IGN)的含义是忽略键盘上的ctrl+c信号,即不执行两子函数son1和son2的调用,所以执行的结果不同。
2)如果屏蔽kill(p1,16),kill(p2,17)操作,执行程序,通过ps–al观察进程PID和PPID号。
答:
屏蔽前有两个父进程,四个子进程;屏蔽后只有一个父进程,两个子进程。
3)在2)基础上再执行ctrl+c,程序运行会出现什么情况?
使用ps–al查看各进程的PID和PPID号,请解释其现象。
答:
有3个父进程,6个子进程。
4)新启动一个终端,在终端下执行“kill父进程号”,使用ps–al观察两个子进程的PID和PPID号。
答:
当终止父进程后,子进程也被终止了。
5)在终端下执行“kill子进程号16”和“kill进程号17”,观察执行结果,并说明。
答:
子进程被终止。
当执行kill子进程号16语句是,即给终端一个信号,将子进程杀死;
6)如果屏蔽两个wait(0)又会出现什么情况?
并说明。
答:
屏蔽之后执行的结果为:
parentprocessiskilled!
Childrenprocess1iskilledbyparent!
Childrenprocess2iskilledbyparent!
语句wait(0)的作用是使进程同步,当屏蔽后就不能使其同步。
实验报告(5)
实验名称
生产者-消费者Linux下C实现
同组人姓名
无
实验性质
□基本操作□验证性
□综合性□设计性
实验日期
2011-4-27
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
通过对本实验的运行与分析,理解PV操作的设计思路,掌握PV操作在生产者消费者进程互斥与同步中的作用。
同时,通过对代码的运行、分析,熟悉Linux下C实现的基本方法,了解系统调用的部分方法及应用。
二、实验内容
1)查询Linux帮助文档,解释下述各个函数的作用
①sleep
(1)
执行另一个命令前等待的时间
②sem_wait(&empty_sem);
减小(锁定)由sem指定的资源信号量的值,即empty_sem的值;若其值大于0,就进行减一操作,并且函数立即返回,若值为0,则一直阻塞直到或信号量变得可以进行减一操作,或者是信号处理程序中断调用
③pthread_mutex_lock(&mutex);
Mutex对象通过调用函数pthread_mutex_lock()来锁住。
如果mutex已经被锁住,调用线程被阻塞直到mutex可用。
该函数返回时,mutex被锁住同时调用线程成为mutex的拥有者;
④pthread_mutex_unlock(&mutex);
Pthread_mutex_unlock()函数释放mutex对象的锁。
释放mutex后的行为取决于mutex类型属性。
如果有多个线程正被次mutex对象阻塞,释放次mutex时,mutex可被获取,调度策略决定哪个线程获取次mutex;
⑤sem_post(&full_sem);
Sem_post()增加(解锁)由sem指向的信号量的值,如果信号量的值因此比0大,那么另一个阻塞在sem_wait(3)上的进程或线程的调用就会被唤醒,之后锁定这个信号量;
⑥sem_init
sem_init()用来初始化一个信号量
⑦pthread_mutex_init
pthread_mutex_init()函数是以动态方式创建互斥锁的,参数attr指定了新建互斥锁的属性。
⑧pthread_create
pthread_create()用于线程创建。
它的的返回值表示线程创建是否成功。
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
⑨pthread_join
函数pthread_join用来等待一个线程的结束。
这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。
如果执行成功,将返回0,如果失败则返回一个错误号。
三、主要设备及软件
PC机一台+VMware软件
四、实验流程、操作步骤或核心代码、算法片段
voidprint()
{
inti;
for(i=0;i printf("%d",buff[i]); printf("\n"); } void*product() { intid=++product_id; while (1) { //用sleep的数量可以调节生产和消费的速度,便于观察 sleep (1); sem_wait(&empty_sem);//减小(锁定)由sem指定的信号量的值 pthread_mutex_lock(&mutex);/Mutex对象通过调用函数pthread_mutex_lock()来锁住 in=in%M; printf("product%din%d.like: \t",id,in); buff[in]=1; print(); ++in; pthread_mutex_unlock(&mutex); sem_post(&full_sem); } } void*prochase() { intid=++prochase_id; while (1) { //用sleep的数量可以调节生产和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验