清华大学《控制工程基础》课件-4

清华大学《控制工程基础》课件-4
清华大学《控制工程基础》课件-4

则系统闭环传递函数为

假设得到的闭环传递函数三阶特征多项式可分解为

令对应项系数相等,有

二、高阶系统累试法

对于固有传递函数是高于二阶的高阶系统,PID校正不可能作到全部闭环极点的任意配置。但可以控制部分极点,以达到系统预期的性能指标。

根据相位裕量的定义,有

则有

由式可独立地解出比例增益,而后一式包含两个未知参数和,不是唯一解。通常由稳态误差要求,通过开环放大倍数,先确定积分增益,然后计算出微分增益。同时通过数字仿真,反复试探,最后确定、和三个参数。

设单位反馈的受控对象的传递函数为

试设计PID控制器,实现系统剪切频率

,相角裕量。

解:

由式,得

由式,得

输入引起的系统误差象函数表达式为

令单位加速度输入的稳态误差,利用上式,可得

试探法

采用试探法,首先仅选择比例校正,使系统闭环后满足稳定性指标。然后,在此基础上根据稳态误差要求加入适当参数的积分校正。积分校正的加入往往使系统稳定裕量和快速性下降,此时再加入适当参数的微分校正,保证系统的稳定性和快速性。以上过程通常需要循环试探几次,方能使系统闭环后达到理想的性能指标。

齐格勒-尼柯尔斯法

(Ziegler and Nichols )

对于受控对象比较复杂、数学模型难以建立的情况,在系统的设计和调试过程中,可以考虑借助实验方法,采用齐格勒-尼柯尔斯法对PID调节器进行设计。用该方法系统实现所谓“四分之一衰减”响应(”quarter-decay”),即设计的调节器使系统闭环阶跃响应相临后一个周期的超调衰减为前一个周期的25%左右。

当开环受控对象阶跃响应没有超调,其响应曲线有如下图的S形状时,采用齐格勒-尼柯尔斯第一法设定PID参数。对单位阶跃响应曲线上斜率最大的拐点作切线,得参数L 和T,则齐格勒-尼柯尔斯法参数设定如下:

(a) 比例控制器:

(b) 比例-积分控制器:

(c) 比例-积分-微分控制器:

对于低增益时稳定而高增益时不稳定会产生振荡发散的系统,采用齐格勒-尼柯尔斯第二法(即连续振荡法)设定参数。开始只加比例校正,系统先以低增益值工作,然后慢慢增加增益,直到闭环系统输出等幅度振荡为止。这表明受控对象加该增益的比例控制已达稳定性极限,为临界稳定状态,此时测量并记录振荡周期Tu和比例增益值Ku。然后,齐格勒-尼柯尔斯法做参数设定如下:

(a) 比例控制器:

(b) 比例-积分控制器:

(c) 比例-积分-微分控制器:

对于那些在调试过程中不允许出现持续振荡的系统,则可以从低增益值开始慢慢增加,直到闭环衰减率达到希望值(通用的采用“四分之一衰减”响应),此时记录下系统的增益Ku’和振荡周期Tu’,那么PID控制器参数设定值为:

由于采用齐格勒-尼柯尔斯第二法以连续振荡法作为前提,显然,应用该方法的系统开环起码是三阶或更高阶的系统。

值得注意的是,由于齐格勒-尼柯尔斯法采用所谓“四分之一衰减”响应,动态波动较大,故可在此基础上进行一定的修正。

另外,还有其它的一些设定法都可以提供简单地调整参数的手段,以达到较好的控制效果,可参考其它文献,根据实际情况进行选择。

直流电动机调速系统

PWM功率放大器

脉宽调制器原理

脉宽调制器输入输出波形图

跨导功率放大器外形图

霍尔电流传感器

霍尔电流传感器原理方框图

电流环(跨导功率放大器)

的分析与设计

电流调节器

电流环的期望频率特性

速度调节器

双环调速系统简化方框图

调速系统固有的和期望的Bod e图

电压-位置随动系统原理图

电压-位置随动系统结构

位置环调节器

位置环的固有的和期望的Bod e图

控制工程基础

(第十章)

清华大学

10.1 计算机控制系统的组成

10.2 线性离散系统的数学模型和分析方法

10.3 离散状态空间模型

10.4 线性离散系统的稳定性分析

10.5 计算机控制系统的模拟化设计方法

