文档库 最新最全的文档下载
当前位置:文档库 › 进程控制与描述实验报告

进程控制与描述实验报告

进程控制与描述实验报告
进程控制与描述实验报告

一、实验目的

利用Windows提供的API函数,编写程序,实现进程的创建和终止(如创建写字板进程及终止该进程),加深对操作系统进程概念的理解,观察操作系统进程运行的动态性能,获得包含多进程的应用程序编程经验。

二、实验内容

编写一个在dos界面下的简单进程控制系统,实现根据用户选项进行进程的创建、终止,并提供进程的状态。

(1)进程的创建和终止。编写一段程序,可以创建一个进程,并终止当前创建的进程。试观察记录程序执行的结果,并分析原因。

(2)利用VC++6.0实现上述程序设计和调试操作,对于进程创建的成功与否、终止进程操作的成功与否提供一定的提示框。

(3)通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法

三、实验步骤

1.创建进程

使用了Windows提供的CreateProcess函数来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。

函数原型:

BOOL CreateProcess{

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes。

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFlags,

LPVOID lpEnvironment,

LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

};

一个线程调用该函数首先创建一个进程内核对象用来管理此新进程,随后系统为新进程创建虚拟地址空间,并将可执行文件的代码和数据加载到这个地址空间,接着系统为新进程的主线程创建一个线程内核对象。

本程序所使用的函数中各参数的解释:

1.lpApplicationName

指向一个NULL结尾的、用来指定可执行模块的字符串。这个字符串可以使可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。

这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于lpCommandLine 参数的最前面并由空格符与后面的字符分开。

2.lpCommandLine

传递给新进程的命令行字符串,应当为非常量字符串的地址。可以设定一个完整的命令行,如果第一个标记没有扩展名,CreateProcess将其假设为.exe。如果找不到该文件,CreateProcess按环境设置目录搜索运行。

3.bInheritHandles

决定子进程对父进程继承性,一般设为FALSE。

4.dwCreationFlags

用于标识标志,以便用于规定如何来创建新进程。

5.lpStartupInfo

指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体。

6.lpProcessInformation

指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体。

在使用CreateProcess函数之前首先要对STARTUPINFO结构体进行初始化,来指定新的进程如何显示,这里对参数不再详细展开。

PROCESS_INFORMATION结构体

typedef struct _PROCESS_INFORMATION {

HANDLE hProcess; // 存放每个对象的与进程相关的句柄

HANDLE hThread; // 返回的线程句柄

DWORD dwProcessId; // 用来存放进程ID号

DWORD dwThreadId; // 用来存放线程ID号

}PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION ;

调用Createprocess()函数后,会自动地对该结构进行填充。

创建新进程可使系统建立一个进程内核对象和一个线程内核对象。在创建进程的时候,系统为每个对象赋予一个初始使用计数值1 。然后,在createProcess 返回之前,该函数打开进程对象和线程对象,并将每个对象的与进程相关的句柄放入PROCESS_INFORMATIO结构的hProcess和hThread成员中。当CreateProcess 在内部打开这些对象时,每个对象的使用计数就变为2。

2.终止进程

一个进程终止时,系统会依次执行以下操作:

1、终止进程中遗留的任何线程。

2、释放进程分配的所有用户对象,关闭所有内核对象。如果它们的使用计数变为0,内核对象将会释放。

3、将进程的退出代码从STILL_ACTIVE变为传给ExitProcess或是

TerminateProcess的参数存储在内核对象中。

4、进程内核对象变为一触发状态。这也是为什么其他线程可以挂起他们自己直至另一个进程终止运行。

5、进程内核对象的使用计数递减1。

本实验使用了Windows提供的TerminateProcess函数来终止进程。

TerminateProcess函数原型:

BOOL TerminateProcess{

HANDLE hProcess

UINT uExitCode

};

函数中各参数的解释:

1.hProcess

指定要中断进程的句柄。该句柄可以由 OpenProcess得到.

2.uExitCode

进程和其所有线程的退出代码

