当前位置:文档之家› 东华大学操作系统读者写者实验报告

东华大学操作系统读者写者实验报告

东华大学操作系统读者写者实验报告
东华大学操作系统读者写者实验报告

东华大学计算机学院

操作系统实验报告

实验名称:读者写者问题

姓名:姜元杰

学号:111310228

班级:计算机1102

指导老师:李继云

报告日期:2013/10/12

一、实验概述

1.实验目标

在Windows系统平台下,了解Windows编程基本知识,通过创建线程等一系列操作实现进程同步经典问题——读者写者问题。

2.实验要求

在Windows7环境下,创建一个控制台进程,此进程包含n个线程。用这n 个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。

读者-写者问题的读写操作限制(包括读者优先和写者优先):

1)写-写互斥,即不能有两个写者同时进行写操作。

2)读-写互斥,即不能同时有一个线程在读,而另一个线程在写。,

3)读-读允许,即可以有一个或多个读者在读。

读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。

写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。

运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。

二、实验内容

1.设计思路

通过仔细分析问题,实验实现内容分别为读者优先部分与写者优先部分。通过建立统一的线程数组存储所有待创建线程,并在系统后台分别存于可以将所有读者和所有写者分别存于一个读者等待队列和一个写者等待队列中,每当读允许

时,就从读者队列中释放一个或多个读者线程进行读操作;每当写允许时,就从写者队列中释放一个写者进行写操作。通过程序代码实现读读允许,读写互斥,写写互斥。

对于读者优先部分,引入Mutex信号量和临界区对象RP_Writer实现。读者优先指的是除非有写者在写文件,否则读者不需要等待。所以可以用一个整型变量read_Count记录当前的读者数目,用于确定是否需要释放正在等待的写者线程(当read_Count=O时,表明所有的读者读完,需要释放写者等待队列中的一个写者)。每一个读者开始读文件时,必须修改read_Count变量。因此需要一个互斥对象Mutex来实现对全局变量read_Count修改时的互斥。另外,为了实现写-写互斥,需要增加一个临界区对象RP_Writer。当写者发出写请求时,必须申请临界区对象的所有权。通过这种方法,也可以实现读-写互斥,当read_ Count=l 时(即第一个读者到来时),读者线程也必须申请临界区对象的所有权。当读者拥有临界区的所有权时,写者阻塞在临界区对象RP_Writer上。当写者拥有临界区的所有权时,第一个读者判断完"read_Count==1"后阻塞在write上,其余的读者由于等待对read_Count的判断,阻塞在Mutex上。

对于写者部分,与读者优先类似;不同之处在于一旦一个写者到来,它应该尽快对文件进行写操作,如果有一个写者在等待,则新到来的读者不允许进行读操作。为此应当添加一个整型变量write_Count,用于记录正在等待的写者的数目,当write_Count=0时,才可以释放等待的读者线程队列。增加一个互斥对象Mutex3,维护对全局变量write_Count的互斥修改。为了实现写者优先,应当添加一个临界区对象CS_Reader,当有写者在写文件或等待时,读者必须阻塞在CS_Reader上,同时读者线程除了要对全局变量read_Count实现操作上的互斥外,还必须有一个互斥对象对阻塞CS_Reader这一过程实现互斥。

2.主要数据结构

int readCount:访问资源的读者线程数目;

int writeCount:访问资源的写者线程数目;

CRITICAL_SECTION RP_Writer:临界区对象,读者优先中用于阻塞写者;

CRITICAL_SECTION CS_Writer:临界区对象,写者优先中实现写写互斥;

CRITICAL_SECTION CS_Reader:临界区对象,写者优先中用于阻塞读者,

体现写者优先

struct Thread :线程信息结构体结构表示,成员变量包括int Number ,char Type ,double RunTime, WaitTime ,分别代表线程序号,线程种类(读者或写者),等待时间,作业时间。

HANDLE Mutex1:互斥信号量,用于实现写者优先。 HANDLE Mutex2:互斥信号量,用于维护read_Count 修改。 HANDLE Mutex3:互斥信号量,用于维护write_Count 修改。

3. 主要代码结构

int main() \\main 函数菜单界面

void ReaderPriority(char *file)\\读者优先主控程序 void RP_ReaderThread(void *p)\\读者优先-读者线程 void RP_WriterThread(void *p)\\读者优先-写者线程 void WriterPriority(char *file)\\写者优先主控程序 void WP_ReaderThread(void *p)\\写者优先-读者线程 void WP_WriterThread(void *p)\\写者优先-写者线程

4. 主要代码段分析

a) 创建文件输入流inFile 读入文件

int main()

RP_ReaderThread

RP_WriterThread

WP_ReaderThread

WP_WriterThread

ReaderPriority WritePriority

2.读者优先

读者线程部分:

WaitForMutex = WaitForSingleObject(Mutex, -1);

// P(h_mutex)

readCount++;

if(readCount == 1)

// 读者线程进入临界区,实现读者优先

{

EnterCriticalSection(&RP_Writer);

}

ReleaseMutex(Mutex);

// V(h_mutex)

printf(" Reader thread %d begins to read file.\n",Number);

// 读者线程开始作业

Sleep(RunTime);

// 作业时间

printf(" Reader thread %d finished reading file.\n",Number);

// 作业完成

WaitForMutex=WaitForSingleObject(Mutex,-1);

// P(h_mutex) 读者线程对象已触发

readCount--;

// 读者线程退出

if(readCount == 0) // 所有读者线程都已作业完毕,释放临界区对象,写者

可作业

{

LeaveCriticalSection(&RP_Writer);

}

ReleaseMutex(Mutex); // V(h_mutex)

3.写者优先

写者线程部分:

printf (" Writer thread %d sents the reading require.\n", Number);

// 读者线程从创建m_delay秒后,发送读申请WaitForMutex3 = WaitForSingleObject(Mutex3, -1);

// P(Mutex3) 维护writeCount修改

// P(h_mutex)

writeCount++;

if(writeCount == 1)

// 临界区有写者线程作业时,阻塞一切读者线程{

EnterCriticalSection(&CS_Reader);

}

ReleaseMutex(Mutex3);

// V(Mutex3)

EnterCriticalSection(&CS_Writer);

