文档详情

司机与售票员.doc

发布:2017-11-17约8.6千字共15页下载文档
文本预览下载声明
甘肃政法学院 本科课程设计报告 题 目 司机与售票员(信号量操作) 计算机科学学_院_计算机科学与技术_专业 ___2008 级__计本1 ____班 学 号:_____200881010126____ 姓 名:_____王亚彬__________ 指导教师:______何珍祥___________ 成 绩:________________ ___ 完成时间:_ _2011 __年 _06___月 目录 一、设计思想基于理论 3 (一).设计要求: 3 (二)、信号量和PV原语 4 (三)、进程的同步互斥 4 (四)利用PV原语实现司机与售票员问题 5 二、数据结构流程图 5 (一)、理论分析 5 (二)、总体设计 5 三、开发环境 6 四、程序分析引用到的系统调用 8 (一)、Semaphore类 8 (二)、Thread类 8 (三)、sleep系统调用 9 (四)wait系统调用 10 (五)、ReleaseSemaphore调用 10 (六)、CreateProcess调用 10 (七)、CreateSemaphore调用 11 五、运行结果 12 六、分析总结 13 七、程序清单 13 参考文献…………………………………………………………………………………………..15 司机与售票员(信号量操作) 王亚彬 独立完成 一、设计思想基于理论 掌握信号的使用方法和PV操作的定义,掌握使用PV操作实现进程之间同步和互斥的方法,加深对进程同步互斥概念的理解 (一).设计要求: 设计程序模拟在公共汽车上,司机和售票员操作的同步。司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门,售票,开车门,下乘客。用PV操作对其控制。 (二)、信号量和PV原语 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。信号量是最早出现的用来解决进程同步与互斥问题的机制, 包括一个称为信号量的变量及对它进行的两个原语操作。每个信号量至少须记录两个信息:信号量的值和等待该信号量的进程队列对一个信号量变量可以进行两种原语操作:p操作和v操作p操作和v操作是不可中断的程序段,称为原语。如果将信号量看作共享变量,则pv操作为其临界区,多个进程不能同时执行。??由此也可以看到,信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。一个信号量只能置一次初值,以后只能对之进行p操作或v操作。?semaphore)来记录当前可用资源的数量。信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。 P原语操作的动作是: (1) sem减1; (2) 若sem减1后仍大于或等于零,则进程继续执行; (3) 若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。 ????? V原语操作的动作是: (1) sem加1; (2) 若相加结果大于零,则进程继续执行; (3) 若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。进程的互斥和同步 进程同步:主要源于进程合作,是进程间共同完成一项任务时直接发生相互作用的关系。为进程之间的直接制约关系。在多道环境下,这种进程间在执行次序上的协调是必不可少的。相互合作的两个进程之间需要在某些确定点协调它们的工作,一个进程到达了该点后,除非另一进程已经完成了某些操作,否则就不得不停下来,等待这些操作的完成。这就是进程间的同步。 进程互斥:主要源于资源共享,是进程之间的间接制约关系。在多道系统中,两个进程由于不能同时使用同一临界资源,只能在一个进程使用完了,另一进程才能使用,这种现象称为进程间的互斥。同步的主要特征是:一个进程在某一点上等待另一进程提供信息,两进程之间存在直接制约关系,其表现形式为进程—进程。互斥的主要特征是争用资源,两进程间存在间接制约关系,其表现形式是进程—资源—进程 关车门; 售票; 开车门;
显示全部
相似文档