模拟多进程之间的同步与互斥

上传人:ji****72 文档编号:37954822 上传时间:2018-04-24 格式:DOC 页数:21 大小:296KB
返回 下载 相关 举报
模拟多进程之间的同步与互斥_第1页
第1页 / 共21页
模拟多进程之间的同步与互斥_第2页
第2页 / 共21页
模拟多进程之间的同步与互斥_第3页
第3页 / 共21页
模拟多进程之间的同步与互斥_第4页
第4页 / 共21页
模拟多进程之间的同步与互斥_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《模拟多进程之间的同步与互斥》由会员分享,可在线阅读,更多相关《模拟多进程之间的同步与互斥(21页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计 2002370106 刘学良1操作系统课程设计一、题目.2二、设计部分.22.1 基本原理.22.2 算法实现.22.3 整体框图.32.4 局部框图.4三、结果:.7四、遇到的主要问题.11五、代码实现:.12六、总结.21操作系统课程设计 2002370106 刘学良2一、题目编程模拟多进程之间的同步与互斥。二、设计部分2.1 基本原理虽然进程具有异步特性,但系统中的各进程并不是彼此孤立的。由于种种原因,它们之间常常相互作用并存在某种依赖或相互制约的关系。为完成同一任务而相互合作的进程称为伙伴进程。伙伴进程在执行过程中往往需要互通消息或相互等待。例如,甲进程运行到某点时,

2、要求乙进程为它提供信息,在未得到这一信息时,甲进程阻塞自己直到接受到消息。进程间的这种协同关系称为进程的同步。同步多发生在相互有逻辑关系的同组进程之间。而互斥既可在在同组也可在不同组的进程间存在,因为或许进程间本无关系,只是在竞争资源时由于资源的原因而产生了联系。所以广义的看,互斥是一种特殊的同步。2.2 算法实现通过用一个整形变量的数值来模拟存在的资源个数,让进程在访问资源的过程中体现进程间的同步与互斥。具体思路如下(开发工具:Delphi 7.0):我们可以通过线程来模拟存在的多个进程。在 delphi7.0 中,过程synchronize(procedure s)就可以用来管理多个线程之

3、间的同步。参数 s 是一个过程名。执行 synchronize 的时候,将参数 s 插入其消息队列中,然后依次调用,从而实现多线程之间的同步。设计中可以用线程来模拟进程对多个资源的访问。当某个进程要申请一个资源时,将资源数减 1,若其值小于 0 则表示有进程在等待资源(就体现了进程在使用资源过程中的互斥操作) 。用 sleep(times)来模拟进程的使用资源;之后,释放资源,将资源数加 1。若资源数小于 0 ,则唤醒一个等待的进程(体现了进程间的同步操作) ,分配资源。通过进程的重复申请资源,来模拟唤醒功能。用到的主要函数:1、 主进程部分功能部分:(1)根据线程的请求分配资源:将该资源分配

4、给申请线程,同时显示一下分配情况;如果值小于 0,则表示等待分配资源状态;调功能(3)显示状态信息;(2)根据线程的请求释放资源:如果进程使用资源结束,则将资源数加 1,若操作系统课程设计 2002370106 刘学良3小于 0,则唤醒一个等待的进程,并调功能(3)显示状态信息;(3)显示状态:如当前的状态,临界区资源的个数等;数据部分:(1)要创建线程的名称列表(线程的名字不能相同) ;(2)用一个整形变量来模拟临界区资源的个数;2、 子线程部分功能部分:(1)申请资源:向主线程申请资源,如果成功,进入资源并利用,如果不成功,循环等待并 SLEEP,重试 n 次后仍没有资源可利用,线程终止(

5、以免死锁)并报错误信息(2)模拟使用:申请得资源后,随机使用一段时间(3)申请释放;释放资源要向主进程提供申请,如果成功,那么停止,如果不成功,循环等待并 SLEEP,如果重试 n 次后仍然无法释放资源,则报错误信息并终止;数据部分:(1)线程的名称,由线程创建时由主线程指定;(2)运行时间,等待时间,重试次数,由创建的指定;(3)休眠时间:如果申请不到资源或不能申请退出等待的时间(4)显示的信息列表:显示的信息有线程名,运行时间,重试次数,现在状态等情况操作系统课程设计 2002370106 刘学良42.3 整体框图创建进程并 运行调用过程 create(),创建 线程,并填 写相关的信 息

6、调用过程 execute(),运 行线程申请资源 Synchronize (wantsource)2.4 局部框图释放资源 Synchronize (donwantsou rce)操作系统课程设计 2002370106 刘学良5调用过程 create(),并 填写相关 信息定义 Tthread 的派生类 TDemoProce dure; 并调用过程 TDemoProce dure.create()判断模拟进 程名是否唯 一将基本信息 (模拟进程 名等)填入 信息列表 lvinfo 中调用过程 execute(),运行线程K:=0Repeat Synchronize(wantsource)isw

7、antsourcetrueFalseSleep(waittime)UntilKretrytimebreakInc(k)kretrytimetrueFalseSynchronize(wantsourceok)Synchronize(self.showerror)Self.terminate;exitSleep(times)I:=0RepeatSynchronize(donwantsource)isdonwantsourceTrueFalseUntiliretrytimeBreaksleep(waitTime);Inc(i);操作系统课程设计 2002370106 刘学良6iretrytimeTr

8、ueFalsesynchronize(self.ShowErrorEx);self.Terminate;synchronize(donWantSourceOk);synchronize(EndThisRun);过程 Wantsource()/申请资源过程 donwantsource()/释放资源strToint(edtuse.text)-1 0,则意味着已经该进程在重试申请资源,此时不再执行资源个数减 1 的操作了。2、 当 Tedit 控件中的内容为空时,使用函数 strtoint() ,将 Tedit 控件中的内容转换为整形则会出错,所以在这个属性中默认一个初值 0,这样就可以解决这个问题

9、了。操作系统课程设计 2002370106 刘学良12五、代码实现:unit uMain;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons, Spin;typeTMain = class(TForm)GroupBox1: TGroupBox;lbox: TListBox;Panel1: TPanel;StatusBar1: TStatusBar;GroupBox3: TGroup

10、Box;GroupBox4: TGroupBox;Label3: TLabel;Label4: TLabel;btnCreate: TBitBtn;edtName: TEdit;Label5: TLabel;Label6: TLabel;GroupBox5: TGroupBox;Label8: TLabel;edtSource: TEdit;edtUse: TEdit;Label9: TLabel;lvInfo: TListView;Splitter1: TSplitter;Label2: TLabel;Label7: TLabel;Label10: TLabel;CheckBox1: TCh

11、eckBox;edtWaitTime: TEdit;操作系统课程设计 2002370106 刘学良13edtTimes: TEdit;edtRetry: TEdit;procedure btnCreateClick(Sender: TObject);private Private declarations publicprocedure AddInfoTolvinfo(index: integer; s: string);procedure AddInfo(s: string); Public declarations end;TDemoProcedure = class(TThread)pu

12、blicListIndex: integer;strName: string;WaitTime, RetryTime, Times: Integer;isWantSource: boolean; /申请资源标志isDonotWantSource: boolean; /释放资源标志constructor Create();private Private declarations protectedprocedure Execute; override;procedure WantSource;procedure Wantsourceok;procedure donWantSource;procedure donWantsourceOK;procedure EndThisRun;procedure ShowError;procedure ShowErrorEx; /释放资源被锁定,强制释放以防死锁end;操作系统课程设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号