// 写写互斥

printf(" Writer thread %d begin to write the file.\n",Number);

Sleep(RunTime);

printf(" writer thread %d finishing writing file.\n",Number);

LeaveCriticalSection(&CS_Writer);

WaitForMutex3 = WaitForSingleObject(Mutex3,-1);

// 维护writeCount修改

writeCount--;

if(writeCount==0)

// 当所有写者线程作业完毕,释放读者线程临界区对象{

LeaveCriticalSection(&CS_Reader);

}

ReleaseMutex(Mutex3); // V(Mutex3)

三、实验结果

1.基本数据

基本数据:TestData.dat(见附件)数据文件包括n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各个字段间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R表示读者,w表示写者。第三字段为一个正数,表示读写操作的开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。

数据文件内容:

1 R 3 5

2 W 4 5

3 R 5 2

4 R 6 5

5 W 5.1 3

2.源代码行数:代码共303行。

3.完成实验投入时间:累计共7小时

4.讨论次数:3次

5.测试数据分析:分析详情见1.基本数据

6.测试结果分析:

程序菜单界面:

1)读者优先:

读者优先结果分析:根据测试数据及读者优先原则可知,线程1R在第3s先执行,当它执行1s后,线程2W发出申请,但被阻塞,实现读写互斥。然后线程3R,线程4R在第5、6s时发出申请并被准许访问数据区,实现了多个读者同时读数据允许。而在5.1s发出写申请的线程5W则被阻塞。当读者线程根据时间都完成后,写者线程2W先被唤醒,并且在它完成之前,写者线程5W仍然是阻塞状态,从而实现了写写互斥。

2)写者分析:

写者优先结果分析:根据测试数据及写者优先原则可知,线程1R在第3s先执行,当它执行1s后,线程2W发出申请,但被阻塞,实现读写互斥。然后线程3R、线程5W、线程4R在第5s、5.1s、6s时发出申请,均被阻塞。当线程1R完成后,线程2W开始执行,执行完成。本来是线程4R先申请,但是有写者线程5W等待,根据写者优先,线程4R被阻塞,先执行线程5W,执行完成后,再根据时间先后执行线程3R、4R。此时也实现了多个读者同时读数据的操作。

四、实验体会

1.实验过程中遇到问题及解决过程

1)问题:1:开始进行实验内容时,由于不熟悉Windows编程知识,起手困难。因此开始便通过不断调阅参考资料和上网查询,熟悉线程

创建,信号量机制等知识在Windows编程下的基本函数调用及用法,

得以顺利进行实验代码编写。

2)问题2:由于参考代码“实验一.cpp”在VC6.0平台下编写,故一开

始导入VS2010中,由于系统兼容等复杂原因,导致代码无法编译通

过,最终放弃VS2010,转入VC6.0平台,解决问题。

2.实验过程中产生错误及原因分析

错误1:在写者优先代码部分中代码部分,出现低级错误,原因分析如下:代码截图:

(注:红色矩形框标记错误处)

原因分析:在写者优先主控程序中错误调用读者优先-读者线程RP_ReadThread(void*p),导致线程最终死锁,运行错误信息如下:

3.实验体会和收获

“实践是检验真理的唯一标准”,经过实验后,对于这句话理解尤为深刻。本次实验内容和所需知识都属于操作系统初级阶段,尤其是在具体系统平台下进行具体实现,许多Windows编程的所需知识在实验开始阶段非常匮乏,因此在熟悉常用Window函数及具体实现调用方面花了大量功夫,之后通过阅读参考代

码和参考文献,并在实验期间与同学数次讨论后,个人进一步对于信号量机制和进程相关同步问题加深了理解。

五、参考文献

[1]. 汤小丹,梁红兵等著. 《计算机操作系统(第三版)》

[2]. 王道论坛组编. 《2013年计算机操作系统联考复习指导》

实验PPT问题:

1、如何向线程对应的函数传递参数?

答:通过LPVOID lpParameter指针来传递参数。

2、一个参数如何传递,多个参数又如何传递?

答:一个参数就用指针指向或者直接去变量地址;多个参数可以用一个结构体封装,然后用一个结构体指针指向就行了。

3、如何实现多个线程的同步?

答:利用信号量机制。

4、若允许子线程执行多次后主线程再执行,又如何设置信号量的初值?

答:执行次数-1。

java实现读者写者问题(写着优先)

