这个是很经典的问题实验题目:生产者与消费者(综合性实验)实验环境:C语言编译器实验内容:①由用户指定要产生的进程及其类别,存入进入就绪队列。
  ②调度程序从就绪队列中提取一个就绪进程运行。
如果申请的资源被阻塞则进入相应的等待队列,调度程序调度就绪队列中的下一个进程。
进程运行结束时,会检查对应的等待队列,激活队列中的进程进入就绪队列。
运行结束的进程进入over链表。
重复这一过程直至就绪队列为空。
  ③程序询问是否要继续?如果要转直①开始执行,否则退出程序。
实验目的:通过实验模拟生产者与消费者之间的关系,了解并掌握他们之间的关系及其原理。
由此增加对进程同步的问题的了解。
实验要求:每个进程有一个进程控制块(PCB)表示。
进程控制块可以包含如下信息:进程类型标号、进程系统号、进程状态、进程产品(字符)、进程链指针等等。
系统开辟了一个缓冲区,大小由buffersize指定。
程序中有三个链队列,一个链表。
一个就绪队列(ready),两个等待队列:生产者等待队列(producer);
消费者队列(consumer)。
一个链表(over),用于收集已经运行结束的进程本程序通过函数模拟信号量的操作。
参考书目:1)徐甲同等编,计算机操作系统教程,西安电子科技大学出版社2)AndrewS.Tanenbaum著,陈向群,马红兵译.现代操作系统(第2版).机械工业出版社3)AbranhamSilberschatz,PeterBaerGalvin,GregGagne著.郑扣根译.操作系统概念(第2版).高等教育出版社4)张尧学编著.计算机操作系统教程(第2版)习题解答与实验指导.清华大学出版社实验报告要求:(1)每位同学交一份电子版本的实验报告,上传到202.204.125.21服务器中。
(2)文件名格式为班级、学号加上个人姓名,例如:电子04-1-040824101**.doc  表示电子04-1班学号为040824101号的**同学的实验报告。
(3)实验报告内容的开始处要列出实验的目的,实验环境、实验内容等的说明,报告中要附上程序代码,并对实验过程进行说明。
基本数据结构:PCB*readyhead=NULL,*readytail=NULL;//就绪队列PCB*consumerhead=NULL,*consumertail=NULL;//消费者队列PCB*producerhead=NULL,*producertail=NULL;//生产者队列over=(PCB*)malloc(sizeof(PCB));//over链表intproductnum=0;//产品数量intfull=0,empty=buffersize;//semaphorecharbuffer[buffersize];//缓冲区intbufferpoint=0;//缓冲区指针structpcb{/*定义进程控制块PCB*/intflag;//flag=1denoteproducer;flag=2denoteconsumer;intnumlabel;charproduct;charstate;structpcb*processlink;……};processproc()---给PCB分配内存。
产生相应的的进程:输入1为生产者进程;
输入2为消费者进程,并把这些进程放入就绪队列中。
waitempty()---如果缓冲区满,该进程进入生产者等待队列;
linkqueue(exe,&producertail);//把就绪队列里的进程放入生产者队列的尾部voidsignalempty()boolwaitfull()voidsignalfull()voidproducerrun()voidcomsuerrun()voidmain(){processproc();element=hasElement(readyhead);while(element){exe=getq(readyhead,&readytail);printf("进程%d申请运行,它是一个",exe->numlabel);exe->flag==1?printf("生产者\n"):printf("消费者\n");if(exe->flag==1)producerrun();elsecomsuerrun();element=hasElement(readyhead);}printf("就绪队列没有进程\n");if(ha
1
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。
硬件拓扑如下:操作系统:CentOSrelease6.3(32位)MySQL版本:MariaDB5.5.31Stable下载地址(64位请下载64版本):https://downloads.mariadb.org/f/mariadb-5.5.31/kvm-tarbake-jaunty-x86/mariadb-5.5.31.tar.
1
ha_Xshell_25206.rarha_Xshell_25206.rarha_Xshell_25206.rarha_Xshell_25206.rarha_Xshell_25206.rarha_Xshell_25206.rarha_Xshell_25206.rar
2025/4/22 6:42:22 34.65MB xshell
1
HA、Flume、Kafka、HBase、Sqoop、Oozie、mpVue、微信公众号、前端热门面试题、韩顺平LinuxJavaSE面试题、人工智能、Python项目-谷粒教育、SVN
2025/4/6 15:53:39 1.48MB 尚硅谷 HBase Kafka Flume
1
题目:7.集合运算(单循环链表)1.问题描述:设有两个带头结点的单循环链表存储的集合A、B,其元素类型为字符或者整形,且以非递减方式存储,其头结点分别为ha、hb。
要求下面各问题中的结果集合同样以非递减方式存储,结果集合不影响原集合。
2.实现要求:⑶编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1;
⑷编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单循环链表中;
⑶编写求集合A、B的交C=A∩B的函数,并输出集合C的元素;
⑷编写求集合A、B的并D=A∪B的函数,并输出集合D的元素;
⑸求集合A与B的对称差E=(A-B)∪(B-A)的函数,并输出集合D的元素;
⑹设计一个菜单,具有输入集合元素、求集合A、B的交C、求集合A、B的并D、求集合A与B的对称差E、退出等基本的功能。
3.测试数据:字符型和整形由同学们自定,但集合A、B的元素个数不得少于15个。
2025/3/20 4:44:03 374KB 数据结构
1
华为防火墙典型配置案例,主要介绍了防火墙NAT,HA,策略等功能的实际配置案例。
2025/2/7 18:26:58 15.9MB 华为USG
1
用Java编写的图形用户界面通讯录packagemyaddressbody;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Connection;importjava.sql.Date;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjavax.swing.JButton;publicclassDemonstrationacctionimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ if(((JButton)e.getSource()).getText().equals("显示查询结果")){ Stringdburl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=main.mdb"; Stringsql; Connectioncon; Statementstmt; Stringnm,sx,mp,ph,em,ca,ha,nb,gp,lbMQ,all; booleanbdr; Datebd; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(java.lang.ClassNotFoundExceptione2){ System.err.print("ClassNotFoundException:"); System.err.println(e2.getMessage()); } try{ con=DriverManager.getConnection(dburl,"",""); stmt=con.createStatement(); sql="SELECT*FROMaddress"; ResultSetws=stmt.executeQuery(sql); while(ws.next()){ nm=ws.getString(1); sx=ws.getString(2); bd=ws.getDate(3); mp=ws.getString(4); ph=ws.getString(5); ca=ws.getString(6); em=ws.getString(7); ha=ws.getString(8); gp=ws.getString(9); nb=ws.getString(10); lbMQ=ws.getString(11); all="姓名:"+nm+"性别:"+sx+"生日:"+bd +"移动电话:"+mp+"固定电话:"+ph+"MSN/QQ:" +lbMQ+"公司地址:"+ca+"EMail:"+em +"家庭地址:"+ha+"组别"+gp+"备注:"+nb +"\n"; Demonstrationaframe.lbdem.append(all); } stmt.close(); con.close(); }catch(Exceptionex) { System.out.println("Exception:"+ex.getMessage()); } } if(((JButton)e.getSource()).getText().equals("退出全部查询")){ Demonstrationaframe.lbdem.setText(""); Demonstrationaframe.demFrame.setVisible(false); } }}
2025/1/14 9:56:29 99KB Java通讯录
1
资源内容:linux/hadoop/zookeeper/hive/youtub项目/sqoop/flume/kafka/hbase/hadoop-ha/oozie/电信客服项目/相关课件
2024/12/15 17:20:41 273B 尚硅谷 大数据 视频全套
1
ha_FtpList非常好用文件夹目录树列表小工具!实用
2024/10/18 4:28:26 96KB FtpList 目录树 列表
1
集群技术是一种相对较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。
目前,在世界各地正在运行的超级计算机中,有许多都是采用集群技术来实现的。
2024/9/19 22:50:52 1.26MB 服务器 集群 HA
1
共 28 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