这个函数可以用来终止或者说杀死一个进程,它不会留给进程及其所有线程清理的时间,系统会马上终止(杀死)这个进程的所有线程,致使进程终止。在使用此函数前我们必须要调用OpenProcess函数来获得我们要终止进程的句柄,并且要获得进程的PROCESS_TERMINATE权限。

本次试验中设计的简单进程控制系统,由于采用了堆栈式的方法,即每次都将用来接收新进程的识别信息的PROCESS_INFORMATION结构体存入到一个特定的堆栈中去,这样就可以直接利用里面的参数获取需要终止的进程的句柄,从而避免了使用OpenProcess函数的麻烦。当然若这种方法只适用与这样一个简单的小型系统,并不具有普适性。

四、系统截图

1、初始界面

2、打开多个进程

3、关闭进程和相关提醒

五、思考

1.系统是怎样创建进程的?

操作系统分成以下步骤来完成:1)打开将要再该进程中执行的映像文件;2)创建Windows执行体进程对象;3)创建初始线程(栈、堆执行环境初始化及执行线程体对象);4)通知Windows子系统已新进程创建;5)开始执行初始线程;6)在新进程和线程环境中完成地址空间的初始化(比如加载必须的DLL和库),然后开始到进程入口执行。至此,完成所有的创建工作。

2.可执行文件加载时进行了那些处理?

首先操作系统判断该文件是否是一个合法的可执行文件。如果是则操作系统将按照段表中的指示为可执行程序分配地址空间。

再者进行了将源代码转换为机器可认识代码的过程。编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。具体经过以下几个处理:

C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件。

3.当首次调用新创建进程时,其入口在哪里?

首次调用新创建进程的入口在指向进程的句柄。

六、遇到的问题

1、由于是第一次接触到Createprocess函数和TerminateProcess函数,所以对函数内部的参数意义并不是很明朗,导致无法顺利地创建与终止进程,因此也花了较多的时间去了解各个参数实际的作用;

2、在实验的过程中碰到了不同编译器对有效地址字符串的处理问题,如在cfree编辑器正常运行的代码在VS中报错,强制转换后出现指针溢出等问题。经过反复思考与去网上所搜答案得知VS在处理字符串时转化成Unicode编码进行,在改过后VS无报错现象;

3、在上面的叙述中也有提到,针对这次试验的特殊性,并没有使用OpenProcess函数去获取相应进程的句柄并加以控制,而是用了比较取巧的方法保留了每个进程的状态信息,虽然简化了代码的编写,但实际并不正规;

4、也是花了较大的力气去尝试给出用户界面,但是在VS2010环境下MFC程序不知原因报出了一个溢出错误,暂时无法解决;而且想利用通过将C代码封装成dll文件并用C#进行调用的努力也以失败结束,因此在这次的实验中只能采用dos下的简单用户界面,也算是无奈之举,接下来的实验会努力给出完整的界面使其看起来更像一个完整的系统。

过程控制系统实验报告材料(最新版)

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

动态时,则有 Q1-Q2=dv/dt (2) 式中 V 为水箱的贮水容积,dV/dt为水贮存量的变化率,它与 H 的关系为 dV=Adh ,即dV/dt=Adh/dt (3) A 为水箱的底面积。把式(3)代入式(2)得 Q1-Q2=Adh/dt (4) 基于Q2=h/RS,RS为阀V2的液阻,则上式可改写为 Q1-h/RS=Adh/dt 即 ARsdh/dt+h=KQ1 或写作 H(s)K/Q1(s)=K/(TS+1) (5) 式中T=ARs,它与水箱的底积A和V2的Rs有关:K=Rs。 式(5)就是单容水箱的传递函数。 对上式取拉氏反变换得 (6) 当t—>∞时,h(∞)=KR0 ,因而有K=h(∞)/R0=输出稳态值/阶跃输入当 t=T 时,则有 h(T)=KR0(1-e-1)=0.632KR0=0.632h(∞)