实验一实验报告 学号:20092128 姓名:徐卓远 实验序号:1 实验名称:用信号量来实现读者-写者问题 实验目的:理解进程同步与互斥的概念,掌握用信号量来实现进程的同步与互斥。 实验设计及实现: 为了实现读者和写者的读写过程,将每个读者和每个写者作为了一个单独的线程,所以设置了两个类,一个是读者类Reader,一个是写者类Writer.以读者类为例: 一个读者的动作过程为由睡眠->等待->开始读->结束读->睡眠的一个循环过程,而一个写者的动作过程也为此. 读者调用方法napping()进行等待,调用startRead()方法开始读,最后在调用endReading()方法结束读入,释放运行空间.写者同读者. 但是为了实现读者写者之间的写-写互斥,读-写互斥,读-读允许,需要另外一个类Database,类中分别用关于读者的方法和写者的方法来控制读写之间的这种关系. 首先要实现睡眠的方法napping(),读者和写者在睡眠过程都应该是一样的,只是他们睡眠的时间不同,所以只需写出一个方法: public static void napping() {

int sleepTime = (int) (NAP_TIME * Math.random()); try { Thread.sleep(sleepTime * 1000); } catch (Exception e) { e.printStackTrace(); } } 在方法中,控制线程休眠随机的时间,由于每个读者或写者都是一个线程,而每个读者或写者他们工作休眠的时间都不一定相同,他们请求工作的时间也不一定相同,所以取了随机时间其次设置了读者的两个方法,开始读和结束读,由于这只是个模拟读写问题,所以只需要知道结果就行,就不用显示出他是怎么读的. 在开始读中,当有写者在写时,读者需要等待wait(),在没有人在工作时,如果有写者和读者同时请求,那么就让写者先进,这是写者优先.所以这就归纳于一种情况, 当读者布尔变量dbReading为FALSE时,如果有需要工作的写者,那么读者就等待. 当读者请求读入后,计数有多少读者需要工作的变量readerCount +1,如果这是第一个进入工作的读者就需要将显示是否有读者在工作的读者布尔变量变为TRUE. public synchronized int startRead() { if (dbReading == false) {

过程控制实验报告

过程控制实验 实验报告 班级:自动化1202 姓名:杨益伟 学号:120900321 2015年10月 信息科学与技术学院 实验一过程控制系统建模 作业题目一: 常见得工业过程动态特性得类型有哪几种?通常得模型都有哪些?在Simulink中建立相应模型,并求单位阶跃响应曲线、 答:常见得工业过程动态特性得类型有:无自平衡能力得单容对象特性、有自平衡能力得单容对象特性、有相互影响得多容对象得动态特性、无相互影响得多容对象得动态特性等。通常得模型有一阶惯性模型,二阶模型等、 单容过程模型 1、无自衡单容过程得阶跃响应实例 已知两个无自衡单容过程得模型分别为与,试在Simulink中建立模型,并求单位阶跃响应曲线。 Simulink中建立模型如图所示: 得到得单位阶跃响应曲线如图所示:

2、自衡单容过程得阶跃响应实例 已知两个自衡单容过程得模型分别为与,试在Simulink中建立模型,并求单位阶跃响应曲线。 Simulink中建立模型如图所示: 得到得单位阶跃响应曲线如图所示:

多容过程模型 3、有相互影响得多容过程得阶跃响应实例 已知有相互影响得多容过程得模型为,当参数, 时,试在Simulink中建立模型,并求单位阶跃响应曲线在Simulink中建立模型如图所示:得到得单位阶跃响应曲线如图所示:

4、无相互影响得多容过程得阶跃响应实例 已知两个无相互影响得多容过程得模型为(多容有自衡能力得对象)与(多容无自衡能力得对象),试在Simulink中建立模型,并求单位阶跃响应曲线。 在Simulink中建立模型如图所示: 得到得单位阶跃响应曲线如图所示:

计算机过程控制实验报告

计算机过程控制实验报告

实验1 单容水箱液位数学模型的测定实验 1、试验方案: 水流入量Qi 由调节阀u 控制,流出量Qo 则由用户通过负载阀R 来改变。被调量为水位H 。分析水位在调节阀开度扰动下的动态特性。 直接在调节阀上加定值电流,从而使得调节阀具有固定的开度。(可以通过智能调节仪手动给定,或者AO 模块直接输出电流。) 调整水箱出口到一定的开度。 突然加大调节阀上所加的定值电流观察液位随时间的变化,从而可以获得液位数学模型。 通过物料平衡推导出的公式: μμk Q H k Q i O ==, 那么 )(1 H k k F dt dH -=μμ, 其中,F 是水槽横截面积。在一定液位下,考虑稳态起算点,公式可以转换成 μμR k H dt dH RC =+。 公式等价于一个RC 电路的响应函数,C=F 就是水容,k H R 0 2= 就是水阻。 如果通过对纯延迟惯性系统进行分析,则单容水箱液位数学模型可以使用以下S 函数表示: ) 1()(0 += TS S KR S G 。 相关理论计算可以参考清华大学出版社1993年出版的《过程控制》,金以慧编著。 2、实验步骤: 1) 在现场系统A3000-FS 上,将手动调节阀JV201、JV206完全打开,使下水箱闸板具有 一定开度,其余阀门关闭。 2) 在控制系统A3000-CS 上,将下水箱液位(LT103)连到内给定调节仪输入端,调节仪 输出端连到电动调节阀(FV101)控制信号端。 3) 打开A3000-CS 电源,调节阀通电。打开A3000-FS 电源。 4) 在A3000-FS 上,启动右边水泵(即P102),给下水箱(V104)注水。 给定值 图1 单容水箱液位数学模型的测定实验

ERP系列实验报告 东华大学

课程名称: 学院: 专业: 姓名: 学号: 指导教师: 2012年4月

一、采购管理系统综述 [选择“采购管理”、“销售管理”和“库存管理”三个主要子系统之一进行功能综述。] 采购管理子系统功能 采购管理模块主要是由供应商到本公司的业务流程整合。需要运用采购管理系统,库存管理系统,存货核算系统和应付款系统,连续性操作。通过将在业务进行产生并取得的各项单据汇总到数据库中,从制定采购计划,制作请购单,向供应商发出订单,到商品入库时产生的入库单,生成商业发票等单据的便捷处理,减少了以往纸质单据的堆叠,提高了单据传递的效率。 采购管理子系统实现的主要业务是普通采购业务。而普通采购业务又包括采购业务、现付业务、结算业务以及退货业务。采购业务可以实现的主要功能包括填制并审核请购单、采购订单、到货单、采购入库单等一系列采购单据。现付业务包括填制采购发票(包括专用发票和普通发票)并做现付处理(包括现金、支票、汇票3种形式)。有4种方法可以实现结算业务,分别是在发票页面直接点击结算按钮、自动结算、手工结算和费用折扣结算,运费发票一般选择手工结算。退货业务一般是发生在采购商品出现质量问题之后,分为结算前退货和结算后退货。 请购单是采购发生之前填制的第一种采购单据,主要用于向上级申请采购商品。在请购单中需要填写请购商品的相关内容(包括商品编码、采购数量、采购单价等),还需要填写业务类型,单据号(可以计算机自动生成)、采购类型等其他单据内容。请购单经过账套主管审核后,方可进行采购单的录入。 采购订单,请购单审核完毕后即可填写采购订单。可以手工输入也可以直接导入请购单中的相关信息。在采购订单的表头部分需要填写供货单位、部门、业务员、付款条件等来完整一张详细的采购订单,确认无误后审核。 到货单,可以手工输入也可以采用导入采购订单的方式来完成相关商品信息的录入。到货单的表头信息需要手工填写,确认无误后方可审核通过。如果在验收后发现次品还需要填写到货退回单。 采购入库单,可以手工输入也可以采用生单的方式使计算机直接生成入库单。生单时要过滤选择需要入库的入库单,勾选“显示表体”,确认生单后要录入入库日期和仓库,填写表头信息,确认无误之后审核。如果需要退货则需要填写红字入库单,红字入库单的入库数量必须是负数。 采购发票,可以手工输入也可以导入入库单。在发生退货时需要另填写红字专用发票。运费要开具运费发票。 采购结算,生成发票并审核以上各单据后,方可进行结算,运输费用需要进行分摊。如果结算不是一单业务一结,最好不要选在在发票页面结算,可以用其他3中结算方法结算,需要结算的业务可以通过结算单列表检验结算完成。 二、普通采购业务流程 [如果你选择的采购管理系统,则选择采购管理的某一业务流程,如普通采购、直运采购等,进行业务流程的描述,并绘制业务流程图。] 普通采购业务流程 业务流程:公司内部其他部门向采购部门提出请购要求,采购部门业务员向

