bx121028俞佳星实验3 linux进程的同步与互斥

ID:9982203

大小:325.00 KB

页数:5页

时间:2018-05-19

bx121028俞佳星实验3 linux进程的同步与互斥_第1页
bx121028俞佳星实验3 linux进程的同步与互斥_第2页
bx121028俞佳星实验3 linux进程的同步与互斥_第3页
bx121028俞佳星实验3 linux进程的同步与互斥_第4页
bx121028俞佳星实验3 linux进程的同步与互斥_第5页
资源描述:

《bx121028俞佳星实验3 linux进程的同步与互斥》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统原理实验》报告书电子信息学院实验报告书课程名:《操作系统原理实验》题目:实验3Linux进程的同步与互斥实验类别:【设计】班级:BX1210学号:121003531028姓名:俞佳星评语:实验态度:认真()一般()差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()不懂()操作技能:强()一般()差()实验报告:好()一般()差()成绩:指导教师:苏庆刚批阅时间2014年10月31日《操作系统原理实验》报告书一、实验内容1.用fork()创建一个进程,再调用execl()用新的程序替换该子进程的内容2.利用wait()来控制进程执

2、行顺序3.修改实验上述,用lockf()来给每一个进程加锁,以实现进程之间的互斥4.观察并分析出现的现象二、实验目的与要求1.掌握进程另外的创建方法2.熟悉进程的睡眠、同步、撤消等进程控制方法3.进一步认识并发执行的实质4.分析进程竞争资源的现象,学习解决进程互斥的方法三、实验环境RedHatLinux9;用户名:root,密码:123456四、实验步骤1、实验准备知识(1)execl()系列系统调用execl()系列,也可用于新程序的运行。fork()只是将父进程的用户级上下文拷贝到新进程中,而execl()系列可以将一个可执行的二进制文件覆盖在新进程的用户级上

3、下文的存储空间上,以更改新进程的用户级上下文。execl()系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果execl()调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id与调用进程相同。(2)execl()和fork()联合使用系统调用execl()和fork()联合使用能为程序开发提供有力支持。用fork()建立子进程,然后在子进程中使用execl(),这样就实现了父进程与一个与它完全不同子进程的并发执行。一般,wait、execl联合使用的模型为:i

4、ntstatus;............if(fork()==0){...........;execl(...);...........;}wait(&status);(3)wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。(4)exit()终止进程的执行。系统调用格式:   voidexit(status)  intstatus;其中,status是返回给父进程的一个整数,以备查考。(5)lockf

5、(files,function,size)用作锁定文件的某些段或者整个文件。《操作系统原理实验》报告书本函数的头文件为#include"unistd.h"参数定义:intlockf(files,function,size)intfiles,function;longsize;2、实验任务分析在linux中用编写c语言程序,用fork()创建一个进程,再调用execl()用新的程序替换该子进程的内容。同时用wait()来控制进程执行顺序。最后用lockf()来给每一个进程加锁,以实现进程之间的互斥3、源程序实验1:#include#include<

6、unistd.h>main(){intpid;pid=for();switch(pid){case-1:printf(“forkfail!”);exit(1);case0:execl(“/bin/ls”,”ls”,”-1”,”-color”,NULL);printf(“execfail!”);exit(1);default:wait(NULL);printf(“lscompleted!”);exit(0);}}实验2:#include#includemain(){intp1,p2,I;while((p1=fork(

7、))==-1);if(p1==0){lockf(1,1,0);for(i=0;i<10;i++)printf(“daughter%d”,i);lockf(1,0,0);}else{While((p2=fork())==-1);If(p2==0){《操作系统原理实验》报告书lockf(1,1,0);for(i=0;i<10;i++)printf(“son%d”,i);lockf(1,1,0);}else{lockf(1,1,0);for(i+0;i<10;i++)printf(“parent%d”,i);lockf(1,0,0);}}}一、结果分析与实验

8、体会1、实

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
正文描述:

《bx121028俞佳星实验3 linux进程的同步与互斥》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统原理实验》报告书电子信息学院实验报告书课程名:《操作系统原理实验》题目:实验3Linux进程的同步与互斥实验类别:【设计】班级:BX1210学号:121003531028姓名:俞佳星评语:实验态度:认真()一般()差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()不懂()操作技能:强()一般()差()实验报告:好()一般()差()成绩:指导教师:苏庆刚批阅时间2014年10月31日《操作系统原理实验》报告书一、实验内容1.用fork()创建一个进程,再调用execl()用新的程序替换该子进程的内容2.利用wait()来控制进程执

2、行顺序3.修改实验上述,用lockf()来给每一个进程加锁,以实现进程之间的互斥4.观察并分析出现的现象二、实验目的与要求1.掌握进程另外的创建方法2.熟悉进程的睡眠、同步、撤消等进程控制方法3.进一步认识并发执行的实质4.分析进程竞争资源的现象,学习解决进程互斥的方法三、实验环境RedHatLinux9;用户名:root,密码:123456四、实验步骤1、实验准备知识(1)execl()系列系统调用execl()系列,也可用于新程序的运行。fork()只是将父进程的用户级上下文拷贝到新进程中,而execl()系列可以将一个可执行的二进制文件覆盖在新进程的用户级上

3、下文的存储空间上,以更改新进程的用户级上下文。execl()系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果execl()调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id与调用进程相同。(2)execl()和fork()联合使用系统调用execl()和fork()联合使用能为程序开发提供有力支持。用fork()建立子进程,然后在子进程中使用execl(),这样就实现了父进程与一个与它完全不同子进程的并发执行。一般,wait、execl联合使用的模型为:i

4、ntstatus;............if(fork()==0){...........;execl(...);...........;}wait(&status);(3)wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。(4)exit()终止进程的执行。系统调用格式:   voidexit(status)  intstatus;其中,status是返回给父进程的一个整数,以备查考。(5)lockf

5、(files,function,size)用作锁定文件的某些段或者整个文件。《操作系统原理实验》报告书本函数的头文件为#include"unistd.h"参数定义:intlockf(files,function,size)intfiles,function;longsize;2、实验任务分析在linux中用编写c语言程序,用fork()创建一个进程,再调用execl()用新的程序替换该子进程的内容。同时用wait()来控制进程执行顺序。最后用lockf()来给每一个进程加锁,以实现进程之间的互斥3、源程序实验1:#include#include<

6、unistd.h>main(){intpid;pid=for();switch(pid){case-1:printf(“forkfail!”);exit(1);case0:execl(“/bin/ls”,”ls”,”-1”,”-color”,NULL);printf(“execfail!”);exit(1);default:wait(NULL);printf(“lscompleted!”);exit(0);}}实验2:#include#includemain(){intp1,p2,I;while((p1=fork(

7、))==-1);if(p1==0){lockf(1,1,0);for(i=0;i<10;i++)printf(“daughter%d”,i);lockf(1,0,0);}else{While((p2=fork())==-1);If(p2==0){《操作系统原理实验》报告书lockf(1,1,0);for(i=0;i<10;i++)printf(“son%d”,i);lockf(1,1,0);}else{lockf(1,1,0);for(i+0;i<10;i++)printf(“parent%d”,i);lockf(1,0,0);}}}一、结果分析与实验

8、体会1、实

显示全部收起
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