利用计算机代替常规的模拟控制器,使它成为控制系统的一个组成部分,这种有计算机参加控制的系统简称为计算机控制系统。

计算机控制系统是以自动控制理论与计算机技术为基础的,目前控制系统都在向基于计算机控制的方向发展。

计算机控制系统的控制规律是由计算机来实现的,它可以实现常规控制方法难以实现的更为复杂的控制规律,可以避免模拟电路实现的许多困难。

10.1 计算机控制系统的组成

?计算机控制发展过程

?计算机控制系统组成图

?计算机内信号的处理和传递过程

?计算机控制理论

▲计算机控制发展

?开创期(1955年)

?直接数字控制(Direct Digital Control,简记为DDC)

?小型计算机控制

?微型计算机控制

?分散控制系统(Distributed Control System,简记为DCS)

?可编程逻辑控制器(Programmable Logic Controller ,简称PLC)

?现场总线控制系统(Field Control System,简称为FCS)

?智能仪器控制系统

计算机控制系统的分类

?按功能分:

操作指导控制系统,监督控制系统,直接数字控制系统等

?按控制规律分:

程序控制,数字PID控制,有限拍控制,极点配置控制,复杂规律控制等?按结构形式分:

集中型计算机控制系统,分散型(或分布式)计算机控制系统等。

?按控制方式分:开环控制,闭环控制

▲计算机控制系统的组成图

?采样时刻:把实测信号转换成数字形式的时刻。

?采样周期:两次相邻采样之间的时间,记作。最常用的是周期性采样。

?表示参考输入信号(给定信号)

?表示系统的反馈信号

?表示偏差信号

?表示控制信号

被控对象

被控对象是指所要控制的设备。

执行器

执行器是向控制对象提供运动力的装置,是控制系统中的重要部件。

测量环节

测量环节通常由传感器和测量电路组成,它通常将被控对象的参数转换为电的信号。

▲计算机内信号的处理和传递过程

数字调节器是以计算机为核心,加上采样保持器、模-数转换器、数-模转换器及保持器组成的。其硬件结构及信息传递过程如下图所示。

?采样:指每隔一定的时间间隔把连续信号抽样成采样信号的过程。

?理想采样器:理想采样器是一种数学抽象。

采样示意图

乃奎斯特证明,要把正弦信号从它的采样值中复现出来,每周期至少必须采样两次。

香农(Shannon)于1949年在他的重要论文中完全解决了这个问题。这就是著名的采样定理。

香农采样定理:如果连续信号的傅里叶变换在以外为零,则当采样角频率大于时,此信号完全可由其等周期采样点上的值所唯一确定。这时应用插值公式

乃奎斯特频率

设连续信号的频率特性为,则采样信号的频率特性为

?模-数转换器(量化过程)

将离散的模拟信号转换成时间和幅值均离散的数字量。转换的精度取决于模-数转换器的位数。

量化单位

量化误差

?数字调节器(运算过程)

数字调节器的控制规律由计算机程序实现。控制律可用下式描述

由控制算法决定,是计算机按照一定的控制规律计算出的控制信号。?数-模转换器()

将数字量转换成离散模拟信号

?保持:把离散模拟信号转变成模拟信号的过程。

?保持器:实现保持作用的电路。保持器起外推器的作用,根据过去时刻的离散值,外推出采样点之间的数值。

?零阶保持器(Zero Order Holder,缩写为ZOH):

把时刻的信号一直保持到时刻前的瞬间,其外推公式为

?零阶保持器的单位脉冲响应

?零阶保持器的传递函数

?零阶保持器的频率特性

?零阶保持器的幅频特性和相频特性

?零阶保持器具有低通特性和相角滞后特性。

▲计算机控制理论

?计算机控制系统中包含有数字环节,即是典型的数字控制系统,对时变非线性的数字环节进行严格的分析十分困难。若忽略数字信号的量化效应,则计算机控制系统可看成是采样控制系统。

?建立一种表达法来研究采样控制系统。首先把执行器、被控对象用传递函数来表示,A/D 转

换器表示成一个理想的采样器,D/A转换器表示为一个采样器后接零阶保持器的理想采样保持电路,计算机则表示成一个能把一种冲激调制信号变换成另一种冲激调制信号的系统,计算机中实现的算法用表示。