读者写者问题课程设计说明书

-- 数学与计算机学院 课程设计说明书 课程名称: 操作系统原理-课程设计课程代码: 题目:读者写者问题 年级/专业/班: 学生姓名: 学号: 开始时间:2011 年12月05日完成时间:2011 年12月25 日课程设计成绩: 学习态度及平时成绩(30) 技术水平与实际 能力(20) 创新(5)说明书撰写质量(45) 总分 (100) 指导教师签名:年月日

目录 1 引言?错误!未定义书签。 1.1问题的提出?错误!未定义书签。 1.2任务于分析?错误!未定义书签。 2程序的主要功能?错误!未定义书签。 2.1测试文本录入功能.................................... 错误!未定义书签。 2.2读者优先判断功能.................................... 错误!未定义书签。2.3写者优先判断功能.................................. 错误!未定义书签。 3 程序运行平台........................................... 错误!未定义书签。 4 总体设计............................................... 错误!未定义书签。5模块分析 ............................................... 错误!未定义书签。 5.1测试文本录入模块.................................... 错误!未定义书签。 5.2读者优先判断模块.................................... 错误!未定义书签。 5.3写者优先判断模块.................................... 错误!未定义书签。6系统测试............................................. 错误!未定义书签。 7 结论................................................................. 8致谢.................................................. 错误!未定义书签。参考文献 (10)

实验二 读者写者问题实验报告..

实验二读者写者问题实验报告 一、实验目的 Windows2000/XP提供了互斥量(mutex)、信号量(semapore)、事件(event)等三种同步对象和相应的系统调用,用于线程的互斥与同步。通过对读者写者问题的调试,了解Windows2000/XP中的同步机制。 二、实验内容及实验步骤 利用Windows2000/XP信号量机制,实现读者写者问题。 在Windows 2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先): 写-写互斥,即不能有两个写者同时进行写操作。 读-写互斥,即不能同时有一个线程在读,而另一个线程在写。 读-读允许,即可以有一个或多个读者在读。 读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结果读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。 三、实验结果及分析 图2.1 选择界面 第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者是,W 表示写者。第三字段为一个正数,表示读写操作的开始时间。线程创建

后,延时相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。下面是一个测试数据文件的例子: 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3 测试结果如下: 图2.2 读者优先运行结果

过程控制实验报告

东南大学自动化学院 实验报告 课程名称:过程控制实验 实验名称:水箱液位控制系统 院(系):自动化专业:自动化姓名:学号: 实验室:实验组别: 同组人员: 实验时间: 评定成绩:审阅教师:

目录 一、系统概论 (3) 二、对象的认识 (4) 三、执行机构 (14) 四、单回路调节系统 (15) 五、串级调节系统Ⅰ (18) 六、串级调节系统Ⅱ (19) 七、前馈控制 (21) 八、软件平台的开发 (21)

一、系统概论 1.1实验设备 图1.1 实验设备正面图图1.2 实验设备背面图 本实验设备包含水箱、加热器、变频器、泵、电动阀、电磁阀、进水阀、出水阀、增压器、流量计、压力传感器、温度传感器、操作面板等。 1.1.2 铭牌 ·加热控制器: 功率1500w,电源220V(单相输入) ·泵: Q40-150L/min,H2.5-7m,Hmax2.5m,380V,VL450V, IP44,50Hz,2550rpm,1.1kw,HP1.5,In2.8A,ICL B ·全自动微型家用增压器: 型号15WZ-10,单相电容运转马达 最高扬程10m,最大流量20L/min,级数2,转速2800rmp,电压220V, 电流0.36A,频率50Hz,电容3.5μF,功率80w,绝缘等级 E ·LWY-C型涡轮流量计: 口径4-200mm,介质温度-20—+100℃,环境温度-20—+45℃,供电电源+24V, 标准信号输出4-20mA,负载0-750Ω,精确度±0.5%Fs ±1.0%Fs,外壳防护等级 IP65 ·压力传感器 YMC303P-1-A-3 RANGE 0-6kPa,OUT 4-20mADC,SUPPLY 24VDC,IP67,RED SUP+,BLUE OUT+/V- ·SBWZ温度传感器 PT100 量程0-100℃,精度0.5%Fs,输出4-20mADC,电源24VDC

操作系统课设: 实现读者写者(Reader-Writer Problem)问题

学 号: 课 程 设 计 2014——2015学年 第1学期 课程名称 操作系统 学 院 计算机科学与技术学院 专 业 软件工程 班 级 姓 名 指导教师

1《操作系统原理》课程设计指导书 课程编号: 课程名称:操作系统/Operating System 周数/学分:1周/1学分 先修课程:高级语言程序设计、汇编语言、数据结构、计算机组成原理 适用专业:计算机科学与技术、软件工程 开课学院、系或教研室:计算机科学与技术学院 一、课程设计的目的 通过对操作系统内核实现代码的阅读、修改、设计,理解和掌握复杂的操作系统的工作原理。 二、课程设计的内容和要求 1.系统调用 学习在Linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核空间中实现对用户空间的读写。这个函数的功能是返回当前的系统时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 2.内核定时器 通过研究内核的时间管理算法学习内核源代码。然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 3.实现生产者消费者(Bounded – Buffer Problem)问题 通过研究Linux的线程机制和信号量实现生产者消费者(Bounded Buffer)问题的并发控制。 实验条件要求:每人一台与Linux主机联网的Windows主机,普通用户权限。 4.实现读者写者(Reader-Writer Problem)问题 通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并

