山大操作系统实验 1.doc

山大操作系统实验 1.doc

ID:55600765

大小:81.00 KB

页数:3页

时间:2020-05-20

山大操作系统实验 1.doc_第1页
山大操作系统实验 1.doc_第2页
山大操作系统实验 1.doc_第3页
资源描述:

《山大操作系统实验 1.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统原理实验报告——实验一张咪软件工程四班一、实验目的加深对于进程并发执行概念的理解。实践并发进/线程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进/线程创建与控制有关的系统调用的编程和调试技术。二、实验要求编写一个多进程并发执行程序。父进程每隔3秒重复建立两个子进程,首先创建的让其执行ls命令,之后创建执行让其执行ps命令,并控制ps命令总在ls命令之前执行。三、实验软硬件环境实验环境均为Linux操作系统,开发工具为gcc和g++。四、实验思路调用fock

2、()创建子进程。创建键盘中断信号后,使用pause()可以暂停子进程执行,继续创建新的子进程。子进程并发执行子进程可以首先通过键盘中断信号唤醒子进程。通过exec()调用族装入一个新的执行程序。在建立子进程2并且唤醒子进程1后子进程sleep(seconds=5)。这样就可以先执行ps后执行ls。。最后就是父进程的结束,程序结束。五、实验模型pid1=fork()pid1=0子进程1执行ps指令pid1>0父进程pid2=fork()pid1<0错误pid2=0子进程b执行lspid2>0父进程每隔三秒重复建立两个子进程pid2<0错误六、调试排错1、首先遇到的问题是,对linux的操作不

3、熟悉,不太明白makefile怎么使用,直接用了gcc2、在创建多个子进程上遇到了问题,在fock()后又直接跟了一个fork(),这样创建的子进程是子进程的子进程,而不是父进程创建的第二个子进程。所以应该在else语句块后面,也就是主进程执行段继续创建。一般情况下,fork()按如下规则编程:main(){pid_tpid;pid=fork();if(pid<0){//建立子进程失败{printf("CreateProcessfail!");exit(EXIT_FAILURE);}if(pid==0)//子进程代码;//如果需要创建子进程,可以按该方法嵌套else//父进程代码//如

4、果需要创建子进程,可以按该方法嵌套}3、后来父进程与子进程无法重复建立,执行一次就结束了,又加了一个while循环实现重复建立,但无法退出,一直执行。又加了一个count计数变量,执行五次后停止。七、实验结果父进程首先创建了子进程a,子进程1暂停。父进程继续创建子进程b。子进程b唤醒了子进程a,子进程a进入sleep()。子进程2执行ps退出,子进程1执行ls。循环五次退出。八、代码#include"pro.h"int main(int argc,char *argv[]){int i;int pid1,pid2;int status1,status2;char *args1[]={"/b

5、in/ls","-a",NULL};char *args2[]={"/bin/ps","-a",NULL};signal(SIGINT,(sighandler_t)sigcat);intcount=0;while(count<5){if((pid1=fork())==0){pause();printf("%d This is child1 running",getpid());status1=execve(args1[0],args1,NULL);}else{pid2=fork();if(pid2<0){printf("Create process pid2 fail");exit

6、(EXIT_FAILURE);}else if(pid2==0){printf("%d This is child2 running",getpid());status2=execve(args2[0],args2,NULL);}else{printf("%dFather:This is father running ",getpid());if(kill(pid2,SIGINT)>=0){waitpid(pid2,&status2,0);sleep(3);printf("%d Father: Child2 finnished",getpid());count++;if(kil

7、l(pid1,SIGINT)>=0){waitpid(pid1,&status1,0);printf("%d Father: Child1 finished.",getpid());}}}}}return (EXIT_SUCCESS);} #include#include#include#include#include

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

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

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