?采样控制系统中既包含连续信号,也包含采样信号,不同的信号混合在一起,有时分析起来会比较麻烦,在大多数情况下,只描述系统在采样瞬间的状态就足够了。这时感兴趣的仅仅是离散时间上的信号。

?在采样控制系统中,如果将其中的连续环节离散化,则整个系统便成为纯粹的离散时间系统。

?离散时间系统:若系统的输入和输出都

是离散时间信号,则称此系统为离散时

间系统。

?离散系统理论主要指对离散时间系统进

行建模、分析、设计、仿真、实现的各

种方法研究。

包括:差分方程,Z 变换理论,离散系

统性能及稳定性分析,系统设计方法等。

10.2 线性离散系统的数学模型和分析方法

?线性离散系统的数学描述

?线性差分方程的解法

?z 变换

?脉冲传递函数

▲线性离散系统的数学模型

对于单输入单输出的线性离散系统,其输入输出关系可以用线性常系数差分方程描述(为书写方便,省略采样周期)

所谓线性离散系统,即表征离散系统特性的差分方程满足叠加原理。差分方程中最高和最低指数之差称为差分方程的阶数。

差分方程可写成以下紧缩算子形式。

其中

是引入的后移算子

?齐次差分方程:差分方程右端各阶差分项的系数均为零。表征线性离散系统在没有外界作用的情况下系统的自由运动,反映了系统本身的固有特性。

?非齐次差分方程:差分方程右端各阶差分项的系数不全为零,即包含输入作用。

▲线性差分方程的解法

1.迭代法

迭代法是指如果已知差分方程和输入序列,并且给出输出序列的初始值,就可以利用差分方程的迭代关系逐步计算出所需要的输出序列。迭代法的优点是便于计算机运算,缺点是不能得到数学解析式。

例已知差分方程

输入序列为,初始条件为

,试用迭代法求解差分方程。

解:逐步以代入差分方程,则有

,,,

利用迭代法可以得到任意时刻的输出序列。

2.古典法

差分方程的古典解法步骤可归纳为:

(1) 求齐次差分方程的通解;

(2) 求非齐次差分方程的一个特解;

(3) 差分方程的全解为

(4) 利用n个已知的初始条件或用迭代法求出的初始条件确定通解中的n个待定系数。

设齐次方程为

? 如果特征根各不相同(无重根),则差分方程的通解为

式中,()为待定系数,是特征方程的根,由的n个初始条件确定。

? 重根的情况下,通解的形式将有所不同。假设是特征方程的l重根,那么在通解中相应于

的部分将有l项,即

? 有个重根,其余的不是重根,即

则通解为

其中,为待定系数。

综上所述,如果假设n阶差分方程的特征方程具有r 个不同的根,的阶数为

(=1时为单根),,则差分方程的

通解为

式中,(,)为待定

系数,由的n个初始条件确定。

特解用试探法求出,与几种典型输入信号对应的特解形式如下表

例考虑二阶差分方程

求解差分方程。

解:特征方程为

其特征根为和。这时,

齐次方程的通解为

设差分方程特解为,代入差分方程试探得求出B=1/2

差分方程的全解为

代入初始条件,得

求出A1=1/2 和A2=-1。因而非齐次差分方程的全解为

例考虑三阶差分方程

初始条件为,,,求解差分方程。解:特征方程为

其特征根为(二重根)和。这

时,,,。

齐次方程的通解为

该差分方程是一个齐次方程,因此齐次方程的通解也是差分方程的全解

代入初始条件,得

求出,和。因而差分方程的全解为

3.变换法

与微分方程的古典解法类似,差分方程的古典解法也比较麻烦。在连续系统中引入拉氏变换以后使得求解复杂的微积分问题变成了简单的代数运算。在求解差分方程时,同样可以采用变换法,引入Z变换后,使得求解差分方程变得十分简便。

▲z 变换

类似拉氏变换理论成功地应用于连续时间系统中,霍尔维兹于1947年引进了z 变换,这种变换由拉格兹尼和扎德(Zadeh)于1952年命名。

在线性离散系统中,可以对采样信号作拉氏变换,采样信号表达式为

令,则

称为的离散拉氏变换或z 变换。一般称

为离散序列的z 变换。

(1)单位脉冲序列

(2)单位阶跃时间序列

(3)衰减指数序列

(4)指数序列

当T=1时,有

●z 变换的性质

(1) 线性性质

z变换是一种线性变换,即

(2) 平移定理