操作系统读者写者实验报告

《操作系统》上机实验报告 实验项目读者写者 学院(部)信息学院 专业计算机科学与技术班级 学生姓名 学号

读者写者问题 一.实验目的: 1.熟悉读者优先和写者优先的过程。 2.更好地理解进程同步的概念及其实现方法。 二.实验要求: 分别实现读者优先和写者优先。 “读-写”互斥,即不能同时有一个读者在读,同时去有一个写者在写; “写-写”互斥,即不能有两个写者同时进行写操作; “读-读”允许,即可以有两个以上的读者同时进行读操作。 三.实验内容: 读者优先: 如果没有写者正在操作,则读者不需要等待,用一个整型变量readcount 记录当前的读者数目,用于确定是否释放写者线程,(当readcout=0 时,说明所有的读者都已经读完,释放一个写者线程),每个读者开始读之前都要修改readcount,为了互斥的实现对readcount 的修改,需要一个互斥对象Mutex来实现互斥。 另外,为了实现写-写互斥,需要一个临界区对象write,当写者发出写的请求时,必须先得到临界区对象的所有权。通过这种方法,可以实现读写互斥,当readcount=1 时,(即第一个读者的到来时,),读者线程也必须申请临界区对象的所有权. 当读者拥有临界区的所有权,写者都阻塞在临界区对象write上。当写者拥有临界区对象所有权时,第一个判断完readcount==1 后,其余的读者由于等待对readcount的判断,阻塞在Mutex上! 写者优先: 写者优先和读者优先有相同之处,不同的地方在:一旦有一个写者到来时,应该尽快让写者进行写,如果有一个写者在等待,则新到的读者操作不能读操作,为此添加一个整型变量writecount,记录写者的数目,当writecount=0时才可以释放读者进行读操作!为了实现对全局变量writecount的互斥访问,设置了一个互斥对象Mutex3。 为了实现写者优先,设置一个临界区对象read,当有写者在写或等待时,读者必须阻塞在临界区对象read上。 读者除了要一个全局变量readcount实现操作上的互斥外,还需要一个互斥对象对阻塞在read这一个过程实现互斥,这两个互斥对象分别为mutex1和mutex2。

过程控制工程实验报告

成绩________ 过程控制工程 实验报告 班级:自动化10-2 姓名: 曾鑫 学号:10034080239 指导老师:康珏

实验一液位对象特性测试(计算机控制)实验 一、实验目的 通过实验掌握对象特性的曲线的测量的方法,测量时应注意的问题,对象模型参数的求取方法。 二、实验项目 1.认识实验系统,了解本实验系统中的各个对象。 2.测试上水箱的对象特性。 三、实验设备与仪器 1.水泵Ⅰ 2.变频器 3.压力变送器 4.主回路调节阀

m in y ?——被测量的变化量 m ax y ——被测量的上限值 m in y ——被测量的下限值 2) 一阶对象传递函数 s e s T K G τ-+= 1 00 K ——广义对象放大倍数(用前面公式求得) 0T ——广义对象时间常数(为阶跃响应变化到新稳态值的63.2%所需要的时间) τ——广义对象时滞时间(即响应的纯滞后,直接从图测量出) 五、注意事项 1. 测量前要使系统处于平衡状态下,反应曲线的初始点应是输入信号的开始作阶跃信号的 瞬间,这一段时间必须在记录纸上标出,以便推算出纯滞后时间τ。测量与记录工作必须 2. 所加扰动应是额定值的10%左右。 六、实验说明及操作步骤

1.了解本实验系统中各仪表的名称、基本原理以及功能,掌握其正确的接线与使用方法,以便于在实验中正确、熟练地操作仪表读取数据。熟悉实验装置面板图,做到根据面板上仪表的图形、文字符号找到该仪表。熟悉系统构成和管道的结构,认清电磁阀和手动阀的位置及其作用。 2.将上水箱特性测试(计算机控制)所用实验设备,参照流程图和系统框图接好实验线路。 3.确认接线无误后,接通电源。 4.运行组态王,在工程管理器中启动“上水箱液位测试实验” 阶液位对象。 按钮观察输出曲线。 6.在 会影响系统稳定所需的时间)。 7.改变u(k)输出,给系统输入幅值适宜的正向阶跃信号(阶跃信号在5%-15%之间),使系统的输出信号产生变化,上水箱液位将上升到较高的位置逐渐进入稳态。 8.观察计算机中上水箱液位的正向阶跃响应曲线,直至达到新的平衡为止。 9.改变u(k)输出,给系统输入幅值与正向阶跃相等的一个反向阶跃信号,使系统的输出信号产生变化,上水箱液将下降至较低的位置逐渐进入稳态。 10. 为止。 11.曲线的分析处理,对实验的记录曲线分别进行分析和处理,处理结果记录于表格2-1。 七、实验报告

操作系统课程设计-读者写者问题

操作系统课程设计报告

一、开题报告 (一)该项课程设计的意义; 1.更加深入的了解读者写者问题的算法; 2.加深对线程,进程的理解; 3.加深对“线程同步”概念的理解,理解并应用“信号量机制”; 4.熟悉计算机对处理机的管理,了解临界资源的访问方式; 5.了解C++中线程的实现方式,研读API。 (二)课程设计的任务 多进程/线程编程:读者-写者问题。 ●设置两类进程/线程,一类为读者,一类为写者; ●随机启动读者或写者; ●显示读者或写者执行状态; ●随着进程/线程的执行,更新显示; (三)相关原理及算法描述; 整体概况: 该程序从大体上来分只有两个模块,即“读者优先”和“写者优先”模块. 读者优先: 如果没有写者正在操作,则读者不需要等待,用一个整型变量readcount记录读者数目,用于确定是否释放读者线程,readcount的初值为0.当线程开始调入时. 每个读者准备读. 等待互斥信号,保证对readcount 的访问,修改互斥.即readcount++. 而当读者线程进行读操作时,则读者数目减少(readcount--).当readcout=0 时,说明所 有的读者都已经读完,离开临界区唤醒写者(LeaveCriticalSection(&RP_Write);), 释 放互斥信号(ReleaseMutex(h_Mutex)). 还需要一个互斥对象mutex来实现对全局变量Read_count修改时的互斥. 另外,为了实现写-写互斥,需要增加一个临界区对象Write。当写者发出写请求时, 必须申请临界区对象的所有权。通过这种方法,可以实现读-写互斥,当 Read_count=1时(即第一个读者到来时),读者线程也必须申请临界区对象的所有 权 写者优先: 写者优先与读者不同之处在于一旦一个写者到来,它应该尽快对文件进行写操作,如果有一个写者在等待,则新到来的读者不允许进行读操作。为此应当填加 一个整形变量write_count,用于记录正在等待的写者的数目,write_count的初值 为0.当线程开始调入时.只允许一个写者准备读. 等待互斥信号,保证对write_count 的访问,修改互斥.即write_count++.而当写者线程进行读操作时,则相应写者数目减 少(write_count--).当write_count=0 时,说明所有的读者都已经读完,离开临界区唤 醒读者,释放互斥信号. 为了实现写者优先,应当填加一个临界区对象read,当有写者在写文件或等待时,读者必须阻塞在read上。

