欢迎来到天天文库
浏览记录
ID:12861531
大小:28.00 KB
页数:5页
时间:2018-07-19
《操作系统课程设计 target=_blank》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统课程设计target=_blank~~~ 操作系统课程设计 ~~~实验二:生产者消费者问题班级:01110407 学号:20040200 姓名:林健*实验名称 Linux/Windows系统API实验二:生产者消费者问题*实验目的 实现生产者消费者问题模拟,显示每次添加和读取数据的时间及缓冲区的状态,生产者和消费者用进程模拟,缓冲区用共享内存来实现。*实验要求*一个大小为3的缓冲区,初始为空*2个生产者 随机等待一段时间,往缓冲区添加数据, 若缓冲区已满,等待消费者取走数据后再添加 重复6次*3个消费者 随机等待一段时
2、间,从缓冲区读取数据 若缓冲区为空,等待生产者添加数据后再读取 重复4次*实验内容 (1)Linux版本: 共享主存段为进程提供了直接通过主存进行通信的有效手段。使用shmget()系统调用实现共享主存段的创建,shmget()返回共享内存区的ID。对于已经申请到的共享段,进程需把它附加到自己的虚拟空间中才能对其进行读写。使用shmat()将共享内存附加到进程的地址空间。程序退出时调用shmdt()将共享存储区从本地进程中解除连接,但它不删除共享存储区。shmctl()调用可实现多种共享存储区操作,包括删除和获取信息。 在UNIX系
3、统中,一个或多个信号量构成一个信号量集合。使用信号量机制可以实现进程之间的同步和互斥,允许并发进程一次对一组信号量进行相同或不同的操作。每个P、V操作不限于减1或加1,而是可以加减任何整数。在进程终止时,系统可根据需要自动消除所有被进程操作过的信号量的影响。semget()调用建立一个信号量集合,semctl()调用对信号量执行控制操作,进而实现P、V操作。 (2)Windows版本: 信号量是可命名的、安全的线程同步对象。信号量启动时带有可访问资源的最大数目和当前空闲资源数。使用CreateSemaphore()API创建信号量对象,它
4、需要标准的安全性和命名,以及最大值和初始计数。当资源使用完成后,必须调用ReleaseSemaphore()API。一旦内核对象使用信号量挂起等待访问资源的线程,那么可保证下一个获得访问的是等待队列中的第一个线程。信号量使用计数器实现同步。每次取信号量时,信号量计数器递减。计数永远不会小于0或大于在参数lMaximumCount中定义的值。 Windows内存管理器使用局部对象来实现共享内存。文件中的字节一对一映射到虚地址空间。读内存的时候实际上是从文件获取数据,修改内存最终将写回到文件。使用CreateFileMapping()创建文件映
5、射,OpenFileMapping()打开文件映射。调用MapViewOfFile()将文件映射到进程的地址空间。*源代码 参见"linuxp_c"、"windowp_c"文件夹下相关文件。*实验结果 (1)Linux版本:lj@ossg-ssh:~/dev/linux/p_c$./p_cMainprocessstarts.Semaphorecreated.14:00:35CProducer1puts'C'.14:00:35XCProducer2puts'X'.14:00:36XXCProducer1puts'X'.14:00:36X
6、XConsumer3gets'C'.14:00:36XConsumer2gets'X'.14:00:39Consumer1gets'X'.14:00:39PProducer1puts'P'.14:00:40SPProducer2puts'S'.14:00:42CSPProducer1puts'C'.14:00:43CSConsumer3gets'P'.14:00:44CConsumer2gets'S'.14:00:44Consumer1gets'C'.14:00:45RProducer2puts'R'.14:00:46RRProducer1p
7、uts'R'.14:00:48VRRProducer2puts'V'.14:00:49VRConsumer3gets'R'.14:00:50VConsumer2gets'R'.14:00:50Consumer1gets'V'.14:00:53EProducer2puts'E'.14:00:53Consumer3gets'E'.14:00:53SProducer1puts'S'.14:00:55Consumer2gets'S'.14:00:57EProducer2puts'E'.14:00:59Consumer1gets'E'.Mainproc
8、essends. (2)Windows版本:E:TempEx2windowsp_c>p_cProcessID:3120,SerialNo:0Mainpro
此文档下载收益归作者所有