设时,,滞后定理:

超前定理:

(3) 象函数尺度变化

(4) 初值定理

(5) 终值定理

(6) 卷积

?一些典型时间序列的Z变换可以由查表得到。

(2) 由Z变换定义、性质和定理可以很方便地求出复杂函数的Z变换。

●连续函数的离散化(z变换与拉氏变换的关系)

已知连续函数的拉氏变换,求其相

应离散(采样)序列的z变换。

1、部分分式法

如果已知某函数的拉式变换,先把它

分解为一些基本的部分分式

然后再分别求出其相应的原函数。对

离散化得,对求z 变换。由z变换的线性性质可得

对采样得

因此

2、留数计算法

由复变函数中留数定理可知,函数除有限个极点外,在某域内是解析的,则

Res[.] 表示函数在极点的留数。

留数的计算方法因是否有重极点而异。

无重极点时,即

所有极点相同时,即

例已知某连续信号的拉氏变换为

用留数法求相应采样序列的Z变换Y(z)。

解:Y(s)包含一个二阶极点s1=0和s2=-a, 则

●z 反变换

(1) 幂级数展开法(长除法)

把展开为的负幂级数,即把它展开为的幂级数,的系数相应于在第

个采样时刻的时间函数的值。

(2) 部分分式法

设是的有理分式,当其实根是互不相同的情形时,利用部分分式法求z反变换的步骤为:

①展开其中

②把展开式乘以

③反演展开式得

?留数计算法

例:

例:

●用z 变换求解差分方程

利用z变换中的滞后和超前定理,以及已知函数的z变换,可以求线性常系数差分方程的解。它把解差分方程变为以z为变量的代数运算问题。考虑差分方程

对差分方程两边作z变换

由超前定理

▲脉冲传递函数

●定义

在初始静止的条件下,线性时不变离散系统的脉冲传递函数是其输出脉冲序列的z变换和输入脉冲序列的z变换之比,即

对用如下线性常系数差分方程所代表的离散系统

例求线性离散系统

的脉冲传递函数。

解:

在连续系统中,系统的传递函数等于单位脉冲响应函数的拉氏变换。

与连续系统类似,对于离散系统,系统的脉冲传递函数等于单位冲激响应的z变换。系统的脉冲传递函数和单位冲激响应为一z变换对。

●连续系统的离散化

?冲激不变法

基本思路:是让G(s)和G(z)所代表的系统在采样点具有相同的单位脉冲响应。

单位冲激响应为

对采样得,取z变换

连续系统离散化图示:

2. 带零阶保持器的离散化方法

带零阶保持器的离散化方法示意图

这就是控制信号经D/A变换器转换成模拟量控制被控对象的情形。

设系统的输入为单位阶跃时间序列

则经过零阶保持器后

对采样得,并取z 变换

由于系统输入为单位阶跃时间序列,其z变

换为

因此

可以归纳出计算脉冲传递函数的步骤为:

1)求出时间函数

2)求z 变换

3) 乘得

带零阶保持器的离散化方法也可看作是用

冲激不变法离散化传递函数为

的广义对象(带有零阶保持器的对象称为

广义对象),即

称为广义对象的脉冲传递函数,一般记为例

1. 串联系统的脉冲传递函数

2. 并联系统的脉冲传递函数

3. 反馈系统

由上图可得

推导步骤:

1)在主通道上建立输出与中间变量

的关系;

2)在闭环回路中建立中间变量与输

入的关系;

3)消去中间变量,建立输出与输

入的关系。

线性离散系统的闭环传递函数或输出量的z变换具有以下特点:

1)分子部分与主通道上的各个环节有关;

2)分母部分与闭环回路中的各个环节有关;

3)采样开关的位置对分子、分母部分都有

影响,不仅闭环脉冲传递函数形式不同,而且会有不能写出闭环脉冲传递函数的

情况,只能写出输出的Z变换表达式。

? 利用脉冲传递函数分析离散

系统的瞬态响应(过渡过程)

与连续系统的时域瞬态响应分析类似,可以用脉冲传递函数来分析离散系统的瞬态响应。

当线性离散系统的结构和参数已知时,可求出对应的脉冲传递函数,在输入信号给定的情况下,可以得到输出量的z变换。经z反变换,就可得系统输出的时间序列。根据瞬态响应曲线,可分析系统的动态特性如超调量、过渡时间等;也可以分析系统的稳态特性,如静态误差。

