首页 > 其他 > 详细

操作系统 实验三

时间:2020-12-25 23:45:53      阅读:43      评论:0      收藏:0      [点我收藏+]

1. 实验目的及要求

分析进程争用临界资源的现象,学习解决进程互斥的方法。

2. 实验内容

Linux****进程控制 lockf()

利用系统调用lockf(fd,mode,size),对指定区域(有size指示)进行加锁或解锁,以实现进程的同步或互斥。其中,fd是文件描述字;mode是锁定方式,mode=1表示加锁,mode=0表示解锁;size是指定文件fd的指定区域,用0表示从当前位置到文件结尾(注:有些Linux系统是locking(fd,mode,size))

3. 实验源码

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

 

int main()

{

   int pid1, pid2, i;

   lockf(1,1,0);

   printf("\n\ni‘m father\n");

   while ((pid1 = fork()) == -1);

   if(pid1 == 0)

   {

?      lockf(1,1,0);

?      printf("\n\ni‘m son\n");

?      for (i = 0; i < 99; i++)

?         printf(" %d", i);

?      lockf(1,0,0);

?      return 1;

   }

   while ((pid2 = fork()) == -1);

   if(pid2 == 0)

   {

?      lockf(1,1,0);

?      printf("\n\ni‘m daughter\n");

?      for (i = 0; i < 99; i++)

?         printf(" %d", i);

?      lockf(1,0,0);

?      return 2;

   }

   printf("\n");

   return 0;

}

4. 实验结果

技术分享图片

结果分析

首先是在父进程中创建了一个子进程,子进程需要输出文本信息,并且在输出语句执行之前,将标准输出设备锁住,在输出语句执行之后,将标准输出设备解锁。同样,父进程也是要输出文本信息,对标准输出的操作同子进程。这样做能够防止父进程和子进程竞争标准输出(屏幕)资源,即如果父进程正在进行屏幕打印操作,则子进程将无法获得屏幕。

操作系统 实验三

原文:https://www.cnblogs.com/domy/p/14191115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!