网站大量收购闲置独家精品文档,联系QQ:2885784924

课程设计说明(含软件工程09和网络工程0902)(精品·公开课件).ppt

课程设计说明(含软件工程09和网络工程0902)(精品·公开课件).ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chih-Chin Liu 操作系统课程设计 [题目]进程通信与进程同步机制实践 Linux或Windows或Unix环境下,采用系统调用中的信号量、P、V操作,编程解决以下问题。 理发师问题:一个理发店由一间等候室W和一间工作室B组成。顾客可以从外面大街上进入W等候理发。两个房间的入口是并排的,且共享一扇日本式可滑动的推拉门(门总是挡住一个入口)。顾客在工作室内理完发,可由B的旁门出去。W中有N把椅子,顾客必须坐着等候。理发师可由门上小窗查看W中无人就睡觉,否则开门,并叫一位顾客入内理发。顾客每进入一位,都拉铃通知理发师。若把顾客和理发师都视为进程,请用P、V操作写出进程的同步算法。 要求打印: 初始状态 中间变化的状态信息 以及最终状态信息。 [题目]进程通信与进程同步机制实践 课程设计报告撰写要求 1.内容:课程设计题目、目的、要求,原理及算法,主要数据结构和流程,实验测试结果及结果分析,课程设计总结,源程序清单。 2.将设计报告、源程序打包压缩为一个文件,上传到3的软件工程09课程设计或网络工程0902操作系统课程设计目录中,同时提交纸质报告。 实验安排 时间:18周周一-周五上午1-4节, 19周周一-周二上午1-4节(软件工程) 18周周一-周五晚上9-12节, 19周周一-周二晚上9-12节(网络工程0902) 地点:计算机楼303机房。 涉及到的相关知识 Linux操作系统环境下C的编译: ---编辑环境一般采用vi; ---编译命令: g++ 源文件名 可执行文件名 用到的相关系统调用 ---shmget( ):开辟共享存储区 ---semget():用于产生一个信号量数组或查找已创建的信号量数组的描述字。其中,semkey是用户指定的关键字,count规定信号量数组的长度,flag为操作标志。 ---semop():用于进行P、V操作。其中,semid是semget返回的描述字,oplist是用户提供的操作数组的指针,count是该数组的大小。Semop返回最后被操作的信号量在操作完成前的值。oplist中的每个元素包含三个内容;信号量序号、欲进行的操作值和标识。 gcc的使用 基本使用格式 $ gcc [ 选项 ] 文件名 常用选项及含义 gcc的常用选项 必须包含的头文件: #include sys/types.h #include sys/ipc.h #include sys/shm.h #include sys/sem.h #include errno.h 用到的数据结构:sembuf P操作的实现 设置oplist中的欲进行的操作值为-1, 后执行semop。 例如程序段如下: Struct sembuf{ unsigned short sem_num; short sem_op; short sem_flg; } Psembuf; semid = semget (SEMKEY,2, 0777); Psembuf.sem_num = first; Psem.sem_op = -1; Psem.sem_flg = SEM_UNDO; semop(semid, Psembuf, 1); V操作的实现 设置oplist中的欲进行的操作值为1, 后执行semop。 例如程序段如下: Struct sembuf{ unsigned short sem_num; short sem_op; short sem_flg; } Psembuf; semid = semget (SEMKEY,2, 0777); Psembuf.sem_num = first; Psem.sem_op = 1; Psem.sem_flg = SEM_UNDO; semop(semid, Psembuf, 1); 1、如何创建信号量,用来实现同步与互斥? 2、P、V如何实现? 例子 程序说明: 1.这个程序用于实现生产者-消费者问题。 原理:producer (任意多个)---- |++++++|(缓冲区:存放多个产品)----consumer(任意多个)   producer和consumer通过共享缓冲区进行通信,信号量用于对缓冲区互斥访问、对producer和consumer进行同步。 2.共有三个程序:control , producer , consumer.其中control是主控程序,producer是生产者, consumer是消费者。   control:实现对缓冲区的初始化,要最先执行,且只需要执行一次。   producer:生产一个产品放入缓冲区:

文档评论(0)

秦圈圈 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档