10.3 离散状态空间模型

▲连续状态空间模型

离散状态空间模型

▲线性离散系统的状态空间模型

其中,

、和分别代表维状态变量、

维输入变量和维输出向量;

:维的状态矩阵(系统矩阵)

:维的输入矩阵(驱动矩阵)

:维的输出矩阵

:维的传输矩阵(直传矩阵)

线性离散系统的状态变量图

可看成连续系统经过零阶保持器离散化

▲离散状态方程的时域解:

称为线性离散系统的状态转移矩阵。

z 域解:

状态转移矩阵计算公式:

▲系统的脉冲传递函数矩阵

对离散状态空间模型取z 变换,得到离散状态模型的z 域解:

状态转移矩阵计算公式:

系统的脉冲传递函数矩阵:

离散系统的z 特征方程:

说明:

1)状态变量表征系统本身的特征,状

态变量的选取不是唯一的。

2)状态变量的个数等于系统的阶数。

3)尽管系统的状态变量的选择不唯

一,但系统的z 特征方程是不变的。

例设离散系统的状态空间表达式为

初始条件为零,求线性离散系统的脉冲传递函数矩阵及单位阶跃输入时的输出响应解:

有机化学清华大学李艳梅版课后习题答案

习题答案 第一章 1. (1)有机化合物:含碳化合物(一氧化碳、二氧化碳、碳酸盐、金属碳化物等少数简单含碳化合物除外)或碳氢化合物及其衍生物的总称。有机物是生命产生的物质基础。 (2)共价键:共价键(covalent bond )是化学键的一种,两个或多个原子共同使用它们的外层电子,在理想情况下达到电子饱和的状态,由此组成比较稳定的化学结构叫做共价键。 (3)同分异构:同分异构是一种有相同化学式,有同样的化学键而有不同的原子排列的化合物的现象。 (4)杂化:在形成多原子分子的过程中,中心原子的若干能量相近的原子轨道重新组合,形成一组新的轨道,这个过程叫做轨道的杂化。 (5)偶极矩:正、负电荷中心间的距离r 和电荷中心 所带电量q的乘积,叫做偶极矩尸r的。它是一个矢量,方向规定为从负电荷中心指向正电荷中心。 6)诱导效应:诱导效应是指在有机分子中引入一原

子或基团后,使分子中成键电子云密度分布发生变化,从而使化学键发生极化的现象,称为诱导效应(Inductive Effects )。 (7)异裂:共价键断裂时,共用电子对完全转移给成键原子中的某个原子,形成了正、负离子,这种断键方式称为异裂。 (8)范德华力:在化学中通常指分子之间的作用力。 (9)键角:分子中和两个相邻化学键之间的夹角。 (10)Lewis 酸:路易斯酸(Lewis Acid ,LA )是指电子接受体,可看作形成配位键的中心体。 (11)疏水作用:非极性分子间或分子的非极性基团间的吸引力。导致这些基团在水性环境中的缔合。 (12)官能团:决定有机物性质的原子或原子团称为官能团。2.(1)(2)(3)4) 5)6)7)

计算机操作系统作业汇总清华大学出版社

思考与练习题(第一章) 1.什么是操作系统?它的主要功能是什么? 答:操作系统是控制和管理计算机的软、硬件资源,合理地组织计算机的工作流程,以方便用户使用的程序集合。其主要功能包括进程管理功能、存储管理功能、设备管理功能和文件管理功能。 2.什么是多道程序设计技术?多道程序设计技术的主要特点是什么? 答:把多个独立的程序同时放入内存,使它们共享系统中的资源。??????? (1)多道,即计算机内存中同时放多道相互独立的程序。? (2)宏观上并行,是指同时进入系统的多道程序都处于运行过程中。? (3)微观上串行,是指在单道处理机环境下,内存中的多道程序轮流占用CPU,交替执行。 3.批处理操作系统是怎样的一种操作系统?它的特点是什么? 答:批处理操作系统是一种基本的操作系统类型。在该系统中,用户的作业(包括程序、数据及程序的处理步骤)被成批地输入到计算机中,然后在操作系统的控制下,用户的作业自动的执行。? 特点:单道:(1)自动性。(2)顺序性。(3)单道性。 多道:(1)多道性。(2)无序性。(3)调度性。