式(6)表示一阶惯性环节的响应曲线是一单调上升的指数函数,如图 2-2 所示。当由实验求得图2-2所示的阶跃响应曲线后,该曲线上升到稳态值的63%所对应的时间,就是水箱的时间常数T。该时间常数 T也可以通过坐标原点对响应曲线作切线,切线与稳态值交点所对应的时间就是时间常数T,由响应曲线求得K和T后,就能求得单容水箱的传递函数。如果对象的阶跃响应曲线为图2-3,则在此曲线的拐点D处作一切线,它与时间轴交于B点,与响应稳态值的渐近线交于A点。图中OB即为对象的滞后时间τ,BC为对象的时间常数T,所得 的传递函数为: 四、实验内容与步骤 1.按图2-1接好实验线路,并把阀V1和V2开至某一开度,且使V1的开度大于V2的开度。 2.接通总电源和相关的仪表电源,并启动磁力驱动泵。

linux进程控制 实验报告

长安大学 操作系统实验报告 实验课程:操作系统 实验名称:linux进程控制 学院:信息学院 专业:软件工程 学号:2406090106 姓名:刘建 日期:2012-5-09

一、实验目的 熟悉进程的创建过程,了解系统调用函数fork() 和execl()。 二、实验内容 1、阅读实例代码fork1,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握系统调用fork( )的用法,返回值的意义。 2、阅读实例代码fork2,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握在程序中运行一个操作系统命令和运行一个程序的方法。 3、修改fork2,使之能把运行的命令和程序作为参数传给fork2。 三、设计思想 1、程序框架

pid = -1 pid = 0pid> 0 2、用到的文件系统调用函数 fork() 和execl() 四、调试过程 1、测试数据设计 (1)fork1 命名程序1: 编写程序1:

编译程序1: 运行程序1: (2)fork2

编写程序2: 运行程序2:

(3)修改fork2 编写修改程序2: 修改后的运行结果: 2、测试结果分析 (1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返回的pid = 0,判断pid!=-1,所以输出了I’m the child. I’m the parent. 第二次,执行父进程的时候,返回的是子进程的进程号pid> 0,即pid的值仍然不为-1,所以又输出了一次I’m the child. I’m the parent。 (2)对于程序2:第一次调用fork()函数时,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid> 0,所以输出I’m the parent. Program end.当第二次执行子进程时返回值是0,即pid = 0,所以输出I’m the child. 并调用了execl()函数,查看了指定路径中的文件。

windows进程管理实验报告

实验报告 课程名称:操作系统 实验项目:windows进程管理 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 计算机系 2019 年 4 月 23 日

实验项目名称: windows进程管理 一、实验目的 1. 学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2. 利用C++实现线程创建、线程撤销、线程同步程序; 3. 完成思考、设计与练习。 二、实验用设备仪器及材料 1. Windows 7或10, VS2010及以上版本。 三、实验内容 1 线程创建与撤销 写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 相关系统调用: 线程创建: CreateThread() 线程撤销: ExitThread() 线程终止: ExitThread(0) 线程挂起: Sleep() 关闭句柄: CloseHandle() 参考代码: ; } 运行结果如图所示。 完成以下设计题目: 1. 向线程对应的函数传递参数,如字符串“hello world!”,在线程中显示。 2. 如何创建3个线程A, B, C,并建立先后序执行关系A→B→C。

实验内容2 线程同步 完成父线程和子线程的同步。父线程创建子线程后进入阻塞状态,子线程运行完毕后再唤醒。 相关系统调用: 等待对象 WaitForSingleObject(), WaitForMultipleObjects(); 信号量对象 CreateSemaphore(), OpenSemaphore(), ReleaseSemaphore(); HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount, _In_opt_ LPCTSTR lpName ); 第一个参数:安全属性,如果为NULL则是默认安全属性 第二个参数:信号量的初始值,要>=0且<=第三个参数 第三个参数:信号量的最大值 第四个参数:信号量的名称 返回值:指向信号量的句柄,如果创建的信号量和已有的信号量重名,那么返回已经存在的信号量句柄参考代码: n"); rc=ReleaseSemaphore(hHandle1,1,NULL); err=GetLastError(); printf("Release Semaphore err=%d\n",err); if(rc==0) printf("Semaphore Release Fail.\n"); else printf("Semaphore Release Success. rc=%d\n",rc); } 编译运行,结果如图所示。

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

过程控制实验报告

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

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

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

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

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

