- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生产者消费者问题操作系统课程设计讲解
PAGE \* MERGEFORMAT 13
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc440616524 1 绪论 PAGEREF _Toc440616524 \h 3
HYPERLINK \l _Toc440616525 1.1 实现的功能 PAGEREF _Toc440616525 \h 3
HYPERLINK \l _Toc440616526 1.2 P V 操作 PAGEREF _Toc440616526 \h 3
HYPERLINK \l _Toc440616527 2 生产者——消费者问题。 PAGEREF _Toc440616527 \h 4
HYPERLINK \l _Toc440616528 2.1 要求 PAGEREF _Toc440616528 \h 4
HYPERLINK \l _Toc440616529 2.2 生产者和消费者两个进程的程序 PAGEREF _Toc440616529 \h 4
HYPERLINK \l _Toc440616530 2.3进程控制块PCB。 PAGEREF _Toc440616530 \h 5
HYPERLINK \l _Toc440616531 2.4处理器的模拟。 PAGEREF _Toc440616531 \h 5
HYPERLINK \l _Toc440616532 2.5程序设计 PAGEREF _Toc440616532 \h 6
HYPERLINK \l _Toc440616533 3设计步骤 PAGEREF _Toc440616533 \h 7
HYPERLINK \l _Toc440616534 3.1课程分析 PAGEREF _Toc440616534 \h 7
HYPERLINK \l _Toc440616535 3.1.2 流程图 PAGEREF _Toc440616535 \h 7
HYPERLINK \l _Toc440616536 3.1.3 测试程序 PAGEREF _Toc440616536 \h 9
HYPERLINK \l _Toc440616537 3.1.4测试结果分析 PAGEREF _Toc440616537 \h 14
HYPERLINK \l _Toc440616538 5 结论 PAGEREF _Toc440616538 \h 15
HYPERLINK \l _Toc440616539 参考文献 PAGEREF _Toc440616539 \h 16
1 绪论
生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。
进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。
我们把若干个进程都能进行访问和修改的那些变量称为公共变量。由??进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。一般说,同步机构是由若干条原语——同步原语——所组成。本实习要求学生模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。
1.1 实现的功能
生产者-消费者问题是一个经典的进程同步问题,有m个生产者和n个消费者,它们共享可存放k件产品的缓冲区。生产者进程生产物品,然后将物品放置在一个空缓冲区中,供消费者进程消费。消费者进程从缓冲区中获得物品,然后释放缓冲区。当生产者进程生产物品时,如果没有空缓冲区可用,那么生产者进程必须等待消费者线程释放出一个空缓冲区。当消费者进程消费物品时,如果没有满的缓冲区,那么消费者进程将被阻塞,直到新的物品被生产出来。
1.2 P V 操作
(1) PV操作同步机构,由P操作原语和V操作原语组成,它们的定义如下:
P操作原语P (s):将信号量s减去1,若结果小于0,则执行原语的进程被置成等待信号量s的状态。
V操作原语V (s):将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。
这两条原语是如下的两个过程:
procedure P (var s: semaphore);
begin s: = s-1;
if s0
文档评论(0)