交通信号灯模拟PV操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通信号灯模拟P V操
作
IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
目录
1
3
3
3
3
3
9
1
交通信号灯模拟
第一章课程设计目的和要求
根据学院课程安排,在大三的第一个学期我们开设了操作系统这门课程,操作系统可以说是是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分。通过学习,对于操作系统的运行方式以及设计理念有了较清楚的认识。
要想真正学好并理解操作系统这门课程,不但需要理解操作系统的概念和原理,还需要加强操作系统实验,上机进行编程实践,现在一学期的课程已经结束,本次课程设计在同学们掌握理解该课程的基础上,对操作系统内部的一些具体项目的实现方法进行实战演练,通过实践将知识彻底掌握。
操作系统课程设计是该课程重要的实践教学环节。通过这次课程设计,一方面可以使学生更透彻地理解操作系统的基本概念和原理,摆脱抽象的理解,从实践中将理论具体化;另一方面,通过课程设计还可以加强学生的实践能力,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。
本次课程设计的题目为交通信号灯模拟,在熟练掌握课本所讲解的计算机的P 操作和V操作的原理的基础上,利用C++程序设计语言在windows操作系统下模拟实现交通信号灯的模拟,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。
课程设计要求
在深入理解操作系统基本原理和充分理解课题的基础上,对于选定的题目,独立自主思考,通过查阅相关资料,先确定设计方案,设计程序的运行流程,分析程序所需的模块及各个模块所包含的功能,之后设计每个模块的处理流程,并画出相应的流程图,要求设计合理,利用VC++编程实现,并且程序要拥有可视化的运行界面,界面应清楚地反映出系统的运行结果,之后个人确定好测试方案,选择测试用例,对系统进程测试,运行程序并截图,截图要能充分说明结果,说明系统的使用方法和特点,并提交课程设计报告。
对于模拟交通信号灯的情况,要求在掌握P、V操作的基础上,能够进行合理的调度,并利用各种算法来实现车辆通行、控制、记录等功能。
第二章课程设计任务内容
一个十字路口,共有四组红绿灯,每个路口的车辆都遵循"红灯停,绿灯行"的原则,假
设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的"十字路口交通管理"情况.
车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。
进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿.
进程的消息通信或其他通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口.
进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面
车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。
课程设计原理
本实验利用P、V操作进行设计。
信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用临界区的进程数。
P原语操作的动作是:
(1)S减1;
(2)若S减1后仍大于或等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语操作的动作是:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语行期间不允许有中断的发生。
本课题利用P操作和V操作来模拟车辆的出发和到达。
课程设计内容
假设在一个十字路口,共有四组红绿灯,每个路口的车辆都遵循"红灯停,绿灯行"的原则,假设将每一台汽车都作为一个进程,要求设计良好的调度机制,展示出合理的"十
字路口交通管理"情况.
对于本程序,对于车辆通行,设定为路口的宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆
通过路口的时间可以固定,并且可以自行计算。交通灯的进程实际上是互斥的,即不
能同时为红或者同时为绿.对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口.
同时,停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。
在模拟车辆运行的进程中,要求可以按要求捕捉所需要的车辆的出发时间。在
进程程序设计的过程中要保证程序运行的流畅度,合理模拟车辆遇到红绿灯变换是
黄灯的暂停情况。
对于结果的分析要能够得到具有代表性的数据,比如可以根据用户需要捕获特
定的某辆车的情况等。
第三章详细设计说明
模块描述
对于交通信号灯模拟程序,其功能模块图如下图3-1所示:
1
2
3
4
5、要能对车辆是否能行进进行合理的判断。
6、要能合理的进行红绿灯的变换操作。
性能描述
交通信号灯模拟程序,要求能模拟出交通信号灯处的车辆运行状况,要求能进行合理的调度和红绿灯切换,不考虑车辆在十字路口中间行驶的过程,视为离开后下一时刻直接到达对面。要求能记录想要记录的车辆的运行时间以及车辆编号。
车辆的运行通过P操作和V操作执行,P操作进行车辆驶出的操作,V操作进行车龄到达的操作。
车辆运行调度通过ETW和STN执行,分别判断南北向和东西向是否有车,由此来控制是否能进行通车。
红绿灯的变换用来调整南北和东西是否有车的状态,同时进行输出,报告红绿灯切换状态并暂停2秒。
输入项
对于交通信号灯模拟程序,需要的输入项包括:
东、西、南、北四个方向的车辆数量,需要记录的车两的驶来方向和需要记录的车辆的编号,如表3-1所示。
表3-1自行输入数据表
需要在定义里定义的数据,可自行更改,如下:
绿灯持续时间,如表3-2所示。
表3-2初始定义数据表