过程控制系统实验报告

《过程控制系统实验报告》 院-系: 专业: 年级: 学生姓名: 学号: 指导教师: 2015 年6 月

过程控制系统实验报告 部门:工学院电气工程实验教学中心实验日期:年月日 姓名学号班级成绩 实验名称实验一单容水箱液位定值控制实验学时 课程名称过程控制系统实验及课程设计教材过程控制系统 一、实验仪器与设备 A3000现场系统,任何一个控制系统,万用表 二、实验要求 1、使用比例控制进行单溶液位进行控制,要求能够得到稳定曲线,以及震荡曲线。 2、使用比例积分控制进行流量控制,能够得到稳定曲线。设定不同的积分参数,进行 比较。 3、使用比例积分微分控制进行流量控制,要求能够得到稳定曲线。设定不同的积分参数,进行比较。 三、实验原理 (1)控制系统结构 单容水箱液位定值(随动)控制实验,定性分析P, PI,PD控制器特性。 水流入量Qi由调节阀u控制,流出量Qo则由用户通过负载阀R来改变。被调量为水位H。使用P,PI , PID控制,看控制效果,进行比较。 控制策略使用PI、PD、PID调节。 (2)控制系统接线表 使用ADAM端口测量或控制量测量或控制量标号使用PLC端 口 锅炉液位LT101 AI0 AI0 调节阀FV101 AO0 AO0 四、实验内容与步骤 1、编写控制器算法程序,下装调试;编写测试组态工程,连接控制器,进行联合调试。这些步骤不详细介绍。

2、在现场系统上,打开手阀QV-115、QV-106,电磁阀XV101(直接加24V到DOCOM,GND到XV102控制端),调节QV-116闸板开度(可以稍微大一些),其余阀门关闭。 3、在控制系统上,将液位变送器LT-103输出连接到AI0,AO0输出连到变频器U-101控制端上。 注意:具体哪个通道连接指定的传感器和执行器依赖于控制器编程。对于全连好线的系统,例如DCS,则必须安装已经接线的通道来编程。 4、打开设备电源。包括变频器电源,设置变频器4-20mA的工作模式,变频器直接驱动水泵P101。 5、连接好控制系统和监控计算机之间的通讯电缆,启动控制系统。 6、启动计算机,启动组态软件,进入测试项目界面。启动调节器,设置各项参数,将调节器的手动控制切换到自动控制。 7、设置PID控制器参数,可以使用各种经验法来整定参数。这里不限制使用的方法。 五、实验结果记录及处理 六、实验心得体会: 比例控制特性:能较快克服扰动的影响,使系统稳定下来,但有余差。 比例积分特性:能消除余差,它能适用于控制通道时滞较小、负荷变化不大、被控量不允许由余差的场合。 比例微分特性:对于改善系统的动态性能指标,有显著的效果。

2018年东华大学控制工程考研最详细经验帖

2018年东华大学控制工程考研最详细经验帖 在这里我就大体写一下我的复习过程,仅供参考。先介绍一下我自己的情况吧,我本科是江西理工大学,自动化专业。考的是东华大学专硕控制工程。 专业课篇 我们信息学院专业课是三选一,分别是自动控制原理,信号与系统,以及电路。我选择的是自动控制原理,因为这门课程我本科学的比较好,而且作为自动化专业核心课程,再次精研自控还是很有收获的,废话不多说。上干货。 首先参考资料,自控作为控制类的基础课,知识点杂而多,但根据考纲来看是二三四五六章最重要。因此复习时间选择在7月初开始。首先是过一遍基础,把书认真看一遍,每个考纲的知识点做到第一遍是理解的,学校给的参考书是《Modern Control Systems现代控制系统》(第九版)Richard C.Dorf Robert H.Bishop,2002年。《自动控制原理》(下),吴麒,清华大学出版社,1992年《自动控制理论》,胡寿松,科学出版社,1994年。其中英文教材是东华本科上课教材,但我选的是胡寿松的教材,经典且易懂。这部书一定要精读且把例题搞懂。 第二是复习时间规划,首先呢专业课的分值是和数学一样的,因此战略地位和数学也是一样的,只是难度来说比数学简单点,因此简单,就意味着你的分不能太低,低过头了就是谢谢参与了。有些人总以为暑假后也可以来得及,这种错误太低级了,因从我给的建议是从七月开始,每天至少三个小时复习时间。一直到考试前。 第三是复习方法。首先是教材的使用,我的建议是必须看两遍以上,第一遍首先建立自己已经忘记的差不多的知识体系,顺便温故一下知识点,然后做例题,做习题,根据习题的情况复习和巩固自己的知识。第二遍就是重点根据第一遍的自身情况再着重复习。其次是真题了,真题最能看出学校出题的思路和重点,一定要好好做和复习,最少三遍以上。 复试经验:

操作系统实验 读者写者问题

《计算机操作系统》实验报告 题目读者写者问题 学院(部)信息学院 专业计算机科学与技术 班级 学生姓名 学号 指导教师(签字)

