操作系统实验指导2003.docVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验指导 苑勋 序 这本材料是作为2001年度操作系统教学改革的一部分而编写的。着眼点在于使学生对操作系统的功能和机制有更多更具体的感性认识,从而加深对于操作系统基本理论的理解,提高操作系统课程的教学效果。 UNIX操作系统是具有多进程多线程、并发和资源共享机制的最流行的系统之一。在从PC到大型机的各种平台上运行的UNIX已经成为一个大的族系,占据着操作系统市场的半壁河山,特别是高端应用更是UNIX的天下。UNIX具有功能强大稳定性高的特点,对UNIX操作系统的深入理解更具有代表性和现实意义。 LINUX是PC平台上运行的一个UNIX版本,因为它是一个自由软件,可以以低廉的价格得到它的拷贝,所以我们当然地选择了它作为我们的教学实践平台。 本材料包括三个实验。 实验1 用UNIX信号量和共享内存机制解决生产者消费者问题,8个学时。 实验2 用UNIX信号量和共享内存机制解决阅读者写入者问题,8个学时 实验3 UNIX进程之间的管道通信,8个学时 每个实验中都叙述了实验题目、实验目的、问题描述、实验要求、相关知识、和程序流程,特别详细讲述了相关知识并给出了实例和便于使用的程序模块。 通过这些实验可以使学生掌握UNIX的基本编程技巧,了解UNIX的进程创建、信号量、共享内存、管道等机制,加深对操作系统理论中信号量、生产者消费者问题、阅读者写入者问题、进程间通信等内容的理解。 目录 实验1 用UNIX信号量和共享内存机制解决生产者消费者问题……………..1 实验2 用UNIX信号量和共享内存机制解决阅读者写入者问题……………10 实验3 UNIX进程之间的管道通信……………………………………………..13 附录 LINUX的使用……………………………………………………………..17 实验1 用UNIX信号量和共享内存机制解决生产者消费者问题 实验题目: 用UNIX信号量和共享内存机制解决生产者消费者问题 学时:8学时 平台: LINUX平台上使用GNU C编译器完成程序设计 实验目的: 信号量是进程间实现同步互斥的一种基本手段,生产者消费者问题是一种基本的进程间同步问题, 是多进程或多线程程序设计中经常遇到的问题。UNIX提供了供用户程序使用的信号量,为解决用户进程间或用户线程间的同步、互斥打开了方便之门。 通过本实验使学生掌握实际系统中信号量的使用,更好地理解生产者消费者问题的解法和实际应用,更深入地掌握多进程的程序设计,熟悉UNIX的信号量机制和共享内存机制。 问题描述: 用户建立多个生产者进程和多个消费者进程,它们共享一个存有环形队列的共享内存空间,生产者进程依次向环形队列中加入消息,消费者进程依次从环形队列中取出消息。环形队列中没有空区时,生产者进程阻塞。环形队列中没有消息时,消费者进程阻塞。 实验要求: 要求制作三个程序 myinit.c 创建共享内存及信号量 myproducer.c 执行时成为生产者进程,不断从键盘接受消息然后将消息写入环形缓冲区 myconsumer.c 执行时成为消费者进程, 不断从环形缓冲区中取出消息在终端上打印出来 实验并观察一个生产者一个消费者,多个生产者一个消费者,和多个生产者多个消费者的情况。 2.要求使用UNIX的信号量及共享内存技术 相关知识: 共享内存 说明:共享内存为各进程间可以共享的内存区域,各进程可以向共享内存区域内写入数据,也可以从中读出数据,但为了保证读写数据的完整性,要考虑进程间的同步和互斥。利用共享内存方式可以实现进程间通信。使用时,一般先由一个程序创建一个共享内存实体,然后各进程可以从系统中依关键字取得该共享内存实体,映射在各进程自己的虚拟地址空间,根据共享内存在虚拟地址空间中的首地址对其中存储单元寻址并读写。 相关系统调用: (1) # include sys/types.h #include sys/ipc.h key_t ftok(char *filename, int no); 例:key_t mykey; mykey = ftok(f,0); 将文件名和正整数序号转换为它们所确定的唯一的关键字。使用该调用前文件必须已经存在。可以用下面命令创建一个空文件f cat /dev/null f (2) #include sys/ipc.h #include sys/shm.h int shmget(key_t key, int size, int shmflg); a) shmflg中设置IPC_CREAT位时,该调用创建共享内存区,key为关键字,size为要创建的共享内存区大小,shmflg为标志字。该系统调用返回创建的共享内存区标识符,可供后面的程序使用。 例:int shmid; shmid=shmget(mykey

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档