- 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…
大致与未上锁的输出结果相同,也是随着执行时间不同,输出结果的顺序有所不同。
分
您可能关注的文档
最近下载
- 2023年江苏省徐州市中考数学试卷.docx VIP
- 微党课认真落实三会一课制度PPT模板课件.pptx VIP
- 常见引流管的护理ppt课件.pptx
- 征兵理论考试题库及答案2025.docx VIP
- ZD中大力德 C20-800LRC驱动器说明书_V1.04.docx VIP
- 山西省英语中考试题及解答参考(2025年).docx VIP
- 05系列建筑标准设计图集05J7-1内装修-墙面、楼地面(上_共二册).pdf VIP
- 语文高考现代文阅读训练试题及答案共50篇.pdf VIP
- 区域数字基础设施碳足迹评估模型构建.pdf VIP
- 2025年特许金融分析师权益投资组合管理策略专题试卷及解析.pdf VIP
原创力文档

文档评论(0)