计算机过程控制实验报告

计算机过程控制实验报告

实验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 单容水箱液位数学模型的测定实验

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

过程控制实验报告

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

目录 一、系统概论 (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

浙工大过程控制实验报告

浙工大过程控制实验报告 202103120423徐天宇过程控制系统实验报告 实验一:系统认识及对象特性测试 一实验目的 1了解实验装置结构和组成及组态软件的组成使用。 2 熟悉智能仪表的使用及实验装置和软件的操作。 3熟悉单容液位过程的数学模型及阶跃响应曲线的实验方法。 4学会有实际测的得单容液位过程的阶跃响应曲线,用相关的方法分别确定它们的参数,辨识过程的数学模型。二实验内容 1 熟悉用MCGS组态的智能仪表过程控制系统。 2 用阶跃响应曲线测定单容液位过程的数学模型。三实验设备 1 AE2000B型过程控制实验装置。 2 计算机,万用表各一台。 3 RS232-485转换器1只,串口线1根,实验连接线若干。四实验原理 如图1-1所示,设水箱的进水量为Q1,出水量为Q2,水箱的液面高度为h,出水阀V2固定于某一开度值。根据物料动态平衡的关系,求得: 在零初始条件下,对上式求拉氏变换,得:

式中,T为水箱的时间常数(注意:阀V2的开度大小会影响到水箱的时间常数),T=R2*C,K=R2为单容对象的放大倍数, R1、R2分别为V1、V2阀的液阻,C 为水箱的容量系数。 阶跃响应曲线法是指通过调节过程的调节阀,使过程的控制输入产生一个阶跃变化,将被控量随时间变化的阶跃响应曲线记录下来,再根据测试记录的响应曲线求取输入输出之间的数学模型。本实验中输入为电动调节阀的开度给定值OP,通过改变电动调节阀的开度给定单容过程以阶跃变化的信号,输出为上水箱的液位高度h。电动调节阀的开度op通过组态软件界面有计算机传给智能仪表,有智能仪表输出范围为:0~100%。水箱液位高度有由传感变送器检测转换为4~20mA的标准信号,在经过智能仪表将该信号上传到计算机的组态中,由组态直接换算成高度值,在计算机窗口中显示。因此,单容液位被控对象的传递函数,是包含了由执行结构到检测装置的所有液位单回路物理关系模型有上述机理建模可知,单容液位过程是带有时滞性的一阶惯性环节,电动调节阀的开度op,近似看成与流量Q1成正比,当电动调节阀的开度op为一常量作为阶跃信号时,该单容液位过程的阶跃响应为 需要说明的是表达式(2-3)是初始量为零的情况,如果是在一个稳定的过程下进行的阶跃响应,即输入量是在原来的基础上叠加上op的变化,则输出表达式是对应原来输出值得基础上的增

昆明理工大学进程管理实验报告

昆明理工大学信息工程与自动化学院学生实验报告 (2010 —2011 学年第二学期) 课程名称:操作系统开课实验室:年月日 目录 一、实验目的 (1) 二、实验原理及基本技术路线图 (1) 1. 进程的状态转换图 (2) 2. 各原语的功能说明 (2) 3.多级反馈队列调度算法的描述 (3) 4. 程序功能结构图 (4) 5. 流程图 (4) 6. 数据结构定义 (5) 7. 主要变量的说明 (6) 8. 函数的说明 (6) 四、实验方法、步骤 (6) 五、实验过程原始记录 (18) 六、实验结果、分析和结论 (21) 一、实验目的 通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。 二、实验原理及基本技术路线图(方框原理图) 用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用

多级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。 1.进程的状态转换图: 2.各原语的功能说明: -进程创建原语:进程创建是调用创建原语来实现。创建原语扫描系统的PCB链表,在找到一定PCB 链表之后,填入调用者提供的有关参数(这些参数包括:进程名、进程优先级P0、进程正文段起始地址d0、资源清单R0等),最后形成代表进程的PCB结构。 -进程撤销(终止): 撤消原语首先检查PCB进程链或进程家族,寻找所要撤消的进程是否存在。如果找到了所要撤消的进程的PCB结构,则撤消原语释放该进程所占有的资源之后,把对应的PCB结构从进程链或进程家族中摘下并返回给PCB空队列。如果被撤消的进程有自己的子进程,则撤消原语先撤消其子进程的PCB结构并释放子进程所占用的资源之后,再撤消当前进程的PCB结构和释放其资源。

过程控制系统实验报告

《过程控制系统实验报告》 院-系: 专业: 年级: 学生姓名: 学号: 指导教师: 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控制器参数,可以使用各种经验法来整定参数。这里不限制使用的方法。 五、实验结果记录及处理 六、实验心得体会: 比例控制特性:能较快克服扰动的影响,使系统稳定下来,但有余差。 比例积分特性:能消除余差,它能适用于控制通道时滞较小、负荷变化不大、被控量不允许由余差的场合。 比例微分特性:对于改善系统的动态性能指标,有显著的效果。

过程控制实验报告

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

第一章、过程控制实验装置的认识 一、过程控制实验的基本内容及概述 本次过程控制实验主要是对实验室的水箱水位进行控制。水箱液位控制系统是一个简单控制系统,所谓简单液位控制系统通常是指由一个被控对象、一个检测变送单元(检测元件及变送器)、以个控制器和一个执行器(控制阀)所组成的单闭环负反馈控制系统,也称为单回路控制系统。 简单控制系统有着共同的特征,它们均有四个基本环节组成,即被控对象、测量变送装置、控制器和执行器。 图1-1 水箱液位控制系统的原理框图 这是单回路水箱液位控制系统,单回路调节系统一般指在一个调节对象上用一个调节器来保持一个参数的恒定,而调节器只接受一个测量信号,其输出也只控制一个执行机构。本系统所要保持的恒定参数是液位的给定高度,即控制的任务是控制水箱液位等于给定值所要求的高度。 二、主要设备 1)水路装置的认识 过程控制实验用的水路装置图如下

