《现代操作系统》课程设计
第 PAGE 5 页 共 NUMPAGES 20 页
课程设计报告(论文)
报告(论文)题目: PV操作解决生产者-消费者问题
作者所在系部: 计算机科学与工程系
作者所在专业: 网络工程
作者所在班级: *******
作 者 姓 名 : ******
作 者 学 号 : ************
指导教师姓名: *******
完 成 时 间 : 2009年11月10日
*******************
目录
TOC \o "1-3" \h \z \u 摘要 3
第一章 绪论 4
1.1 综述 4
1.2 设计地点 4
1.3 设计目的 4
1.4 设计意义 4
1.5 设计内容 4
1.6 实验环境 5
第二章 程序设计与实现 5
2.1 详细设计 5
2.1.1 PV操作原理 5
2.1.2生产者消费者问题描述 5
2.1.3 程序流程图 7
2.1.4 调试工具与命令 8
2.1.5关键代码分析 8
第三章 程序调试与运行 9
3.1编译源文件 9
3.2执行目标文件 9
3.3运行结果 10
3.3.1有PV控制运行结果 10
3.3.2无PV控制运行结果 10
3.4进程的结束 11
3.4.1有PV控制进程结束 11
3.4.2无PV控制进程结束 11
第四章 总结 12
参考文献 13
附录:源程序清单 14
摘要
进程同步机制的主要任务是对多个机关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好的相互合作,从而使程序的执行具有再现性。
生产者和消费者是典型的进程同步问题,它说明了进程同步与临界资源的关系。在生产者-消费者问题中,所描述的是生产者生产和消费者消费之间的关系。为使生产者进程与消费者进程并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池。生产者进程将它所生产的产品,按序放入一个缓冲区中。消费者进程也按序从一个缓冲区中取走产品去消费。尽管所有的生产者进程和消费者进程,都是以异步方式运行的,但他们之间必须保持同步关系,即不允许消费者进程到一个空缓冲区中取产品,也不允许生产者进程向一个已装满产品且尚未取走的缓冲区中投放产品。
一般来说,信号量S>=0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S<=0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。多线程就是有两个或两个以上的信号量,线程同步的运行。
关键词:生产者 消费者 进程 互斥与同步 临界资源 缓冲区
第一章 绪论
1.1 综述
操作系统是现代计算机系统中最基本和最重要的系统让软件,它是计算机科学与技术专业的一门重要的基础课程。通过讲授本课程,学生可以全面的了解操作系统的概念,操作系统是一组能有效的组织和管理计算机硬件和软件资源,合理地对各类资源进行调度,以方便用户使用的程序的集合。其作用是管理好这些设备,提高利用率和系统的吞吐量,为用户和应用程序提供简单的接口,便于用户使用。学完操作系统,可以更好的搭建学生的专业基础知识。
本次课程设计在本着加强课本知识运用能力的前提下,我选取了用PV操作来解决生产者消费者问题这个题目。该题目主要是解决操作系统中进程的同步与互斥的问题。
1.2 设计地点
图书馆五楼计算机系软二机房
1.3 设计目的
在Linux下用C语言,调用Linux提供的系统函数编写程序,实现操作系统中生产着与消费者的同步于互斥问题
1.4 设计意义
结合操作系统理论课程中学习到的记录型信号量机制,进程的创建、调度、终结方法,在Linux操作系统下进行实际编程模拟操作,完成PV操作解决生产者-消费者问题,使进程能够在系统中有条不紊的运行,从而使大家对可以把理论知识运用到实践中来,加深对理论的理解。
1.5 设计内容
设计PV操作算法,用信号量机制实现生产者与消费者同步与互斥问题,并与无PV情况下进行对比。定义20个缓冲区,将其初始化为0。调用随机函数rand(