【操作系统原理】进程创建与控制

本文通过实例介绍了操作系统原理中的进程调度、fork函数、进程间通信、wait和waitpid函数、exit终止函数、上锁与解锁以及死循环与僵尸进程等内容,展示了在Linux环境下进程创建、同步和控制的过程。
摘要由CSDN通过智能技术生成

相关文章

【操作系统原理】进程调度模拟

【操作系统原理】页面置换算法模拟

【操作系统原理】信号量的应用

【操作系统原理】进程的管道通信

【操作系统原理】Linux多线程的创建和控制

原理

fork函数用于创建当前进程的子进程,创建子进程时,子进程会复制与父进程一样的堆栈段和数据段,和代码段。

而且fork的返回值,在不同进程中,返回的值不一样,在子进程中,是返回0,而在父进程是返回子进程的PID

进程常用函数

等待函数_____wait(int *status):

   1,等待其中一个子进程结束:

      ①status参数,用于保存子进程结束状态的值

   2,发出调用的进制只要有子进程,就会睡眠到子进程中,一个终止为止

   3,如果调用成功,则返回子进程的进程ID,如果没有调用成功,则返回-1

等待指定pid的进程结束_____waitpid(pid_t pid,int *status,int options):

   ①options使用WNOHANG参数,即使没有子进程退出,它也会立即返回,不会像wait那样永远等下去

②status参数,用于保存子进程结束状态的值

终止函数_____exit(int status):

   1,status为返回退出的状态值,可以用wait获取此值

   2,终止本进程

上锁函数_____lockf(fd,mode,size):

   1,fd参数为文字描述字

   2,mode参数为锁定方式,1为加锁,2为解锁

    3,size参数为指定文件的位置,0表示从当前位置到文件尾

内容与过程结果

一、任务1main父进程创建两个子进程,两个子进程不编写自己的代码,编译运行查看效果。

int  main( )

{

  int   a=3;

      printf(“a=%d”,a);

创建两个子进程

}

过程结果:

二、任务2main父进程创建两个子进程, 分别输出两个子进程与父进程的id号。 

过程结果:

由运行结果可知,先执行父进程再按内向外,执行子进程2再执行子进程1

三、任务3在任务2的基础上,在父进程中设置wait函数,等待子进程结束,分别对比与任务3的结果有什么区别,并进行分析。

过程结果:

四、任务4main父进程创建两个子进程, 分别在父进程与子进程设置循环输出,查看运行结果,并分析原因

父进程:

for(i=0;i<50;i++){

       printf(“Father  %d”,i);

}

子进程1:

for(i=0;i<50;i++){

       printf(“Son %d”,i);

}

子进程2:

for(i=0;i<50;i++){

       printf(“Daughter  %d”,i);

}

分别在父进程与子进程设置循环输出,可以看到子进程和父进程发生冲突

五、任务5任务4的基础上,使用lockf函数进行资源锁定。

lockf(1,1,0)加锁,lockf(1,0,0)解锁

父进程:

lockf(1,1,0)

for(i=0;i<50;i++){

       printf(“Father  %d”,i);

}

lockf(1,0,0);

子进程1:

lockf(1,1,0)

for(i=0;i<50;i++){

       printf(“Son %d”,i);

}

lockf(1,0,0)

子进程2:

lockf(1,1,0)

for(i=0;i<50;i++){

       printf(“Daughter %d”,i);

}

lockf(1,0,0)

六、任务6:在父进程中设置一个死循环,通过Linux的查看进程命令,检查子进程是否变成僵尸进程。

父进程进入死循环,子进程没有执行

  • 26
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值