预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一进程管理一、实验目的1.了解进程与程序的区别,加深对进程概念的理解2.掌握进程并发执行的原理,及其所引起的同步、互斥问题的方法二、实验要求(1)自定义PCB的数据结构,使用的VC、VB、java或C等编程语言,采用进程(线程)同步和互斥的技术编写程序实现;(2)对下列进程管理问题至少实现一个:生产围棋的工人不小心把相等数量的黑子和白子混装载一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,功能如下:(1)进程A专门拣黑子,进程B专门拣白子;(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。设在公共汽车上,司机和售票员的活动分别是:司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门,售票,开车门,下乘客。用PV操作对其控制。(3)对下列进程管理问题至少实现一个:生产者-消费者问题哲学家进餐问题设有5个哲学家,共享一张放有5把椅子的桌子,每人分得一把椅子,但是,桌子上共有5只筷子,在每人两边各放一只,哲学家们在肚子饥饿时才试图分两次从两边拿起筷子就餐。条件:1)拿到两只筷子时哲学家才开始吃饭。2)如果筷子已在他人手上,则该哲学家必须等他人吃完之后才能拿到筷子。3)任一哲学家在自己未拿到两只筷子前却不放下自己手中的筷子。试:1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法。2)描述一个即没有两个邻座同时吃饭,有没有饿死(永远拿不到筷子)的算法读者-写者问题读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:(1)任意多个读进程可以同时读这个文件;(2)一次只有一个写进程可以往文件中写;(3)如果一个写进程正在进行操作,禁止任何读进程度文件。我们需要分两种情况实现该问题:Ø读优先:要求指一个读者试图进行读操作时,如果这时正有其他读者在进行操作,他可直接开始读操作,而不需要等待。Ø写优先:一个读者试图进行读操作时,如果有其他写者在等待进行写操作或正在进行写操作,他要等待该写者完成写操作后才开始读操作。理发师问题:一个理发店有一个入口和一个出口。理发店内有一个可站5位顾客的站席区、4个单人沙发、3个理发师及其专用理发工具、一个收银台。新来的顾客坐在沙发上等待;没有空沙发时,可在站席区等待;站席区满时,只能在入口外等待。理发师可从事理发、收银和休息三种活动。理发店的活动满足下列条件:1)休息的理发师是坐地自己专用的理发椅上,不会占用顾客的沙发;2)处理休息状态的理发师可为在沙发上等待时间最长的顾客理发;3)理发时间长短由理发师决定;4)在站席区等待时间最长的顾客可坐到空闲的理发上;5)任何时刻最多只能有一个理发师在收银。试用信号量机制或管程机制实现理发师进程和顾客进程。自己设计一个简单进程(线程)同步和互斥的实际问题。针对上述问题,选择适合的算法,实现避免死锁情况的出现。三、实验内容*****将你所完成的试验问题,分析思想及主要的核心代码写下来*****四、实验总结