图1-2 水路图 由水路装置图我们看到,装置主要有水箱,交流电动泵,热炉,管道,电动阀,电磁阀,流量计,液位传感器,温度传感器组成,可以构成一个完整的过程控制实验平台。从上图我们可以看出,装置主要分为两大部分,第一水路,管道,热炉,水箱等等物理对象,第二是传感器,执行机构等等的控制部分的装置。 实验装置具体介绍如下:

b)电气连接图 由电气装置的图我们可以看到,所有的电器连接都在这里,主要是一些传感器信号,电动驱动信号,用于电动装置的驱动。 见附件 c)操作面板图: 从操作面板上我们可以看到主要是由四个表,由P909构成,用于测量控制压力、流量、液位、温度的测量以及控制,PV代表反馈测量,外给定可以用于串级控制,OUT用于输出信号,以上接口均使用4-20mA标准 见附件 第二、三章、实验系统的认知(包括力控软件,P909,实验装置) a)力控软件的安装 首先使用光盘里的Setup.exe安装力控软件的主题部分,然后将IO Servers文件夹拷到力控软件的安装目录下,安装IO Servers驱动 然后打开力控软件,寻找到力控软件的目录,点击开发模式,然后找到COM设置的部分,如图

操作系统-进程管理实验报告

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include #include #include #include int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){ printf("b\n"); } 1/11

else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

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

《过程控制系统》实验报告 学院:电气学院 专业:自动化 班级: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 即为对象的滞后时间

进程管理_实验报告一流程图

实验一 课程名称:操作系统 课程类型:必修 实验项目名称:进程管理 实验题目:短作业优先算法、动态可剥夺优先数算法和基本循环轮转算法。 一、实验目的 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实验要求学生独立的用高级语言编写和调试一个简单的模拟进程调度的程序。通过本实验,加深学生理解有关进程控制块、进程队列的概念,并体会和了解短作业优先、优先数和时间片轮转调度算法的具体实施办法。 二、实验要求及实验环境 (1)设计一个有n 个进程的进程调度程序(具体个数可由键盘输入)。每一个进程用一个进程控制块PCB 来代表。PCB 中应包含下列信息:进程名、进程优先数、进程的状态、进程需要运行的时间及利用CPU运行的时间等。进程的个数、各进程的优先数、轮转时间片数以及进程运行需要地时间可由

