




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.哲学家的晚餐(50%)用于验证一个常见的冲突问题。在这个问题中,有5个哲学家坐在一个圆桌上。食物摆 在桌子中间,桌子上总共有 5把叉子,每个哲学家的左右手各有一把。因为吃饭时,哲学家需要同时使用左手和右手的叉子,所以哲学家必须和他左边和右边的哲学家共享叉子。在这个实验中,假定哲学家每次吃饭的时间长度为单位1,吃完一次后则放下两把叉子。如果等待10个单位时间长度之后,哲学家仍没有得到叉子吃饭,则被饿死。你需要设计一种方法 使得任何一个哲学家都不被饿死。需要考虑的问题:死锁! !当每个哲学家同时拿到左手的叉子时,同时,每个人又在等待右手的叉子。然而,没有哲学家会放下手中的叉子,所以永远没有人能
2、够开始吃饭。这种情况就会产生死锁并导致永远循环等待。提示:为了解决这个问题,你需要使用二进制信号量。为每个叉子创建一个信号量。拿到叉子可以通过调用semTake()来实现,放下叉子可以通过调用semGive()来实现。避免出现死锁,在死锁即将发生前解除死锁。通过定时器判断哲学家是否被饿死。TCP双机通信(40% )安装Tornado ULIP仿真网卡驱动,启动 2个带有网络的vxSim目标系统。参考实验给出的源代码tcpServer.c和tcpClient.c ,编程实现2个vxSim目标系统之间的 TCP通信。TFTP文件传输(10%)安装Tornado ULIP仿真网卡驱动, 启动带网络的
3、 vxSim目标系统,vxSim为tftp Client , 本地主机或远端主机为 tftp Server。T即 Client通过tftp协议从主机上读取一个自定义的文 本文件,并打印在 VxSim的控制台上。提示:在本地主机或远端主机上安装 tftp server软件(可以从网上下载)。首先要能配 置vxSim的WindSh能够ping通本地主机或远端主机。 VxSim必须支持tftp协议,支持ICMP 协议等。要求:.完成源代码编程,源代码随实验报告一起交。.完成实验报告,实验报告中每个实验应包括1)实验原理介绍;2)代码设计说明;3)截取程序运行Z果图片;4)程序调试记录,逐条说明。.将
4、实验报告(文件名为:学号姓名.doc,例如,045888程胜.doc),源代码目录(src*.c)用 WinZip 打包成学号姓名.zip,发送到 HYPERLINK mailto:censen censen QQ: 1801846附录1: TCP双机通信源代码/* tcpExample.h - header used by both TCP server and client examples */*定义结构体,保存待传输的信息,是否回应,以及信息长度*/#define SERVER_PORT_NUM#define SERVER_WORK_PRIORITY#define SERVER_STA
5、CK_SIZE#define SERVER MAX CONNECTIONS5001/* servers port number for bind() */100/* priority of servers work task */10000 /* stack size of servers work task */4/* max clients connected at a time */#define REQUEST_MSG_SIZE#define REPLY_MSG_SIZE1024/* max size of request message */500/* max size of rep
6、ly message */* structure for requests from clients to server */struct requestint reply;/* TRUE = request reply from server */int msgLen;/* length of message text */char messageREQUEST_MSG_SIZE; /* message buffer */;/* tcpClient.c - TCP client example */*TcpServer是下载到Client端的程序,其完成的功能是建立连接,通过套节字进行数据
7、传输,传输的数据包括信息,是否回应。出错,返回错误信息*/#include vxWorks.h#include sockLib.h#include inetLib.h#include stdioLib.h#include strLib.h#include hostLib.h#include ioLib.h#include tcpExample.hSTATUS tcpClient ( char * serverName )/* Server 机的 IP 地址 */struct requestmyRequest; /*定义的结构体,保存信息和回复请求以及信息长度*/ TOC o 1-5 h z s
8、truct sockaddr_in serverAddr; /* server 端的套节字地址*/charreplyBufREPL Y_MSG_SIZE;/*保存回复信息的数组 */charreply;/* 回复请求 */intsockAddrSize;/* server端的套节字地址结构体的长度*/intsFd;/*保存套节字的设备*/intmlen;/*信息长度*/*建立套节字,用于在两机之间进行数据传输*/if (sFd = socket (AF_INET, SOCK_STREAM, 0) = ERROR)perror (socket setup error!n);return (ERR
9、OR); /*套节字建立失败,返回错误信息*/sockAddrSize = sizeof (struct sockaddr_in);bzero (char *) &serverAddr, sockAddrSize);serverAddr.sin_family = AF_INET;serverAddr.sin_len = (u_char) sockAddrSize;serverAddr.sin_port = htons (SERVER_PORT_NUM);if (serverAddr.sin_addr.s_addr = inet_addr (serverName) = ERROR) &(serv
10、erAddr.sin_addr.s_addr = hostGetByName (serverName) = ERROR) perror (unknown server name);close (sFd);return (ERROR);/*服务端不存在,返回错误信息 */if (connect (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) = ERROR)perror (connect);close (sFd);return (ERROR);/*连接客户机与目标机,如果失败返回错误信息*/printf (Message to send:
11、 n);mlen = read (STD_IN, myRequest.message, REQUEST_MSG_SIZE); /*从输入设备检 测保存到 myRequest.message 中*/myRequest.msgLen = mlen;myRequest.messagemlen - 1 = 0;ioctl(STD_IN,FIOFLUSH,NULL);printf(your message:%sn,myRequest.message);/ioctl(STD_OUT,FIOFLUSH,NULL);printf (Would you like a reply (Y or N): n);rea
12、d (STD_IN, &reply, 1); /*从输入设备检测是否要求服务器端回应*/ioctl(STD_IN,FIOFLUSH,NULL);switch (reply)case y:case Y: myRequest.reply = TRUE;break;default: myRequest.reply = FALSE;break;/* 如果输入 Y 或 y 则 myRequest.reply = TRUE ,反之为 FALSE*/ if (write (sFd, (char *) &myRequest, sizeof (myRequest) = ERROR)perror (write);close (sFd);return (ERROR); /* 将 message和 reply 保存到 sFd 中 */*以上过程完成将数据传到服务器端*/if (myRequest.reply)/* if expecting reply, read and display it */if (read (sFd, replyBuf, REPL Y_MSG_SIZE) 0)printf (MESSAGE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年郑州市第十四初级中学招聘教师考前自测高频考点模拟试题参考答案详解
- 2025年延安市宝塔区高新学校招聘高层次人才和紧缺特殊专业人才考前自测高频考点模拟试题及完整答案详解一套
- 2025辽宁鞍山市事业单位招聘大学生退役士兵50人考前自测高频考点模拟试题及答案详解1套
- 2025四川九州光电子技术有限公司招聘技术工程师(研发、工程、助理)人员模拟试卷参考答案详解
- 2025年北京市生态环境局所属事业单位招聘工作人员(7人)考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年湖北省咸宁市崇阳县人才引进(39人)考前自测高频考点模拟试题带答案详解
- 2025年铁岭市应急管理局选聘法律顾问(1人)模拟试卷附答案详解(巩固)
- 2025入团积极分子发展对象考试题库及答案详解【必刷】
- 2025年北海市公务员考试行测真题及参考答案详解1套
- 2025年湛江市公安局坡头分局招聘警务辅助人员的(28人)考前自测高频考点模拟试题附答案详解(a卷)
- 2025版土鸡蛋购销合同范本
- DMO合成及提纯工艺原理32课件
- 分娩知识的课件
- 基于物联网的地质勘察数据实时传输与管理研究-洞察及研究
- 静脉炎的预防及处理课件
- 概述SFBT(焦点解决短程治疗)课件
- ISO14001:2015环境管理体系内部审核管理评审合集
- 隧道开挖作业台车计算书
- 煤气作业安全技术实际操作考试标准
- 三年级上人文与社会教案
- (高清版)JGJ123-2012既有建筑地基基础加固技术规范
评论
0/150
提交评论