操作系统实验报告.docx
《操作系统实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告.docx(29页珍藏版)》请在课桌文档上搜索。
1、操作系统实验报告目录:一、实验一41 .实验目的-42 .实验内容43 .实验要求-44 .实验设计45 .实验程序46 .实验结果一一47 .实验感想一一5二、实验二51 .实验目的-52 .实验内容-53 .实验要求-54 .实验设计一-55 .实验程序66 .实验结果87 .实验感想8三、实验三81 .实验目的-82 .实验内容83 .实验要求84 .实验设计95 .实验程序-106 .实验结果117 .实验感想11四、实验四111 .实验目的-112 .实验内容113 .实验要求-114 .实验设计125 .实验结果-166 .实验感想-17五、实验五171 .实验目的-一-172 .
2、实验内容-一-173 .实验要求-174 .实验设计175 .实验程序186 .实验结果197 .实验感想19六、实验六201 .实验目的一一202 .实验内容203 .实验要求-204 .实验设计205 .实验结果236 .实验感想一一24七、实验七241 .实验目的一一242 .实验内容243 .实验要求一一-244 .实验设计一一255 .实验程序276 .实验结果287 .实验感想28实验一UNIX/LINUX入门一、实验目的了解UNIX/LINUX运行环境,熟悉UNlX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下C语言程序的编写、编译、调试和运行方法。二、实验内容熟悉
3、UNIX/LINUX的常用基本命令如Is、who、pwd、ps等。练习UNIX/LINUX的文本行编辑器Vi的使用方法熟悉UNIX/LINUX下C语言编译器cc/gcc的使用方法。用Vi编写一个简单的显示-Hello,World!c语言程序,用gcc编译并观察编译后的结果,然后运行它。三、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计1.inux系统常用命令格式:commandoptionargument1argument2.五、实验程序#include#includeintmain(void)(printf(HelloWorl
4、d!n);system(pause();return0;1六、实验结果七、实验感想LUbUntUJbUntu:文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)orunacommandasadministrator(userroot),usesudo.Seemansudorootfordetails.YAubuntUQUbUntu:$Isl.c.c1.JbUnt岬JbUntu:Sgcc-ogcctestl.cjbuntuubuntu:*$Isl.cl.cJbUnt照UbUntU:$./gcctestHelloWorld!ubuntiaubuntuz-S通过第一次室验,熟悉了LlNUX
5、系统的操作,终端的使用,GCC编译C程序实验二进程管理一、实验目的加深对进程概念的理解,明确进程与程序的区别:进一步认识并发执行的实质。二、实验内容(1)进程创建编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。(2)进程控制修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。(3)进程的管道通信编写程序实现进程的管道通信。使用系统调用PiPeo建
6、立一个管道,二个子进程Pl和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进程从管道中读出二个来自子进程的信息并显示(要求先接收Pl,再接收P2)。三、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计1、功能设计实验要求建立一个管道实现父进程和子进程间的通信,子进程有两个,子进程向管道里写数据,父进程从管道里读出数据。管道的作用是将两个缓冲区相关连起来,使得一个缓冲区写的东西可以从另一个缓冲区读出来,遵循先进先出的顺序。程序的顺序是这样的:先创建子进程1
7、,向管道写入一句话,子进程1结束后创建子进程2,向管道写入一句话,最后父进程从管道中读出。2、数据结构子进程:使用PiCLtfork。函数创建,返回值为子进程号。管道:使用intpipe(intfiledis)创建无名管道,filedis2为两个文件描述符。3、程序框图五、实验程序#include#include#includeintpipe(intfiledis2);#defineINPUTO#defineOUTPUT1intmain()(intfile-descriptors2;pid_tpidl,pid2;定义子进程charbuf256;intretumed_count;pipe(fil
8、e_descriptors);创建无名管道if(pidl=fork()=-l)创建子进程1(printf(HErroronforkn,t);exit(l);)if(pid1=0)fprintf(inthespawned(childI)processn);CIoSe(file_descriptOrSuNPUT);关闭通道的读端write(file-descriptorsOUTPUTJ,childlissendingmessage,strlen(childIissendingmessage);向管道中写一句话exit(O);else(if(pid2=fork()=-l)创建子进程2(printf(
9、MErroronforkn);exit(l);1if(pid2=0)(printf(,inthespawned(child2)processn);close(file_descriptorsINPUT);关闭通道的读端write(file-descriptorsOUTPUT,child2issendingmessage,strlen(child1issendingmessage);向管道中写一句话exit(0);1else(父进程printf(,intheparentprocessnt);CloSe(file_descriptorsOUTPUT);关闭管道的写端returned_count=r
10、ead(file_descriptorsINPUT,buf,sizeof(buf);printf(,%dbytesofdatareceivedfromspawnedprocess:%sn,returneCLCOUnt,buf);父进程从管道中读出数据)1returnO;六、实验结果心应用程序位置系统力I Oe ubutu(ubunt: l文件(F)编辑(E)查看(V)搜索(S)终端(T)帮助(H)To run a command as See man sudo root安装Uubuntuubuntu:$ 2.cUbuntixaubuntu :-$Is22222c: In c:19: c:26:
11、 c:33: C:49:function warning: warning: warning: warning:UbUntuIbUntUT2.c gcctest ubuntuubuntu:$画中 ES 12月13日星期二12:56下午 Q ubuntufunction function function function,exit, *exit, *exit, *exit,built-in built-in built-in built-inof of of ofadministrator (user root), use sudo . for details.2.Cgcc -0 gcctes
12、t 2.c main:incompatible implicit incompatible implicit incompatible implicit incompatible implicit Is gcctest 2.cdeclaration declaration declaration declaration./gcctestin the parent processin the spawned (child2) process25 bytes of data received from spawned process:child2 ubuntuubuntu:-$ in the sp
13、awned(childl)processis sending message$7 ubuntu目 UbUntUUbUntu:由图可知,父进程先后接受了子进程向管道写入的两句话,并成功地打印出来。两个子进程分别向管道写入了25个字符,并且是子进程1先写的,子进程2后写的,故输出的顺序也是如此。七、实验感想通过本次实验,我们对进程的概念加深了理解,熟悉了进程的创建方法与作用机制,明确了进程与程序的异同。同时,我们掌握了使用管道通信的机制,进一步认识了并发执行的实质。实验三一个进程启动另一个程序的执行一、实验目的编写Linux环境下,fork。与exec()的结合使用实现一个进程启动另一个程序的执行
14、的基本方法,掌握exec()的几种调用方法。二、实验内容父进程从终端读取要执行的命令,并交给子进程执行。父进程等待子进程结束,并打印子进程的返回值。提示:从终端读取要执行的命令可用fgets()实现。三、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计1、功能设计根据实验要求,父进程和子进程将被分配不同的任务:父进程从终端读取要执行的命令交给子进程,然后等待子进程技术打印子进程的返回值;子进程执行父进程读取的命令并返回给父进程。因为子进程执行命令需要打开其他文件,所以需要使用exec()类的函数实现在一个进程来启动另一个程序,在这
15、里应使用exedp()函数从PATH环境变量中查找文件并执行。对于父进程,可以调用fget()从终端读取要执行的命令,以字符串形式存储然后交给子进程执行,待子进程执行完毕后接收子进程返回值并打印。由于要求带参数的命令也可以执行,那么需要在父进程中fets两次,第一次gets得到命令给串command,然后gets参数给串Commandl,并且将这两个参数分别传到子进程的exec()函数,其中前两个都是command,第三个是commandlo2、数据结构用Char*型全局变量command存放指令用Char*型全局变量Commandl存放参数3、程序框图条件?结束五、实验程序#includec
16、harcommand256;charcommandl256J;intmain()(intrtn;子进程的返回数值interrorno;while(l)printf();/从终端读取要执行的命令ets(command,256,stdin);printf(rootlocalhostroot#Isroot(?IocaIhostrootlit./4.gconfd.gnome.gnome2.gnomeZ_priuate.gnome-desktop.gstreamer.gtkrc.gtkrc-l.Z-gnomeZ.ICEauthorityinsta11.loginstal1.log.syslog.meta
17、city.mozilia.nautiIus.recently-used.tcshrctestZ.ctest.ctexttetZtet2.ctext.c.text.c.so.text.c.sup.thumbnails.Trash.viminfo.Xauthority.Xresources由图可知,执行了IS命令,参数为文件按字母顺序显示六、实验感想通过本次实验,我学会了如何用exedp()函数达到一个进程启动另外一个程序的目的。并且对exedp()的几个参数的作用有了一定了解,别且对于fork。和exelp()联合使用的方法和功能。同时,我们进一步熟悉了LINUX系统操作环境,学习了在LlNUX
18、环境下编译和调试程序的技巧。实验四基于消息队列和共享内存的进程间通信2. 一、实验目的3. 1.inux系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉:4. 1.Linux支持的消息通信机制及其使用方法5. 1.inux系统的共享存储区的原理及使用方法。二、实验内容1 .消息的创建、发送和接收使用消息调用msgget()、msgsnd()、msggrev()、msgctrl()编制长度为IK的消息的发送和接收程序。2 .共享存储取得创建、附接和断接使用系统调用shmget()shmat()ShmCtI()、shmctlO,编制一个与上述功能相同的程序。三
19、、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计1、消息的创建、发送和接收(1)功能设计为了实现进程之间消息的创建、发送和接收,首先应定义两个子进程,Server进程负责发送,Client进程负责接收,父进程负责创建。其次需要用到InSgget()、InSgSnd()、msggrev().InSgCtr1()等函数进行对消息的控制。题目要求消息长度为IK,那么msgsnd(id,msgp,size,flag)和msgrcv(id,msgp,size,type,flag)函数中参数size应设为1024,msgget(key,fl
20、ag)中的key应为75。父进程获得创建消息后,子进程Server先后发送编号为广10的10条消息,子进程CIient先后接收这11条消息,方能达到实验目的。(2)数据结构消息(mymsg):结构体实现,包含的成员变量有消息类型和消息内容,具体实现如下:struct mymsg long int mymsgtype; int text;消息的结构体声明消息类型消息内容;(3)程序框图(4)程序#include消息结构体消息类型消息内容#include#include#include#include#include#defineMAX1024structmymsglongintmymsgtype
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告

链接地址:https://www.desk33.com/p-850897.html