4.什么是分时操作系统?什么是实时操作系统?试从交互性、及时性、独立性、多路性和 可靠性几个方面比较分时操作系统和实时操作系统。 答:分时操作系统:计算机能够同时为多个终端用户服务,而且能在很短的时间内响应用户的要求。实时操作系统:对外部输入的信息,实时系统能够在规定的时间内处理完毕并做出反应。 (1)多路性:分时系统是为多个终端用户提供服务,实时系统的多路性主要表现在经常对多路的现场信息进行采集以及多个对象或多个执行机构进行控制。 (2)独立性:每个终端向实时系统提出服务请求时,是彼此独立的工作、互不干扰。 (3)及时性:实时信息处理系统与分时系统对及时性的要求类似,都以人们能够接受的等待时间来确定。实时控制系统对一时性的要求更高,是以控制对象所要求的开始截止时间或完成截止时间来确定的。 5.实时操作系统分为哪两种类型? 答:(1)实时控制系统?(2)实时信息处理系统。 6.操作系统的主要特征是什么? 答:(1)并发性?(2)共享性?(3)虚拟性?(4)不确定性。 7.操作系统与用户的接口有几种?它们各自用在什么场合? 答:两种,命令接口和程序接口。

有机化学清华大学李艳梅版课后习题答案

………………………………………………最新资料推荐……………………………………… 习题答案 第一章 1.(1)有机化合物:含碳化合物(一氧化碳、二氧化 碳、碳酸盐、金属碳化物等少数简单含碳化合物除外) 或碳氢化合物及其衍生物的总称。有机物是生命产生的 物质基础。 (2)共价键:共价键(covalent bond)是化学键的 一种,两个或多个原子共同使用它们的外层电子,在理 想情况下达到电子饱和的状态,由此组成比较稳定的化 学结构叫做共价键。 (3)同分异构:同分异构是一种有相同化学式,有同 样的化学键而有不同的原子排列的化合物的现象。 (4)杂化:在形成多原子分子的过程中,中心原子的 若干能量相近的原子轨道重新组合,形成一组新的轨道, 这个过程叫做轨道的杂化。 (5)偶极矩:正、负电荷中心间的距离r 和电荷中心 所带电量q 的乘积,叫做偶极矩μ=r×q。它是一个矢 量,方向规定为从负电荷中心指向正电荷中心。 (6)诱导效应:诱导效应是指在有机分子中引入一原

子或基团后,使分子中成键电子云密度分布发生变化,从而使化学键发生极化的现象,称为诱导效应(Inductive Effects)。 (7)异裂:共价键断裂时,共用电子对完全转移给成键原子中的某个原子,形成了正、负离子,这种断键方式称为异裂。 (8)范德华力:在化学中通常指分子之间的作用力。(9)键角:分子中和两个相邻化学键之间的夹角。(10)Lewis 酸:路易斯酸(Lewis Acid,LA)是指电子接受体,可看作形成配位键的中心体。 (11)疏水作用:非极性分子间或分子的非极性基团间的吸引力。导致这些基团在水性环境中的缔合。(12)官能团:决定有机物性质的原子或原子团称为官能团。 2.(1)(2)(3)(4)(5)(6)(7)

最新清华大学版土力学课后答案资料

第一章1-1: * r m 心 r :g g = v “ m s 121.5 “ 3 V s s 45cm s 心 2.7 “': i sat - w =20.6 -10 =10.6KN /m 3 斗 m s 121.5 3 d s g *10=16.9KN/m V 72 则 sat ? d 1-2: 已知:G s =2.72 设 V s =1cm 3 ,s =2.72g/cm 3 m s = 2.72g d = 'd g =匹 g 二272 *? =16KN / m 3 d d V 1.7 贝U = - w =20.1-10 = 10.1KN /m 3 当0二75%时, m w = :W V V S -1.0*0.7*75% -0.525g m w m s 0.525 2.72 = 19.3% =:? g V 0.525 2.72 *10 -19.1KN /m 3 1.7 已知: 3 V=72cm 3 m=129.1g m s =121.5g G s =2.70 则: m _m s w m s 129 f6.3% 121.5 129 1 *10 =17.9KN / 72 V/ 二v -V s = 72-45 = 27cm 3 sat = '"sat g 1.0* 27 121.5 *10 二 20.6KN / m 3 72 V 1.7 *10 =20.1KN /m 3

