



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大学实验报告 -(2)编程模拟进程间的同步和互斥学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。学会使用信号量解决资源共享问题。学生可以自己选择在Windows或Linux系统下编写。二. 实验要求1、 linux操作系统2、 Windows操作系统三、主要实验步骤linux操作系统下的操作步骤: gedit semaphore.c (编辑程序)gcc o semaphore semaphore.c (编译、链接程序)./semaphore(执行程序)四、实验内容1以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。#include#include#include#include#include#include#include#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME /tmp/sem_aaa#define DELAY 4000000void update_file(int sem_set_id, char *file_path, int number)struct sembuf sem_op;FILE *file;/等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);/写文件,写入的数值是当前进程的进程号file=fopen(file_path,w);if(file)/临界区fprintf(file,%dn,number);printf(%dn,number);fclose(file);/发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);/子进程写文件void do_child_loop(int sem_set_id,char *file_name)pid_t pid=getpid();int i,j;for(i=0;i3;i+)update_file(sem_set_id,file_name,pid);for(j=0;j4000000;j+);int main(int argc,char *argv)int sem_set_id; /信号量集的IDunion semun sem_val; /信号量的数值,用于semctl()int child_pid;int i;int rc;/ 建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id=-1)perror(main: semget);exit(1);/把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc=-1)perror(main:semctl);exit(1);/建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;iNUM_PROCS;i+)child_pid=fork();switch(child_pid)case -1: perror(fork);case 0: /子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: /父进程接着运行break;/等待子进程结束for(i=0;iNUM_PROCS;i+)int child_status;wait(&child_status);printf(main:were donen);fflush(stdout);return 0;2模拟PV操作同步机构,且用PV操作解决生产者消费者问题。模拟PV操作同步机构,且用PV操作解决生产者消费者问题。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 砌筑工理论考试题及答案
- 2025年物业管理合同纠纷调解协议(GF-97-1010)
- 2025年广西壮族自治区中央遴选笔试真题(B卷)试题及参考答案
- 2025年广西三支一扶考试笔试试题(含答案)
- 销售合同标准化审核清单
- 文学招聘考试题库及答案
- 农村土地互换与资源整合合同书
- 化工实验室考试题及答案
- 矿企招聘考试内容及答案
- 无锡一中高考试卷及答案
- 《建筑电气安装》课件
- 2025至2030中国氨基酸市场行情监测与发展前景研究报告
- 2025-2030全球及中国自动制动系统行业市场现状供需分析及投资评估规划分析研究报告
- 初中英语仁爱版单词表(按单元顺序)(七至九年级全6册)
- 《山东省房屋市政施工安全监督要点》及《安全监督“二十要”》2025
- 第九章《静电场及其应用》单元同步测试卷-2021-2022学年高二上学期物理人教版必修第三册
- 手术室急危重患者抢救与配合
- 2024年中小学学校传染病疫情及突发公共卫生事件报告制度
- 2025年湖南环境生物职业技术学院单招职业技能考试题库带答案
- 本科毕业论文完整范文(满足查重要求)城市社区部分居民失业的现状、问题与对策研究
- 生物安全管理体系文件
评论
0/150
提交评论