键盘输入。 (2)调度程序应包含2~3 种不同的调度算法,运行时可任选一种。 (3)每个进程处于运行Run、就绪ready 和完成Finish 三种状态之一,假定初始状态都为就绪状态ready。(也可没有Finish状态,可以在设计程序时实现处以Finish状态的进程删掉)。 (4)系统能显示各进程状态和参数的变化情况。(5)动态可剥夺优先数算法是:在创建进程时给定一个初始的优先数,当进程获得一次cpu后其优先数就减少1,如果就绪队列中有优先级更高的将剥夺运行中的进程。 三、设计思想 (本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.程序流程图 (见下图) 2.逻辑设计 使用链表表示就绪队列,每个元素包括进程名、进程优先数、进程的状态、进程需要运行的时间及利用CPU运行的时间等信息。 该结构需支持以下操作:取头节点,在表尾插入节

过程控制实验报告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 学期

进程管理实验报告

进程管理实验报告 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。

(3)运行并查看结果 child’s pid=2894 child’s pid=2994 parent’s pid=2849 child’s pid=2897 child’s pid=2897 parent’s pid=2849 child’s pid=2894 child’s pid=2994 parent’s pid=2849 (4)gedit创建进程2.c 使用gcc 2.c -o 2编译并./2运行程序2.c#include #include #include #include #include(6)运行并查看结果 new program ! -rw-r–r--. 1 root root 2456 Apr 14 2019 /etc/passwd child peocess PID:29035 4 .思考 (1) 系统调用fork()是如何创建进程的?

过程控制控实验报告

实验一 单容自衡水箱特性的测试 一、实验目的 1. a 根据实验得到的液位阶跃响应曲线,用相应的方法确定被测对象的特征参数K 、T 和传递函数。 二、实验设备 1. A3000高级过程控制实验系统 2. 计算机及相关软件 三、实验原理 由图2.1可知,对象的被控制量为水箱的液位h ,控制量(输入量)是流入水箱中的流量Q 1,Q 2为流出水箱的流量。手动阀QV105和闸板QV116的开度(5~10毫米)都为定值。根据物料平衡关系,在平衡状态时: 0Q Q 2010=- (1) 动态时则有: dt dV Q Q 21=- (2) 式中V 为水箱的贮水容积,dt dV 为水贮存量的变化率,它与h 的关系为Adh dV =,即: dt dh A dt dV = (3) A 为水箱的底面积。把式(3)代入式(2)得: QV116 V104 V103 h ?h QV105 QV102 P102 LT103 LICA 103 FV101 M Q 1 Q 2 图2.1单容水箱特性测试结构图

图2.2 单容水箱的单调上升指数曲线 dt dh A =-21Q Q (4) 基于S 2R h Q =,R S 为闸板QV116的液阻,则上式可改写为dt dh A R h Q S =-1,即: 或写作: 1 )()(1+=TS K s Q s H (5) 式中T=AR S ,它与水箱的底积A 和V 2的R S 有关;K=R S 。式(5)就是单容水箱的传递函数。 若令S R s Q 01)(=,R 0=常数,则式(5)可改为: T S KR S R K S R T S T K s H 0011/)(0+-=?+= 对上式取拉氏反变换得: )e -(1KR h(t)t/T 0-= (6) 当∞→t 时0KR )h(=∞,因而有=∞=0R )h(K 阶跃输入 输出稳态值。当t=T 时,则)h(KR )e -(1KR h(T) 001∞===-0.6320.632。式(6)表示一阶惯性环节的响应曲线是一单调上升的指数函数,如图2.2所示。 当由实验求得图2.2所示的阶跃响应曲线后,该曲线上升到稳态值的63%所对应的时间,就是水箱的时间常数T 。该时间常数T 也可以通过坐标原点对响应曲线作切线,切线与稳态值交点所对应的时间就是时间常数T ,由响应曲线求得K 和T 后,就能求得单容水箱的传递函数。 1KQ h dt dh AR S =+

相关文档