2023年操作系统原理实验报告.pdf





《2023年操作系统原理实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年操作系统原理实验报告.pdf(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统原理实验报告学 院:专 业:班级:_学 号:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _姓 名:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _202 3-2 0 2 3学 年 第2学期目录实验1 进程管理.2实验2 进程通信9。实验3 存储管理15。实验4 文献系统2 4。实验1 进程管理一、实验目的1.弄清进程和程序的区别,加深对进程概念的理解。2.了解并发进程的执行过程,进一步结识并发执行的实质。3.掌握解决进程互斥使用资源的方法。二、实验内容1.管道通信使用系统调用P i p e()建立一个管道,然后使用系统调用fork()创 建 2 个子进程p
2、l和 p2。这 2 个子进程分别向管道中写入字符串:“C hild p r o c e s s pl is s ending mess a ge!和 Chil d p r oc e ss p2 is s e ndi n g mess a g e!,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。2.软中断通信使用系统调用f ork()创建2 个子进程p l和 p2,在父进程中使用系统调用signal()捕获来自键盘上的软中断信号SIGINT(即按C tC-C),当捕获到软中断信号S I G I N T后,父进程使用系统调用kill()分别向2 个子进程发出软中断信号SIGUSR1和
3、 SIGUSR2,子进程捕获到信号后分别输出信息“C h il d p r o c e s s pl is killed b y parent!和 Chi 1 dproc e ss p2 is killed b y pa r e n t!”后终止。而父进程等待2 个子进程终止后,输出信息u Parent pr o c e s s i s k i 1 led!”后终止。三、实验规定1.根据实验内容编写C 程序。2.上机调试程序。3.记录并分析程序运营结果。四、程序说明和程序流程图实 验 1 管道通信一一所涉及的流程图:父迸程返回?A实验2 软中断信号一一所涉及的流程图:A初始化否创 建 硼?是创
4、 建 飒?创 建 播 程 P2父进程返回?监听软中断父进程返回?是结束父进程五、程序代码/*ex p el_l.c*/#i n elude vo i d ma i n()(in t i,r,pl,p2,fd 2 ;char b u f 5 0 ,s 5 0;p ip e(fd);/*父进程建立管道*/w h ile(pl=fo r k()=-1);/*创建子进程Pl,失败时循环*/if (p 1=0)/*由子进程P 1 返回,执行子进程Pl*/lockf(fdl,1,0);/*加锁锁定写入端*/s P r i ntf(b uf,Child pro c e ss Pl is sen d in g
5、 message s!n);prin t f(Ch i Id proces s P l!n );wr i te(f dllj,buf,50);/*把 b u f 中的50个字符写入管道*/sleep(5);/*睡眠5 秒,让父进 程 读*/lo c kf(fd 1,0,0);/*释放管道写入端*/ex i t(0);/*关闭 Pl*/1e 1 se/*从父进程返回,执行父 进 程*/while(p 2=fo r k()=-1);/*创建子进程P2,失败时循环*/if(p2=0)/*从子进程P 2 返回,执行子进程P 2*/(lo c k f(fd l,1,0);/*锁定写入端*/s print
6、f(b uf,Ch i I d pro c es s P 2 is se n d ing mes s ages!n);p ri n tf(C h ild process P2!n);wr i te(fdl,buf,50);/*把 buf中的字符写入管道*/sle e p(5);/*睡眠5 秒,让父进程读*/lock f(fd 1 J,0,0);/*释放管道写入端*/ex i t(0);/*关闭 P2*/wa i t(0);if(r=read(fd0,s,5 0)=-1)printf(c an n o t re a d p i pe!n);e Ise printf(n%su,s);wa i t(
7、0);if(r =re a d(f d0,s,50)=-1)pr i ntf(M c anno t r e ad p i p e!nM);else pri n tf(%s,s);exit(0);)/*e x pl-2.c*/#i n c 1 ude#i n clud e#in c ludeintpl,p2;v o id main()(void ppdo();v o id pld o();void p 2 do();signal(SIGINT,p p d o);p l=f o r k();if(p 1 =0)(s ig n a l (SIGUSR1,pldo);fo r(;);)else p 2
8、=f o rk();if(P 2=0)s i g n a 1(S I G US R 2,p2d o);for(;);wai t(0);wait(0);printf(Hn P a r e nt proc e ss i se x it(0);v o id p p do()(kill(pl,SIGUSR1);ki 1 1(p 2,SIGUSR2);)vo i d p 1 do()(pri n tf(MnCh i Id p r oce s s ple x i t(0);)v o i d p 2 d o()(pr i ntf(nC hil d proc e sskilled!n u);i s k i l
9、ied b y p a r e nt!nn);p 2 i s k i 1 led by parent!n);exit(O);六、程序运营结果及分析 C G ubuntuubuntu-R41 OCP:文件(F)编辑(E)查看(V)搜索(S)终端(T)帮助(H)ubuntuubuntu-R410CP:gcc 123.c-o 123ubuntuubuntu-R410CP:./123child rocess p2child rocess plchildren P2 is sending message!children Pl is sending message!ubuntuubuntu-R410CP
10、:|实 验 1 管道通信运营结果截图实 验 1管道通信结果分析父进程建立后,创建了子进程P1,P2,然 后 P 1,P 2 分别向管道中写入字符串“Childproces s pl i s s en d ing messag e!n 和“Child pr o cess p 2 i s send i ng me s sage!”,父进程从管道中读取字符串。实验2 软中断通信运营结果截图 f C ubuntuubuntu-R410CP:文件(F)编辑(E)查看(V)搜索(S)终端(T)帮助(H)jbuntu ubuntu-R410CP:gedit 12345.cjbuntuubuntu-R410C
11、P:-$gcc 12345.c-o 12345jbuntuubuntu-R410CP:-$./12345Child process 1 is k ille d by parent!Child process 2 is k ille d by parent!Parent process is k ille d I!jbuntu ubuntu-R410CP:|实验2 软中断通信结果分析先 预 设 中 断 信 号 SIG I N T,再 先 后 创 建 子 进 程 P 1 和 P2,预 设 中 断 信 号 SIGUSR1,SIGUER 2,当我们按下“Ctrl+C”时,父进程发出中断信号SIGU S
12、 R 1 和 SIGUSR2,告知子进程P 1 和 P2,子进程捕获到信号后分别输出相应的信息后,终止,最后输出u Parent proce s s is k ille d!”后终止。实验后思考:通过这次实验,深刻地了解到了管道通信和软中断通信的具体过程,深化了老师课堂上的讲解,对整个过程的把握也更加清楚了.很值得的一次学习经历,做完实验,再画流程图,程序运营的细节熟悉于心,了如指掌。七.指导教师评议成绩等级实验2 进程通信一、实验目的1.了解进程间通信I P C的三种方式:消息队列、共享内存和信号量。2.掌握使用消息队列进行进程间通信的有关系统调用和编程方法。3.掌握使用共享内存进行进程间通
13、信的有关系统调用和编程方法。二、实验内容1.消息队列使用系统调用msgg e t()、msgsn d()、msgrcv()和 msgctl(),用消息队列机制实现客户进程和服务器进程间的通信。客户进程一方面建立一个描述符为msgqid的消息队列,接着向服务器进程发送一个消息正文为自己的进程标记P i d 且类型为1 的消息,然后接受来自服务器进程的消息,并在屏幕上显示:C 1 ient rece i v e s a m e ssage from xx xx!”,其 中“xxxx”为服务器进程的进程标记。服务器进程一方面捕获软中断信号(除不能捕获的SIGK I LL),若捕获届时则调用函数c l
14、eanup()删除消息队列,终止服务器进程。否则反复下列操作:接受所有类型为1 的消息,并在屏幕上显示:“Se r ver rece i ve s amessage from xxxx!w,其 中“xxxx”为客户进程的进程标记;然后服务器进程将客户进程的进程标记作为返回消息的类型,而将自己的进程标记作为消息正文发送给客户进程。2 .共享内存使用系统调用shm ge t()、s hmat()和s h m ctl(),用共享内存机制实现进程间的通信。其中一个进程向共享内存中写入数据,另一个进程从共享内存中读出数据并显示在屏幕上。三、实验规定1.根据实验内容编写C 程序。2.上机调试程序。3.记录
15、并分析程序运营结果。四、程序说明和程序流程图实 验 1消息队列流程图五、程序代码实 验 1消息队列/*m s g _client.c*/#i n elude#include#i n clud e#def i ne MSGKE Y 7 5s true t msgform(1 o ng m t ype;char mtex t 256;)m a in()(s t ruct ms g form m sg;int m s gqi d,pid,*pint;/*文献主同组用户 其他用户rw x rwxrwx*/msg q i d=msgget(MS G KE Y,0 77 7);/*rw-rw-rw*/p
16、i d=getpid();p int=(in t*)ms g.mtext;*pint=pid;ms g.m t ype=1 ;msgsnd(msg q id,&msg,sizeof(i n t),0);msgre v(msgqid,&msg,25 6,p i d,0);prin t f(c l i e n t:rec e i ve fr o m p i d%d n n,*pint);)/*msg_ se r ver.c*/#i n clud e#i nc 1 ude#in c lude#defin e MSGKEY 75str u c t m s gfo r m lo n g mtype;c
17、h ar mtext2 5 6;msg;i n t msgqid;m a in()(in t i,pid,*p i nt;e x t ern c 1 e a n u p();for(i=0;i2 0;i+)sign a 1 (i,c lea n up);msg q i d=msgget(MSGKEY,07 77 I IPC_CREAT);fo r(;;)msgrc v(msgqid,&msg,256,1,0);p int=(i n t*)msg.m t e xt;pid=*pint;p rintf(se r v e r:rec e i v e fr o m pid%dnn,p i d);m s
18、 g .mtype=pid;*pint=getpid();msgsn d(m s g q i d,&msg,sizeof(int),0);c 1 eanup()msgctl(m s g qid,I PCRMID,0);exit(O);)实验2 共享内存#i nclude#i n c lude#include#de f i neSHM KE Y 75#de fineK 1 024i n t shm i d;main()(int i,*p int;c h a r*a ddr;extern c har*shmat();shmid=shmge t(SHMKEY,8*K,a d d r=s hma t(
19、s h mid,0,0);p i n t=(int*)ad d r;wh i 1 e(*pint=O)fo r(i=0;i2 5 6;*pint+)printf(H%dn u,*p i nt+);)#i n c 1 u d e0 7 7 7);#i n c 1 ude#in c 1 ud e#defineSHMKEY 75#define K 1024int shmid;m a i n()(i n t i,*p in t;char*a d d r;extern c h ar*shm a t();ex t e rn c le a n up();for(i=0;i 20;i+)s i nal(i,c
20、 le a n u p);sh m i d=s hmget(SHMKEY,16*K,0 7 77|IPC_C REAT);a ddr=s h m a t(shmid,0,0);p r i n tf(Haddr 0 x%x n,a d d r);pi n t=(int)add r;f o r (i=0;i25 6;i+)*pint+=i;p i nt=(i n t*)addr;*p i nt=256;p a us e();)c 1 eanup()(shmc t 1 (s hmid,I PC_RMID,0);ex i t(0);)六、程序运营结果及分析实 验 1消息队列运营结果截图客户端:.fuq
21、unqin(S)fuqunqin-virtual-machine:clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-machine:$./2.1clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-machine:$./2.1clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-m achine./2.1clie n t:receive from pid 2294fuqunqtngfuqunqtn-virtual-ma
22、chine:$./2.1clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-m achine./2.clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-m achine./2.1clie n t:receive from pid 2294fuqunqtngfuqunqin-virtual-m achine./2.1clie n t:receive from pid 2294fuqunqingfuqunqin-virtual-m achine./2.1clie n t:rece
23、ive from pid 2294fuqunqingfuqunqin-virtual-m achine./2.1clie n t:receive from pid 2294fuqunqtngfuqunqin-virtual-m achine./2.1clie n t:receive from pid 2294fuqunqinfuqunqin-virtual-machine:$./2.1clie n t:receive from pid 2294fuqunqtnfuqunqtn virtual-machine:一$服务器端:fuqunqin)fuqunqin-virtual-machine:./
24、2.11server:jserver:server:server:server:server:server:server:server:server:server:AAA|receive fromptd 2297receive frompid 2298receive fromptd 2299receive frompid 2300receive frompid 2301receive frompid 2302receive frompid 2303receive frompid 2304receive frompid 2305receive fromptd 2306receive frompi
25、d 2307实 验 1消息队列结果分析服务端程序监听软中断,建立消息队列,循环在队列中接受类型为1 的消息,每接受一个消息向队列中增长一个类型为客户进程ID 的消息。当发生软中断时,删除消息队列。客户端进程创建和服务端相同的消息队列,并向消息队列中发送类型为1 的消息,然后接受类型为客户进程ID 的消息。实验后思考:对消息队列的运营情况有所了解,但关于内存共享部分尚需仔细研究。Q Q fuqunqin)fuqunqin-virtual-machine:-jfuqunqinfuqunqin-virtual-machine:$./2.,2bash:./2.,2:No such file or di
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 操作系统 原理 实验 报告

限制150内