一、问题描述 一个数据文件或者记录,可以被多个进程共享,我们把只要求读该文件的进程称为“Reader进程”,其他进程则称为“Writer进程”。允许多个进程同时读一个共享对象,因为读操作不会是数据文件混乱。但不允许一个Writer进程和其他Reader进程或者Writer进程同时访问共享对象,因为这种访问将会引起混乱。所谓“读者——写着问题(Reader—Writer Problem)”是指保证一个Writer进程必须与其他进程互斥地访问共享对象的同步问题 二、解决问题 为实现Reader与Writer进程间在读或写是的互斥而设置了一个互斥的信号量Wmutex。另外,在设置一个整型变量Readcount表示正在读的进程数目。由于只要有一个Reader进程在读,便不允许Writer去写。因此,仅当Readercount=0时,表示尚无Reader进程在读时,Reader进程才需要进行Wait(wmutex)操作。若Wait(Wmutex)操作成功,Reader进程便可去读,相应地,做Readcount+1操作。同理,仅当Reader进程在执行了Readercount-1操作后其值为0时,才执行Signal(Wmutex)操作,以便让Writer进程写。又因为Readercount是一个可被多个Reader进程访问的临界资源,因此也应该为它设置一个互斥信号量rmutex。 三、代码实现 1、读者优先 #include #include using namespace std; CRITICAL_SECTION rmutex,wmutex; int wr; int readernum; DWORD WINAPI reader(LPVOID IpParamter){ cout<<"读者申请\n"; wr++; EnterCriticalSection(&rmutex); if(readernum==0) EnterCriticalSection(&wmutex); readernum++; cout<<"读者进入成功正在读取\n"; LeaveCriticalSection(&rmutex); Sleep(2000); EnterCriticalSection(&rmutex); readernum--; cout<<"读者退出\n"; wr--;

读者写者问题

一设计概述 所谓读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。 读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。 信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者问题则是这一机制的一个经典范例。 与记录型信号量解决读者—写者问题不同,信号量机制它增加了一个限制,即最多允许RN个读者同时读。为此,又引入了一个信号量L,并赋予初值为RN,通过执行wait(L,1,1)操作,来控制读者的数目,每当有一个读者进入时,就要执行wait(L,1,1)操作,使L的值减1。当有RN个读者进入读后,L便减为0,第RN+1 个读者要进入读时,必然会因wait(L,1,1)操作失败而堵塞。对利用信号量来解决读者—写者问题的描述如下: Var RN integer;L,mx:semaphore: =RN,1; Begin Parbegin Reader :begin Repeat Swait(L,1,1); Swait(mx,1,0); . Perform reader operation; Ssignal(L,1); Until false; End

Writer :begin Repeat Swait(mx ,1,1,l,RN,0); Perform writer operation; Ssignal(mx,1); Until false; End Parend End 其中,Swait(mx,1,0)语句起着开关作用,只要无Writer进程进入些,mx=1,reader进程就都可以进入读。但是要一旦有Writer进程进入写时,其MX=0,则任何reader进程就都无法进入读。Swait(mx ,1,1,l,RN,0)语句表示仅当既无Write 进程在写(mx=1),又无reader进程在读(L=RN)时,writer进程才能进入临界区写。 本设计方案就是通过利用记录型信号量对读者写者问题的解决过程进行模拟演示,形象地阐述记录型信号量机制的工作原理。 二设计目的与内容 一实验目的 l. 用信号量来实现读者写者问题。 2. 理解和运用信号量、PV原语、进程间的同步互斥关系等基本知识。二、二实验内容 读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:(1)任意多个读进程可以同时读这个文件; (2)一次只有一个写进程可以往文件中写; (3)如果一个写进程正在进行操作,禁止任何读进程度文件。

《过程控制系统》实验报告

《过程控制系统》实验报告 学院:电气学院 专业:自动化 班级:1505 姓名及学号:任杰311508070822 日期:2018.6.3

实验一、单容水箱特性测试 一、 实验目的 1. 掌握单容水箱阶跃响应测试方法,并记录相应液位的响应曲线。 2. 根据实验得到的液位阶跃响应曲线,用相关的方法确定被测对象的特征参数T 和传递函数。 二、 实验设备 1. THJ-FCS 型高级过程控制系统实验装置。 2. 计算机及相关软件。 3. 万用电表一只。 三、 实验原理 图1 单容水箱特性测试结构图 由图 2-1 可知,对象的被控制量为水箱的液位 h ,控制量(输入量)是流入水箱中的流量 Q 1,手动阀 V 1 和 V 2 的开度都为定值,Q 2 为水箱中流出的流量。根据物料平衡关系,在平衡状态时02010=-Q Q (式2-1),动态时,则有dt dV Q Q = -21,(式2-2)式中 V 为水箱的贮水容积,dt dV 为水贮存量的变化率,它与 h 的关

系为Adh dV =,即dt dh A dt dV =(式2-3),A 为水箱的底面积。把式(2-3)代入式(2-2)得dt dh A Q Q =-21(式2-4)基于S R h Q =2,S R 为阀2V 的液阻,(式2-4)可改写为dt dh A R h Q S =-1,1KQ h dt dh AR S =+或()()1s 1+=Ts K s Q H (式2-5)式中s AR T =它与水箱的底面积A 和2V 的S R 有关,(式2-5)为单容水箱的传递函数。若令()S R S Q 01=,常数=0R ,则式2-5可表示为()T S KR S R K S R T S T K S H 11/000+-=?+= 对上式取拉氏反变换得()()T t e KR t h /01--=(式2-6),当∞→t 时()0KR h =∞,因而有()0/R h K ∞==输出稳态值/阶跃输入,当T t =时,()() ()∞==-=-h KR e KR T h 632.0632.01010,式2-6表示一阶惯性响应曲线是一单调上升的指数函数如下图2-2所示 当由实验求得图 2-2 所示的阶跃响应曲线后,该曲线上升到稳态值的 63%所对应的时间,就是水箱的时间常数 T 。该时间常数 T 也可以通过 坐标原点对响应曲线作切线,切线与稳态值交点所对应的时间就是 时间常数 T ,由响应曲线求得 K 和 T 后,就能求得单容水箱的传递函 数如式(2-5)所示。 如果对象的阶跃响应曲线为图 2-3,则在此曲线的拐点 D 处作一切线,它与时间轴交于 B 点,与响应稳态值的渐近线交于 A 点。图中OB 即为对象的滞后时间

