第三章 处理机调度与死锁.ppt_第1页
第三章 处理机调度与死锁.ppt_第2页
第三章 处理机调度与死锁.ppt_第3页
第三章 处理机调度与死锁.ppt_第4页
第三章 处理机调度与死锁.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章处理机调度与死锁 3 1处理机调度的层次和调度算法的目标3 2作业与作业调度3 3进程调度3 4实时调度3 5死锁概述3 6预防死锁3 7避免死锁3 8死锁的检测与解除 3 1处理机调度的层次 CPU是计算机系统中的一个十分重要的资源 对它进行高效的调度是操作系统设计的中心问题之一 对于大型系统运行时的性能 如系统吞吐量 资源利用率 作业周转时间或响应的及时性等在很大程度上都取决于处理机调度性能的好坏 因而 处理机调度便成为OS中至关重要的部分 3 1 1处理机调度的层次 3 1 1高级调度 作业调度 长程调度 接纳调度 1 作业和作业步作业 包含程序 数据和作业说明书 作业步 作业执行过程中的每一个加工步骤 编译 链接装配 运行作业流 作业进入系统 依次存于外存形成作业流2 作业控制块 JCB 它是作业在系统中存在的标志 其中保存了系统对作业进行管理和调度所需的全部信息 内容 作业标识 用户名 作业类型 作业状态 调度信息等进入系统 建立JCB 插入相应作业后备队列 作业调度 作业控制 作业结束 回收资源 批处理系统中作业处理及状态 3 作业调度将外存作业调入内存 创建PCB等 插入就绪队列 一般用于批处理系统 分 实时系统一般直接入内存 无此环节 调度特性接纳作业数 内存驻留数 多道程序度 太多 周转时间T长太少 系统效率低接纳策略 即采用何种调度算法 FCFS 短作业优先等 3 1 2低级调度 进程调度 短程调度 主要是决定就绪队列中的哪个进程应获得处理机 然后由分派程序 Dispatcher 分派处理机 1 低级调度的功能 保存处理机现场信息按某种算法选取进程把处理机分配给进程2 进程调度的三个进步机制排队器分派器上下文切换机制 两对切换 3 进程调度方式 1 非抢占方式 简单 系统开销小 实时性差 如win31 2 抢占方式 1 优先权原则 2 短进程优先原则 3 时间片原则引起进程调度的因素有哪些 进程正常终止或异常终止进程因某种原因阻塞 I O请求 wait操作等时间片用完抢占方式下 就绪队列中某进程的优先权比当前执行的进程高 为提高系统吞吐量和内存利用率而引入的 内 外存对换功能 换出时 进程为挂起或就绪驻外存状态 三级调度的运行频率低 中 高 3 1 3中级调度 中程 3 2调度的队列模型和调度准则 1 仅有进程调度的队列模型 就绪队列 CPU 阻塞队列 交互用户 时间片完 进程调度 进程完成 等待事件 事件出现 图2 5进程的三种基本状态及其转换 3 2 1调度的队列模型 2 具有高 低级调度的队列模型 就绪队列 CPU 阻塞队列 时间片完 进程调度 进程完成 等待事件1 事件1出现 后备队列 阻塞队列 等待事件2 事件2出现 作业调度 图2 6具有挂起状态的进程状态图 3 具有三级调度的队列模型 就绪队列 CPU 就绪 挂起队列 时间片完 进程调度 进程完成 后备队列 阻塞 挂起队列 事件出现 作业调度 阻塞队列 等待事件 挂起 事件出现 中级调度 交互型作业 3 2 2选择调度方式和调度算法的目标 1 面向用户的目标 1 周转时间短 常用于批处理系统 概念 作业从提交 完成的时间 分为 驻外存等待调度时间驻内存等待调度时间执行时间阻塞时间 1 面向用户的目标平均周转时间平均带权可见带权w越小越好 Ts为实际服务时间 3 1 3选择调度方式和算法的目标 1 面向用户的目标 2 响应时间快 对交互性作业 分时系统 概念 键盘提交请求到首次响应时间输入传送时间处理时间响应传送时间 3 截止时间的保证 特别是实时系统 4 优先权准则 即需要抢占调度 3 1 3选择调度方式和算法的目标 2 面向系统的准则 1 吞吐量高 特别是批处理 单位时间完成作业数 2 处理机利用率好 因CPU贵 特别是大中型多用户系统 3 各类资源的平衡利用 4 策略强制执行 3 1 3选择调度方式和算法的目标 3 3调度算法 是一个资源分配问题 处理机调度算法3 3 1先来先服务和短作业 进程 优先调度算法1 先来先服务调度算法 FCFS 特点 简单 有利于长作业 进程 即CPU繁忙性作业 不利于短作业 进程 2 短作业 进程 优先调度算法 SJ P F提高了平均周转时间和平均带权周转时间 从而提高了系统吞吐量 特点 对长作业不利 有可能得不到服务估计时间不易确定 先来先服务算法实例 图3 4FCFS和SJ P F比较 3 3 2高优先权优先调度算法 1 优先权调度算法类型非抢占式优先权算法抢占式优先权算法 实时性更好 非抢占式优先权算法 在这种方式下 系统一旦把处理机分配给就绪队列中优先权最高的进程后 该进程便一直执行下去 直至完成 或因发生某事件使该进程放弃处理机时 系统方可再将处理机重新分配给另一优先权最高的进程 这种调度算法主要用于批处理系统中 也可用于某些对实时性要求不严的实时系统中 2 抢占式优先权调度算法在这种方式下 系统同样是把处理机分配给优先权最高的进程 使之执行 但在其执行期间 只要又出现了另一个其优先权更高的进程 进程调度程序就立即停止当前进程 原优先权最高的进程 的执行 重新将处理机分配给新到的优先权最高的进程 因此 在采用这种调度算法时 是每当系统中出现一个新的就绪进程i时 就将其优先权Pi与正在执行的进程j的优先权Pj进行比较 如果Pi Pj 原进程Pj便继续执行 但如果是Pi Pj 则立即停止Pj的执行 做进程切换 使i进程投入执行 显然 这种抢占式的优先权调度算法 能更好地满足紧迫作业的要求 故而常用于要求比较严格的实时系统中 以及对性能要求较高的批处理和分时系统中 2 优先权类型 1 静态优先权 静态优先权是在创建进程时确定的 且在进程的整个运行期间保持不变 一般地 优先权是利用某一范围内的一个整数来表示的 例如 0 7或0 255中的某一整数 又把该整数称为优先数 只是具体用法各异 有的系统用 0 表示最高优先权 当数值愈大时 其优先权愈低 而有的系统恰恰相反 进程优先权在整个运行期不变 确定优先权依据进程类型进程对资源的需求 根据用户需求 特点 简单 但低优先权作业可能长期不被调度 饥饿 2 动态优先权动态优先权是指 在创建进程时所赋予的优先权 是可以随进程的推进或随其等待时间的增加而改变的 以便获得更好的调度性能 例如 我们可以规定 在就绪队列中的进程 随其等待时间的增长 其优先权以速率a提高 若所有的进程都具有相同的优先权初值 则显然是最先进入就绪队列的进程 将因其动态优先权变得最高而优先获得处理机 此即FCFS算法 若所有的就绪进程具有各不相同的优先权初值 那么 对于优先权初值低的进程 在等待了足够的时间后 其优先权便可能升为最高 从而可以获得处理机 当采用抢占式优先权调度算法时 如果再规定当前进程的优先权以速率b下降 则可防止一个长作业长期地垄断处理机 3 高响应比优先调度算法 优先权的变化规律可描述为 由于等待时间与服务时间之和 就是系统对该作业的响应时间 故该优先权又相当于响应比RP 据此 又可表示为 3 3 2高优先权优先调度算法 2 3 高响应比优先调度算法 响应比Rp Tw Ts Ts特点 1 短作业RP大 2 Ts 要求服务时间 相同的进程间相当于FCFS 3 长作业等待一段时间仍能得到服务 常见的批处理作业调度算法 先来先服务算法 FCFS FirstComeFirstServe 最短作业优先算法 SJF ShortestJobFirst 最短剩余时间优先 SRTF ShortestRemainingTimeFirst 最高响应比优先算法 HRRF HighestResponseRatioFirst 响应比R 响应时间 要求服务时间 等待时间 要求服务时间 要求服务时间 1 等待时间 要求服务时间 基于优先数调度算法 HPF HighestPriorityFirst a 由用户规定优先数 外部优先数 用户提交作业时 根据急迫程度规定适当的优先数 作业调度程序根据JCB优先数决定进入内存的次序 b 由系统计算优先数 内部优先数 例 可按如下公式计算作业的优先数 优先数 用户规定优先数 作业处理时间 作业等待时间 输出量 3 2 3基于时间片的轮转调度算法 1 时间片轮转法在早期的时间片轮转法中 系统将所有的就绪进程按先来先服务的原则 排成一个队列 每次调度时 把CPU分配给队首进程 并令其执行一个时间片 时间片的大小从几ms到几百ms 当执行的时间片用完时 由一个计时器发出时钟中断请求 调度程序便据此信号来停止该进程的执行 并将它送往就绪队列的末尾 然后 再把处理机分配给就绪队列中新的队首进程 同时也让它执行一个时间片 这样就可以保证就绪队列中的所有进程 在一给定的时间内 均能获得一时间片的处理机执行时间 3 2 3基于时间片的轮转调度算法 1 时间片轮转时间片大小的确定太大 退化为FCFS 太小 系统开销过大系统对响应时间的要求 T nq就绪队列中进程的数目 系统的处理能力 应保证一个时间片处理完常用命令 2 多级反馈队列调度算法 1 应设置多个就绪队列 并为各个队列赋予不同的优先级 第一个队列的优先级最高 第二个队列次之 其余各队列的优先权逐个降低 该算法赋予各个队列中进程执行时间片的大小也各不相同 在优先权愈高的队列中 为每个进程所规定的执行时间片就愈小 例如 第二个队列的时间片要比第一个队列的时间片长一倍 第i 1个队列的时间片要比第i个队列的时间片长一倍 图3 5是多级反馈队列算法的示意 就绪队列1 至CPU S1 就绪队列2 S2 至CPU 就绪队列3 S3 至CPU 就绪队列n Sn 至CPU 时间片 S1 S2 S3 图3 5多级队列反馈调度算法 2 当一个新进程进入内存后 首先将它放入第一队列的末尾 按FCFS原则排队等待调度 当轮到该进程执行时 如它能在该时间片内完成 便可准备撤离系统 如果它在一个时间片结束时尚未完成 调度程序便将该进程转入第二队列的末尾 再同样地按FCFS原则等待调度执行 如果它在第二队列中运行一个时间片后仍未完成 再依次将它放入第三队列 如此下去 当一个长作业 进程 从第一队列依次降到第n队列后 在第n队列中便采取按时间片轮转的方式运行 3 仅当第一队列空闲时 调度程序才调度第二队列中的进程运行 仅当第1 i 1 队列均空时 才会调度第i队列中的进程运行 如果处理机正在第i队列中为某进程服务时 又有新进程进入优先权较高的队列 第1 i 1 中的任何一个队列 则此时新进程将抢占正在运行进程的处理机 即由调度程序把正在运行的进程放回到第i队列的末尾 把处理机分配给新到的高优先权进程 3 2 3基于时间片的轮转调度算法 2 2 多级反馈队列调度特点 长 短作业兼顾 有较好的响应时间短作业一次完成 中型作业周转时间不长 大型作业不会长期不处理 作业调度与进程调度 有一个具有两道作业的批处理系统 作业调度采用短作业优先的调度算法 进程调度采用以优先数为基础的抢占式调度算法 如下表所示 作业的优先数即为进程的优先数 优先数越小越好 1 列出所有作业进入内存时刻及结束时刻 2 计算平均周转时间 解 1 作业A B C D进入内存时刻分别为 10 00 10 20 11 10 10 50 它们的结束时刻为 11 10 10 50 12 00 12 20 2 作业A B C D的周转时间分别为70 30 90 90分钟 平均周转时间为70分钟 A B C D 3 3 1实现实时调度的基本条件1 提供必要的调度信息 1 就绪时间 2 开始 完成截止时间 3 处理时间 4 资源要求 5 优先级 2 系统处理能力强 3 3实时调度 Ci为处理时间 Pi为周期时间 基于周期性实时任务 3 3 1实现实时调度的基本条件3 采用抢占调度方式剥夺方式 一般都采用此方式非剥夺方式 实现简单 一般应使实时任务较小 以及时放弃CPU 4 具有快速切换机制具有快速响应外部中断能力 快速任务分派 3 3实时调度 3 3 2实时调度算法的分类 1 非抢占式调度算法时间片轮转秒级非抢占优先权 协同 秒 毫秒级2 抢占式调度算法时钟中断抢占优先权毫秒级基于抢占点抢占立即抢占immediatepreemption毫秒 微秒级只要不在临界区即抢占 中断引发 进程1 进程2 进程n 实时进程 调度时间 实时进程请求调度 调度实时进程运行 a非抢占式轮转调度 当前进程 实时进程 实时进程请求调度 当前进程运行完成 b非抢占式优先权调度 调度时间 c基于时钟中断抢占的优先权调度 当前进程 实时进程 实时进程请求调度 实时进程抢占当前进程 并立即执行 d立即抢占的优先权调度 当前进程 实时进程 实时进程请求调度 时钟中断到来时 调度时间 调度时间 3 3 3常用的几种实时调度算法 1 最早截止时间优先EDF earliestdeadlinefirst 算法根据任务的截止时间来确定任务的优先级截止时间越早 优先级越高可以是抢占式或非抢占式 最早截止时间优先EDF例 1 3 4 2 1 3 4 2 1 2 3 4 t 开始截止时间 任务到达 任务执行 图3 7EDF算法用于非抢占调度方式 2 最低松弛度优先LLF算法 松弛度 根据任务紧急 或松弛 的程度 来确定任务的优先级 任务的紧急程度越高 该任务的优先级就越高 使之优先执行 若A进程需在200ms时完成 其本身运行需要100ms 当前时刻是10ms 则A的松弛度为 200 100 10 90主要用于可抢占的调度方式中例 见教材P101 P102例子 课堂反馈进程调度算法 对下表 分别采用先来先服务 FCFS 非抢占及抢占的短进程优先 SPF 高响应比优先 HRRF 时间片轮转 RR 时间片q 1 多级反馈队列 FB 第i级队列的时间片 2i 1 调度算法进行CPU调度 求出各进程的执行情况以及平均周转时间和平均带权周转时间 FCFS的调度性能 同样 看到进程E的不利情况 先来先服务 FCFS 短作业 进程优先 SJ P F 降低对长进程有利的一种方法就是短进程优先策略 表SPF的调度性能 1 84 0 3 11 15 9 3 9 15 20 11 TA 3 TB 7 TC 11 TD 14 TE 3 7 60 8 3 6 4 5 2 2 0 4 6 A B C D E WE 1 50 WA 1 WB 1 17 WC 2 75 WD 2 80 E C D A B 周转时间T 结束时间Tc 到达时间Tin 3 0 3 周转时间T 带权周转时间W 周转时间T 服务时间Tr 3 3 1 带权周转时间W 平均 SJF对短作业有利 明显的作业E提前接受了服务 并且整体性能也得到了提高 SJF的问题 SJF需要事先知道或至少需要估计每个作业所需的处理机时间 只要不断的有短作业进入系统 就有可能使长作业长期得不到运行而 饿死 SJF偏向短作业 不利于分时系统 由于不可抢占性 短作业 进程优先 SJF 表HRRN的调度性能 2 14 0 3 9 15 13 3 9 13 20 15 TA 3 TB 7 TC 9 TD 14 TE 7 8 00 8 3 6 4 5 2 2 0 4 6 A B C D E WE 3 50 WA 1 WB 1 17 WC 2 25 WD 2 80 E C D A B 周转时间T 结束时间Tc 到达时间Tin 3 0 3 周转时间T 带权周转时间W 周转时间T 服务时间Tr 3 3 1 带权周转时间W 平均 9 4 4 4 2 25 9 6 5 5 1 6 9 8 2 2 1 5 RC RD RE RD 13 6 5 5 2 4 RE 13 8 2 2 3 5 最高响应比 HRRN 不同调度算法对的性能分析 FCFS SPF 非抢占 SPF 抢占 HRRF RR q 1 FB q 2i 1 在一个动态系统中 资源请求与释放是经常性发生的进程行为 对于每类系统资源 操作系统需要确定一个分配策略 资源分配策略可能是公平的 fair 资源分配策略也可能是不公平的 unfair 即不能保证等待时间上界的存在 在后一种情况下 即使系统没有发生死锁 某些进程也可能会长时间等待 当等待时间给进程推进和响应带来明显影响时 称发生了进程饥饿 starvation 当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死 starvetodeath 饿死与死锁有一定联系 二者都是由于竞争资源而引起的 但又有明显差别 主要表现在如下几个方面 1 死锁进程等待永远不会被释放的资源 饿死进程等待会被释放但却不会分配给自己的资源 表现为等待时限没有上界 排队等待或忙式等待 2 死锁一定发生了循环等待 而饿死则不然 这也表明通过资源分配图可以检测死锁存在与否 但却不能检测是否有进程饿死 3 死锁一定涉及多个进程 而饥饿或被饿死的进程可能只有一个 3 5产生死锁的原因和必要条件 3 5 1产生死锁的原因 1 竞争资源引起死锁 1 可剥夺 CPU 内存 和非剥夺性 打印机 磁带机 资源2 竞争非剥夺性资源 可造成死锁 p1 p2 R1 R2 图3 12I O设备共享时的死锁情况 3 5产生死锁的原因和必要条件 3 竞争可消耗 临时性 资源可消耗 临时性 资源是指由一个进程产生 被另一个进程使用一段时间后便无用的资源 图3 13进程之间通信时的死锁 产生 接收 2 进程推进顺序不当引起死锁 2 1 3 D P2Req R2 P2Req R1 P1Req R1 P1Req R2 P2Rel R2 P2Rel R1 P1Rel R1 P1Rel R2 4 Release Request 3 5 2产生死锁的必要条件 1 互斥条件 资源的临界性 2 请求和保持条件3 不可抢占 不剥夺 条件4 环路等待条件 3 5 3处理死锁的基本方法 1 预防死锁 破坏4个条件之一 有效 使资源利用率低 2 避免死锁 防止进入不安全态 3 检测死锁 检测到死锁再清除 4 解除死锁 与 检测 配套 3 6死锁预防和避免 3 6 1死锁预防1 互斥条件是资源固有属性 不能避免 2 摒弃请求和保持条件全分配 全释放 AND同步p43 优点 简单且安全缺点 1 延迟进程运行 2 资源严重浪费3 摒弃 不剥夺 条件增加系统开销 且进程前段工作可能失效 3 6死锁预防和避免 3 6 1死锁预防4 摒弃 环路 条件有序资源分配法 为资源编号 申请时需按编号进行 规定每个进程必须按序号递增的顺序请求资源 缺点 1 新增资源不便 原序号已排定 2 资源与进程使用顺序不同造成浪费 3 用户不自由 3 6 2系统的安全状态 在 避免死锁 方法中的判断条件1 安全状态在避免死锁的方法中 允许进程动态地申请资源 但系统在进行资源分配之前 应先计算此次资源分配的安全性 若此次分配不会导致系统进入不安全状态 则将资源分配给进程 否则 令进程等待 所谓安全状态 是指系统能按某种进程顺序 P1 P2 Pn 称 P1 P2 Pn 序列为安全序列 来为每个进程Pi分配其所需资源 直至满足每个进程对资源的最大需求 使每个进程都可顺利地完成 如果系统无法找到这样一个安全序列 则称系统处于不安全状态 3 6 2系统的安全状态 2 2 安全状态例 安全序列 p2 p1 p3 3 6 2系统的安全状态 3 3安全 不安全的转换上例中 若P3再申请一台 则不安全 例 3个进程共享4个同类型的资源 每个进程最大需要2个资源 请问该系统是否会因为竞争该资源而死锁 例 n个进程共享m个同类资源 若每个进程都需要该类资源 而且各进程对该类资源的最大需求量之和小于m n 说明该系统会不会因为竞争该类资源而阻塞 3 6 3利用银行家算法避免死锁 1 银行家算法中的数据结构 1 可利用资源向量Available 这是一个含有m个元素的数组 其中的每一个元素代表一类可利用的资源数目 其初始值是系统中所配置的该类全部可用资源的数目 其数值随该类资源的分配和回收而动态地改变 如果Available j K 则表示系统中现有Rj类资源K个 2 最大需求矩阵Max 这是一个n m的矩阵 它定义了系统中n个进程中的每一个进程对m类资源的最大需求 如果Max i j K 则表示进程i需要Rj类资源的最大数目为K 3 分配矩阵Allocation 这也是一个n m的矩阵 它定义了系统中每一类资源当前已分配给每一进程的资源数 如果Allocation i j K 则表示进程i当前已分得Rj类资源的数目为K 4 需求矩阵Need 这也是一个n m的矩阵 用以表示每一个进程尚需的各类资源数 如果Need i j K 则表示进程i还需要Rj类资源K个 方能完成其任务 Need i j Max i j Allocation i j 2 银行家算法设Requesti是进程Pi的请求向量 如果Requesti j K 表示进程Pi需要K个Rj类型的资源 当Pi发出资源请求后 系统按下述步骤进行检查 1 如果Requesti j Need i j 便转向步骤2 否则认为出错 因为它所需要的资源数已超过它所宣布的最大值 2 如果Requesti j Available j 便转向步骤 3 否则 表示尚无足够资源 Pi须等待 3 系统试探着把资源分配给进程Pi 并修改下面数据结构中的数值 Available j Available j Requesti j Allocation i j Allocation i j Requesti j Need i j Need i j Requesti j 4 系统执行安全性算法 检查此次资源分配后 系统是否处于安全状态 若安全 才正式将资源分配给进程Pi 以完成本次分配 否则 将本次的试探分配作废 恢复原来的资源分配状态 让进程Pi等待 3 安全性算法 1 设置两个向量 工作向量Work 它表示系统可提供给进程继续运行所需的各类资源数目 它含有m个元素 在执行安全算法开始时 Work Available Finish 它表示系统是否有足够的资源分配给进程 使之运行完成 开始时先做Finish i false 当有足够资源分配给进程时 再令Finish i true 2 从进程集合中找到一个能满足下述条件的进程 Finish i false Need i j Work j 若找到 执行步骤 3 否则 执行步骤 4 3 当进程Pi获得资源后 可顺利执行 直至完成 并释放出分配给它的资源 故应执行 Work j Work j Allocation i j Finish i true gotostep2 4 如果所有进程的Finish i true都满足 则表示系统处于安全状态 否则 系统处于不安全状态 4 银行家算法之例 假定系统中有五个进程 P0 P1 P2 P3 P4 和三类资源 A B C 各种资源的数量分别为10 5 7 在T0时刻的资源分配情况如图3 15所示 图3 15T0时刻的资源分配表 1 T0时刻的安全性 图3 16T0时刻的安全序列 2 P1请求资源 P1发出请求向量Request1 1 0 2 系统按银行家算法进行检查 Request1 1 0 2 Need1 1 2 2 Request1 1 0 2 Available1 3 3 2 系统先假定可为P1分配资源 并修改Available Allocation1和Need1向量 由此形成的资源变化情况如图3 15中的圆括号所示 再利用安全性算法检查此时系统是否安全 图3 17P1申请资源时的安全性检查 3 P4请求资源 P4发出请求向量Request4 3 3 0 系统按银行家算法进行检查 Request4 3 3 0 Need4 4 3 1 Request4 3 3 0 Available 2 3 0 不成立 让P4等待 4 P0请求资源 P0发出请求向量Requst0 0 2 0 系统按银行家算法进行检查 Request0 0 2 0 Need0 7 4 3 Request0 0 2 0 Available 2 3 0 系统暂时先假定可为P0分配资源 并修改有关数据 如图3 18所示 图3 18为P0分配资源后的有关资源数据 流程图 reqi needi error reqi avail block avail avail reqialloci alloci reqineedi needi reqi 系统安全 Y N Y N Y N 正式将资源分配给进程Pi 撤销本次分配让进程Pi等待 3 7死锁的检测和解除 3 7 1检测1 资源分配图 p1 p2 r1 r2 图3 19每类资源有多个时的情况 2 凡属于E中的一个边e E 都连接着P中的一个结点和R中的一个结点 e pi rj 是资源请求边 由进程pi指向资源rj 它表示进程pi请求一个单位的rj资源 e rj pi 是资源分配边 由资源rj指向进程pi 它表示把一个单位的资源rj分配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论