实验四 进程管理 进程互斥实验.docVIP

  • 66
  • 0
  • 约1.1千字
  • 约 3页
  • 2020-10-05 发布于浙江
  • 举报
实验四 进程管理 进程互斥实验 实验目的 1、进一步认识并发执行的实质 2、分析进程竞争资源的现象,学习解决进程互斥的方法 实验内容 1、修改实验(一)中的程序 2,用 lockf( )来给每一个进程加锁,以实现进程之间的 互斥 2、观察并分析出现的现象 实验所涉及的系统调用 lockf(files,function,size) 用作锁定文件的某些段或者整个文件。 本函数的头文件为 #include unistd.h 参数定义: int lockf(files,function,size) int files,function? long size? 其中:files是文件描述符;function 是锁定和解锁:1 表示锁定,0 表示解锁。size 是锁定或解锁的字节数,为 0,表示从文件的当前位置到文件尾。 参考程序 #include stdio.h #include unistd.h main( ) { int p1,p2,i? while((p1=fork( ))= = -1)? if (p1= =0) { lockf(1,1,0)? /*创建子进程 p1*/ /*加锁,这里第一个参数为 stdout(标准输出 设备的描述符)*/ for(i=0?i10?i++) printf(daughter %d\n,i)? lockf(1,0,0)? /*解锁*/ } else { while((p2=fork( ))= =-1)? /*创建子进程 p2*/ if (p2= =0) { lockf(1,1,0)? /*加锁*/ for(i=0?i10?i++) printf(son %d\n,i)? lockf(1,0,0)? /*解锁*/ } else { lockf(1,1,0)? /*加锁*/ for(i=0?i10?i++) printf( parent %d\n,i)? lockf(1,0,0)? /*解锁*/ } } } 运行结果 parent… son… daughter.. daughter.. 或 parent… son… parent… daughter… 大致与未上锁的输出结果相同,也是随着执行时间不同,输出结果的顺序有所不同。 分

文档评论(0)

1亿VIP精品文档

相关文档