课程设计:交通信号灯模拟

课程设计:交通信号灯模拟

ID:22992241

大小:680.24 KB

页数:16页

时间:2018-11-02

课程设计:交通信号灯模拟_第1页
课程设计:交通信号灯模拟_第2页
课程设计:交通信号灯模拟_第3页
课程设计:交通信号灯模拟_第4页
课程设计:交通信号灯模拟_第5页
资源描述:

《课程设计:交通信号灯模拟》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、摘要在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。操作系统是计算机系统配置的所有软件中使用最广泛的基础软件,它在整个计算机系统软件中处于中心地位,也是计算机专业课教学中做重要的环节之一。从操作系统自身角度讲,它不仅很好地体现了计算机円益发展中的软件研究成果,而且也较好地体现了计算机的硬件技术发展及计算机系统结构的用户界面环境。我们团队共同开发一个简单的操作系统程序,实现了课本所讲解的il•算机的P操作和v操作的原理,利用C程序设计,能在Linux环境下平

2、稳运行。目录勝要1觀3课程设计任务及要求32.1、设计任务32.2、设计要求3算法及数据结构43.1、算法的总体思想(流程)43.2>P模块53丄V模块6程序设计与实现94.1程序流程图94.2程序代码94.3实验结果914收获、体会和建议14轉趙15概述本实验利用P、V操作进行设计。信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用临界区的进程数。P原语操作的动作是:(1)S减1;(2)若S减1后仍大于或等于零,则进程继续执行;(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队

3、列中,然后转进程调度。V原语操作的动作是:(1)S加1;(2)若相加结果大于零,则进程继续执行;(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。PV操作对于每一个进程來说,都只能进行一次,而且必须成对使用。在PV原语行期间不允许有中断的发生。本课题利用P操作和V操作来模拟车辆的出发和到达。课程设计任务及要求2.1、设计任务了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共亨资源的控制。分工:胡海斌:主要代码编码,文档初步版本编写,画部分程序流程图

4、鲍春晓:画部分程序流程图,检测程序健壮性,对代码进行改进,文档修改改善2.2、设计要求编程模拟交通信号灯的控制。1)问题描述:一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。2)车辆通行设定:路口宽度不限,对一个路门而言,只有当一辆车通过路口(越过对面路口的交通灯后),其后续车辆才能继续通过交通灯,车辆通过路U的时间可以固定,可以自行计算。3)进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。4)进程的消息通

5、信或其通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前而的车辆已经通过了路口。1)进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。算法及数据结构3.1、算法的总体思想(流程)设计P(imi)函数用来实现从i(东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间。设计V(inti)函数实现时间的流逝,红绿灯的转换以及无车标志的转换,同时输出上一时刻调用P函数车辆的到达时间。没计东西调度函数ETW()以及南北

6、调度函数STN()在互斥方向无车且绿灯状态下循环调用P、V函数实现单方向队列上车辆的循环调度。设IkmainO函数用来提供程序的输入接口,并实现南北东西方向函数的交叉调度,以及预测车辆出发时间的输出显示。对于交通信号灯模拟程序,其功能模块图如图3-1图3-1对于交通信号灯模拟程序,系统需要实现的功能包桮:1、模拟车辆驶出十字路U的一端。2、模拟车辆到达路十字路口的另一端。3、可以记录需要的车辆的出发时间和编号。4、利川有效的调度程序对车辆的行进进行相应的控制。5、要能对车辆是否能行进进行合理的判断。6、要能合理的进行红绿灯的变换操作。3.

7、2、P模块3.2.1功能P(inti)函数用来实现从i(东西南北)方向等待车辆中挑出当前的笫一个并让其通行,同时记录此车的编号,输出此车的发车时间。3.2.2数据结构voidP(inti)//P函数,i为方向判断标志Max[iJ=MaxliJ-l;R[iJ++;//i方向上的车辆等待数13减//当前车辆编号if((PS-1)==i&&R[il==PN)PT=Time;//保存预测时间printf(”%d时刻向%0方向行驶的第%(1辆车开始出发!",Time,FX[i],R[i]>;if(Max[++i]>0)Maxfi]=Max[i]

8、-1:R[i]++;if((PS-l)=i&&R[i]==PN)PT=Time;printf(n%d时刻向°/仏方向行驶的第°/(^辆车开始出发!”,Time.FXni.Rm);3.2.3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。