欢迎来到天天文库
浏览记录
ID:9649437
大小:157.19 KB
页数:14页
时间:2018-05-04
《操作系统课程设计--进程通信与进程同步机制实践》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《操作系统》课程设计题目:进程通信与进程同步机制实践学院名称:计算机科学与通信工程学院班级学号:学生姓名:教师姓名:教师职称:2016年1月8日目录一课程设计内容二开发环境二原理五主要数据结构和流程六原语对应的函数及算法七测试结果与分析八总结九源程序清单一课程设计的内容【设计内容】某银行提供6个服务窗口(3个对私服务窗口,2个对公服务窗口,1个理财服务窗口、一台取号机和20个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号;若没有空座位,则在门外等待或离开。取号机每次仅允许一位顾客使用,有对公、对私和理财三类号,每位顾
2、客只能选取其中一个。当营业员空闲时,通过叫号选取一位顾客,并为其服务。【说明】(1)可模拟设立一个服务时间区间如9:00-17:00,也可限定最大服务人数;(2)顾客达到时间随机,办理对私、对公、理财业务随机,每位顾客服务时间可设定在一定范围内。这些都可通过随机数产生。(3)取号时顾客拿到的号含有号码和等待的人数,例如A、B、C分别代表对私、对公、理财,“号码:A05,有2人等待”表示取的是对私服务号,编号是05,有2人等待办理对私业务。(4)成绩评定:平时占60%,实验报告占40%;其中平时60%包括考勤和学习态度、学习积极性等占20%,两次检查
3、,每次检查各占20%。【检查说明】第一次检查:时间18周周三-四,检查同步与互斥算法与API熟悉情况第二次检查:时间18周周五上午与晚上,检查最终程序完成情况。【要求】1、说明设置哪些信号量?信号量的含义和初始值是什么?并用信号量和P、V操作写出进程的同步算法。(注:该内容包含在设计报告中,并在第一次检查时检查)2、查阅并自学进程、线程的创建与撤销、信号量、P操作、V操作等相关原语的系统调用。(注:该内容包含在设计报告中,并在第一次检查时检查)3、在Linux或Windows或Unix环境下,采用系统调用中的进程或线程的创建与撤销、信号量、P操作、
4、V操作,编程解决上述问题,并完成调试与测试工作。(注:该内容包含将并在第二次检查时检查)4、打印:(注意:由于多个进程共享一个显示器或文件,需要互斥访问)各进程的初始状态信息;中间状态变化信息;最终状态信息。例如,顾客到达时的时间状态信息,领取的号码信息,等待时间,接收服务的服务窗口信息、服务时间,离开时间等信息。目的通过课程设计模拟银行办理业务的情景,使用pv操作实现互斥与同步。来进一步熟悉课堂上讲授的pv操作原语,掌握进程的互斥与同步的知识。二开发环境windows操作系统,使用Java语言,在eclipse上实现三原理及算法1用一个线程来模拟
5、一位客户,客户到来时间,离开时间,都是通过获取系统的时间来体现。中间等待及办理业务的时间则通过产生的一定范围的随机数对线程进行睡眠来模拟的2总共分为三个类,第一个类是包括主函数的类,用来开启程序并创建线程对象。第二个类是线程类,包括线程的定义和线程的方法run方法,在run方法内对实现主要程序的功能的函数进行调用。第三个类,就是存储的需要用到的主要变量,计数器,及实现程序功能的三个函数,供所有的线程公用。三个函数。第一个函数进行座位的检测,有座位则进入银行,没有在在外等待,以及获取此时运行该线程的名字,作为一个客户的标识,并通告该客户到来及此时的时
6、间。第二个函数实现取号功能,其中包括判断取号机是否有人使用,取号时根据随机数产生三种不同的票号,同时该票号的内容还包括票的序号和此类票号对应的服务窗口现在还有多少人在等待。第三个函数是服务功能,包括根据票号判断此时该类窗口是否有已满,满了就等待,没满则去办理业务。办理业务通过产生随机数对线程进行休眠,客户离开时,通告客户的服务时间,及离开的时间。四主要数据结构和流程六个信号量一个代表大厅的座位,初值为20。一个代表取号机,初值为1,。三个窗口,初值分别为3,2,1。一个用来实现对记录大厅人数的变量的互斥操作。四个变量一个代表办理业务的总人数。三个分
7、别代表三个窗口的等待人数。票号的格式为服务+票号+等待人数。例如A-22-3表示办理对私服务,票号为22,该窗口还有3人在等待。等待时间,服务时间,均是调用函数产生随机数。流程图五原语对应函数及pv算法创建线程:继承Thread类,实现run方法信号量semaphorep操作:acquirev操作:releaseSemaphoreZcount,Qcount,counta,countb,countc,countx;Zcount.value=20;Qcount.value=1;Counta.value=3;Countb.value=2;Countc.v
8、alue=1;Countx.value=1;Process{P(&zcount);{p(&qcount);取票ABCRet
此文档下载收益归作者所有