东华大学操作系统存储管理实验报告

东华大学计算机学院 操作系统实验报告 实验名称:存储管理问题 姓名:姜元杰 学号:111310228 班级:计算机1102 指导老师:李继云 报告日期:2013/11/2

一、实验概述 1.实验目标 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页 面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的 页面置换算法。 2.实验要求 1)通过随机数产生一个指令序列,共320条指令,指令的地址按下述 原则生成: ●50%的指令是顺序执行的; ●25%的指令是均匀分布在前地址部分。 ●25%的指令是均匀分布在后地址部分。 2)将指令序列变换成页地址流 ●页面大小= 10条指令 ●4页<=用户内存容量<=32页; ●用户虚存容量= 32页; ●在用户虚存中,按每K存放10条指令排列虚存地址 3)计算并输出下述各种算法在不同内存容量下的命中率。 ●先进先出的算法(FIFO); ●最近最少使用算法(LRU); ●最佳淘汰算法(OPT); ●命中率=1-页面失效次数/页地址流长度; 输出以表结构输出,行头是页码,列头是对应替换算法。在本实验 中,页地址流长度为320,页面失效次数为每次访问相应指令时,该 指令所对应的页不在内存的次数。

二、实验内容 1.设计思路 总体思路: 设计存储管理类(class StorageManagemen),封装FIFO,LRU,OPT算法实现函 数与各自所需公共或个体数据机构和公共代码部分,实现“TOP-DOWN”的程序设 计思想,增强代码结构性和可读性。 1)先进先出的算法(FIFO):FIFO是最简单的页置换算法,FIFO的页置 换的算法为每个页记录着该页调入内存的时间。当必须置换一页时,将 选择最旧的页。注意并不需要记录调入一页的确切时间,可以创建一个 FIFO队列来管理内存中的所有页。队列中的首页将被置换。当需要调入 页时,将它加入到队列的尾部。FIFO的页置换算法很好理解和实现,但 是,其性能并不是很好。所替代的页可能是很久以前使用的、现已不再 使用的初始化模块,另一方面,所替代的页可能包含一个以前初始化的 并且不断使用的常用变量。 2)最近最少使用算法(LRU):选择最近最长时间未访问过的页面予以淘 汰,默认过去一段时间内未访问过的页面,在最近的将来可能也不会被 访问。本实验实现算法通过为每个页面设置一个访问字段,用来记录页 面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大 的予以淘汰。尽管各类参考书声明LRU算法为堆栈类算法,但本实验通 过优先队列完全可以实现。 3)最佳淘汰算法(OPT):最佳置换算法所选择的被淘汰页面将是以后永不 使用,或者是在最长时间内不再被访问的页面,这样可以保证获得最低 的缺页率。本实验实现算法通过为每个页面设置一个CPU使用“间隔” ——即表示CPU将在未处理的页面序列中第几步处理到该页面,如果页 面不再被CPU处理,赋值为极大值(INT_MAX),淘汰页面时选择现有 页面中值最大的予以淘汰。本实验同LRU一样,通过优先队列实现。2.主要数据结构

北理工操作系统实验二读者写者问题

本科实验报告 实验名称:操作系统原理实验(读者写者问题) 课程名称:操作系统原理实验时间:2015.10.30 任课教师:王耀威实验地点:10#102 实验教师:苏京霞 实验类型: 原理验证□综合设计□自主创新 学生姓名:孙嘉明 学号/班级:1120121474/05611202 组号:学院:信息与电子学院同组搭档:专业:信息对抗技术成绩:

实验二:读者写者问题 一、实验目的 1.通过编写和调试程序以加深对进程、线程管理方案的理解; 2.熟悉Windows多线程程序设计方法; 二、实验要求 在Windows环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先) 1)写-写互斥:不能有两个写者同时进行写操作 2)读-写互斥:不能同时有一个线程在读,而另一个线程在写。 3)读-读允许:可以有一个或多个读者在读。 读者优先的附加限制:如果读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。 测试数据文件包括 n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,每个字段间用空格分隔。第1个字段为正整数,表示线程的序号。第2个字段表示线程的角色,R表示读者,W表示写者。第3个字段为一个正数,表示读写开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。第4个字段为一个正数,表示读写操作的延迟时间。当线程读写申请成功后,开始对共享资源进行读写操作,该操作持续相应时间后结束,释放该资源。 下面是一个测试数据文件的例子(在记事本手工录入数据): 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3

过程控制实验报告8

实验报告 课程名称:过程控制 实验名称:单回路控制系统的参数整定专业:自动化专业 姓名: 学号: 2013 /2014 学年第 2 学期

实验一单回路控制系统的参数整定 2014年4月28日 一、实验要求 1、了解调节器特性的实验测试方法; 2、掌握依据飞升特性曲线求取对象动态特性参数和调节器参数的方法; 3、熟悉单回路控制系统的工程整定方法。 二、实验内容 测得某工业过程的单位阶跃响应数据,如附表所示;单位阶跃响应曲线,如图1所示: 0.2 0.4 0.6 0.8 1 1.2 t/s y ( t ) 0.2 0.4 0.6 0.8 1 1.2 t/s y ( t ) 图1 单位阶跃响应曲线 1、试用高阶传递函数描述该过程的动态特性; G(s)=K/(Ts+1) 2=1.25/(25.9s+1) 2*e^-10s 2、在Simulink中搭建解算出的被控对象单回路控制系统; 3、采用稳定边界法整定调节器参数,并给出P、PI、PID三种调节器的控制曲线; Kp=5,Pm=1/Kp=0.2时,等幅振荡,Tm80。

P: 2Pm=0.4 PI: 2.2Pm=0.44 0.85Tm=68 PID: 1.7Pm=0.34 0.5Tm=40 0.125Tm=10 三种调节器的控制曲线:

4、比较、分析实验结果 P调节器稳态产生了静差;PI调节器相对P调节器稳态无静差,但是调节时间延长;PID 调节器相对前两者无论上升时间还是调节时间都变短了,稳态也无静差。

实验报告 课程名称:过程控制 实验名称:串级控制系统专业:自动化专业 姓名: 学号: 2013 /2014 学年第 2 学期

相关主题
文本预览
相关文档 最新文档