1-3: 3 4 7 mu = 6V =1.70*10 *8*10 =13.6*10 kg m w =m s w =13.6*107 *20% =2.72*107 kg 1-4: 甲: I p = W[_ —Wp = 40 —25 = 15 设V s =1则 m s 「「V s =2.7g m w =2.7*30% -0.81g 又因为S r =100% V V 4。81 w = 19.4KN /m 3 d =讥=14.8 KN /m 3 十0.81 乙: m s d _ V s V w 1.81 2.7 3 1.48g / cm m s m w P 13.6*107 2.72*107 1.92*103 85000m 3 P = V s 叫斗2^! 伽 V w 1 0.81

清华大学操作系统lab2及slub实现实验报告

练习0:把实验1的代码填入本实验中代码有lab1的注释相应的部分。 用understand中的merge工具将实验1中填写代码部分复制到实验2中,如图1。 图1 练习1:实现firstfit连续物理内存分配算法。 对于lab2代码首先对其make,之后在虚拟机中运行查看其错误所在位置如图2。 可以发现其错误出现在default_check(void)这个函数之中,该函数为检查firstfit算法的函数。继续分析错误出现的原因: struct Page *p0 = alloc_pages(5), *p1, *p2; assert(p0 != NULL); assert(!PageProperty(p0)); list_entry_t free_list_store = free_list; list_init(&free_list); assert(list_empty(&free_list)); assert(alloc_page() == NULL); unsigned int nr_free_store = nr_free; nr_free = 0;

free_pages(p0 + 2, 3); assert(alloc_pages(4) == NULL); assert(PageProperty(p0 + 2) && p0[2].property == 3); assert((p1 = alloc_pages(3)) != NULL); assert(alloc_page() == NULL); assert(p0 + 2 == p1); p2 = p0 + 1; free_page(p0); free_pages(p1, 3); assert(PageProperty(p0) && p0->property == 1); assert(PageProperty(p1) && p1->property == 3); assert((p0 = alloc_page()) == p2 - 1); //错误出现的位置 分析源码后可知,在其对内存进行一些列分配释放操作后,再次申请一页内存后出现错误,可知其在最后一次p0 = alloc_page()申请中得到内存页的位置与算法规则不相符,回到default_alloc_pages(size_t n)、default_free_pages(struct Page *base, size_t n)函数中可以分析得到,在分配函数和释放函数中都出现错误: list_add(&free_list, &(p->page_link)); 分配函数中若分得的块大小大于申请页数,则需要将多余的页形成一个块,按照从低地址到高地址的顺序挂回free_list中,而不是直接挂到free_list的后面。 list_add(&free_list, &(base->page_link)); 将释放页与空闲页合并操作之后,只是将新的空闲区域挂到了free_list的后面,并没有按照从低地址到高地址的顺序将其挂到free_list之中,导致后面check 函数中出现错误。对源代码做如下修改(红色为修改部分): static struct Page * default_alloc_pages(size_t n) { assert(n > 0); //出错判断 if (n > nr_free) { //申请页大小与现有空闲页比较 return NULL; } struct Page *page = NULL; list_entry_t *le = &free_list; while ((le = list_next(le)) != &free_list) { //从free_list的头开始寻找符合条件的空闲块 struct Page *p = le2page(le, page_link); if (p->property >= n) { page = p; break; } } if (page != NULL) {

清华大学操作系统lab3实验报告

实验3:虚拟内存管理 练习1:给未被映射的地址映射上物理页 ptep=get_pet(mm->dir,addr,1); if(ptep == NULL){ //页表项不存在 cprintf("get_pte in do_pgfault failed\n"); goto failed; } if (*ptep == 0) { //物理页不在内存之中 //判断是否可以分配新页 if (pgdir_alloc_page(mm->pgdir, addr, perm) == NULL) { cprintf("pgdir_alloc_page in do_pgfault failed\n"); goto failed; } } else{ if(swap_init_ok) { struct Page *page=NULL; ret = swap_in(mm, addr, &page); if(ret != 0){ //判断页面可否换入 cprintf("swap_in in do_pgfault failed\n"); goto failed; } //建立映射 page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); } else { cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); goto failed; } } ret = 0; failed: return ret; } 练习2:补充完成基于FIFO算法 _fifo_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in){ list_entry_t *head=(list_entry_t*) mm->sm_priv; list_entry_t *entry=&(page->pra_page_link); assert(entry != NULL && head!=NULL);

相关文档
最新文档