死锁检测与避免的复杂性分析_第1页
死锁检测与避免的复杂性分析_第2页
死锁检测与避免的复杂性分析_第3页
死锁检测与避免的复杂性分析_第4页
死锁检测与避免的复杂性分析_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

18/23死锁检测与避免的复杂性分析第一部分死锁检测算法的时间复杂度 2第二部分死锁避免算法的存储空间复杂度 4第三部分死锁检测与避免算法的比较 6第四部分死锁检测与避免的可行性条件 8第五部分死锁检测与避免的资源分配策略 11第六部分银行家算法的时间效率 13第七部分检测和避免死锁的硬件支持方式 16第八部分死锁检测与避免的应用场景 18

第一部分死锁检测算法的时间复杂度关键词关键要点【死锁检测算法的时间复杂度】:

1.死锁检测算法的时间复杂度与系统规模成正比。在具有n个进程和m个资源类型的系统中,最坏情况下检测算法的时间复杂度为O(n^m)。

2.当系统规模较大时,死锁检测算法可能会变得非常耗时。因此,在实践中通常使用死锁避免算法,以避免死锁发生。

3.随着系统规模的持续增长,死锁检测算法可能会变得不可行。研究人员正在探索使用分布式算法和并行计算来提高死锁检测的效率。

【死锁检测算法的类型】:

死锁检测算法的时间复杂度

死锁检测算法的时间复杂度取决于检测方法和系统大小。以下是不同死锁检测算法的时间复杂度分析:

1.资源分配图算法

时间复杂度:O(V+E)

*V为进程数

*E为资源数

分析:该算法通过构造资源分配图来检测死锁,时间复杂度与图的大小成正比。

2.银行家算法

时间复杂度:O(V^2+E)

*V为进程数

*E为资源数

分析:该算法通过模拟资源分配过程来检测死锁,时间复杂度与进程数和资源数的平方成正比。

3.Habermann的算法

时间复杂度:O(E*V^2)

*V为进程数

*E为资源数

分析:该算法通过使用深度优先搜索来检测死锁,时间复杂度与资源数和进程数的平方成正比。

4.Dijkstra的算法

时间复杂度:O(V^3)

*V为进程数

分析:该算法通过构造一个邻接矩阵并对其进行遍历来检测死锁,时间复杂度与进程数的立方成正比。

5.Coffman、Elphick和Shaprio的算法

时间复杂度:O(V^4)

*V为进程数

分析:该算法通过构造一个邻接矩阵并对其进行矩阵乘法来检测死锁,时间复杂度与进程数的四次方成正比。

6.Keller的算法

时间复杂度:O(V^2*logV)

*V为进程数

分析:该算法通过使用拓扑排序来检测死锁,时间复杂度与进程数的平方和对数成正比。

总体而言,死锁检测算法的时间复杂度通常较高,因为它们需要检查系统中所有可能的死锁状态。因此,对于大规模系统,死锁检测的计算成本可能非常高。

影响复杂度的因素

除了算法本身外,以下因素也会影响死锁检测算法的时间复杂度:

*并发进程数:并发进程数越多,系统中潜在的死锁状态就越多,从而增加检测时间。

*可用资源数:可用资源数越多,检测所有可能的资源分配组合所需的时间就越长。

*系统拓扑:系统的拓扑结构(即进程之间的依赖关系)会影响检测算法的效率。

*检测频率:死锁检测的频率也会影响时间复杂度。频繁的检测会增加计算开销,而较少的检测可能会错过死锁情况。

结论

死锁检测算法的时间复杂度对于确保系统可靠性和防止死锁至关重要。在选择死锁检测算法时,考虑系统规模和对性能的影响非常重要。对于大规模系统,可能需要考虑实现更有效率或近似的检测方法来降低计算成本。第二部分死锁避免算法的存储空间复杂度死锁避免算法的存储空间复杂度

死锁避免算法在执行死锁检测时,需要维护以下数据结构:

1.可用资源向量

该向量记录系统中每种资源类型的可用数量。长度为`m`,其中`m`是资源类型的数量。

2.分配矩阵

该矩阵记录每个进程已分配的每种资源类型数量。大小为`n×m`,其中`n`是进程的数量。

3.请求矩阵

该矩阵记录每个进程请求获得的每种资源类型数量。大小为`n×m`。

4.安全序列

该序列记录一个安全执行顺序,即不会导致死锁的顺序。长度为`n`。

空间复杂度

死锁避免算法的存储空间复杂度由其维护的数据结构的大小决定:

1.可用资源向量:`O(m)`

2.分配矩阵:`O(n×m)`

3.请求矩阵:`O(n×m)`

4.安全序列:`O(n)`

总空间复杂度:

死锁避免算法的总空间复杂度为:

`O(m+n×m+n×m+n)=O(n×m)`

分析

死锁避免算法的存储空间复杂度与进程数量`n`和资源类型数量`m`成正比。随着进程和资源数量的增加,算法所需的存储空间也会成比例增加。

这种空间复杂度对于资源类型数量较少且进程数量较小的系统来说是可接受的。然而,对于资源类型数量较多或进程数量较大的系统,死锁避免算法的存储开销可能变得不可行。

因此,在资源类型或进程数量较多的情况下,通常采用死锁检测算法,而不是死锁避免算法,因为死锁检测算法的存储空间复杂度较低。第三部分死锁检测与避免算法的比较关键词关键要点死锁检测算法

1.基于资源分配图:算法利用资源分配图进行死锁检测,通过遍历图中的依赖关系来识别是否存在死锁状态。优点:简单易懂,实时性好。缺点:开销大,适用于资源数量较少的情况。

2.基于等待图:类似于资源分配图,但只记录了资源阻塞的进程和进程阻塞的资源之间的关系。优点:开销较小,适用于资源数量较多的情况。缺点:需要维护大量的等待信息,实时性较差。

3.基于邻接矩阵:将资源分配图表示为邻接矩阵,并利用矩阵运算进行死锁检测。优点:适合并行计算,效率高。缺点:随着资源数量的增加,邻接矩阵会变得非常大。

死锁避免算法

1.安全状态算法:该算法通过判断系统是否处于安全状态来避免死锁。优点:防止死锁发生,安全性高。缺点:限制性较强,可能导致系统资源利用率下降。

2.银行家算法:该算法模拟资源分配过程,通过追踪已分配、可分配和需要资源的情况来避免死锁。优点:适用于资源数量有限且分配需求已知的情况。缺点:计算复杂度较高,不适合动态环境。

3.避免死锁的动态策略:该策略通过预测未来的资源需求和分配,动态调整系统状态以避免死锁。优点:适应性强,能有效利用系统资源。缺点:预测难度大,实时性要求较高。死锁检测与避免算法的比较

引论

死锁是一种计算机系统中资源竞争导致的系统死机状态。死锁检测和避免算法是解决死锁问题的两种主要策略。本节将对这两类算法进行比较,分析其复杂性、效率和应用场景。

死锁检测算法

原理:

死锁检测算法通过定期检查系统状态来识别已发生的死锁。当检测到死锁时,系统采取措施打破死锁,如回滚进程或抢占资源。

复杂性:

检测算法的复杂性取决于系统中进程和资源的数量。在最坏情况下,检测算法需要遍历所有可能的进程和资源组合,其时间复杂度为O(n^m),其中n为进程数,m为资源数。

效率:

检测算法的效率受死锁发生频率的影响。如果死锁很少发生,检测算法可以高效运行。然而,如果死锁经常发生,检测算法可能会成为系统瓶颈。

死锁避免算法

原理:

死锁避免算法通过在分配资源之前检查系统状态来防止死锁的发生。如果分配资源后系统会陷入死锁,则避免算法拒绝该分配请求。

复杂性:

避免算法的复杂性也受进程和资源数量的影响。在最坏情况下,避免算法需要检查所有可能的资源分配序列,其时间复杂度为O(m^2n),其中m为资源数,n为进程数。

效率:

避免算法的效率比检测算法低,因为避免算法需要在每次资源分配请求前进行检查。然而,如果死锁发生频率较高,避免算法的性能优势就凸显出来了。

比较

|特征|死锁检测算法|死锁避免算法|

||||

|原理|检测已发生的死锁|防止死锁发生|

|复杂性|O(n^m)|O(m^2n)|

|效率|死锁发生频率低时高效|死锁发生频率高时高效|

|应用场景|死锁发生频率低,资源竞争不激烈|死锁发生频率高,资源竞争激烈|

结论

死锁检测和避免算法在解决死锁问题时各有优缺点。检测算法效率高,但对死锁发生频率敏感。避免算法效率较低,但可以有效防止死锁的发生。在选择算法时,需要考虑系统的特点和死锁发生频率。第四部分死锁检测与避免的可行性条件关键词关键要点死锁检测的可行性条件

1.检测算法的可终止性:算法必须能够在有限时间内判断系统是否存在死锁。

2.检测算法的有效性:算法必须能够正确识别出所有存在的死锁。

3.系统状态信息的可获得性:算法需要访问系统状态信息,例如进程状态、资源分配和请求。

死锁避免的可行性条件

1.系统资源的不可扩展性:系统中的资源数量必须是固定的,即不能动态增加或减少。

2.资源请求的提前声明:进程必须在请求资源之前提前声明其最大资源需求。

3.安全状态的维护:系统必须能够在分配资源后检查是否处于安全状态,即是否存在可避免的死锁。死锁检测与避免的可行性条件

#死锁检测的可行性条件

死锁检测算法的可行性取决于系统资源分配和释放的顺序是否遵循特定的约束。这些约束被称为死锁检测的可行性条件,包括:

1.有限等待:系统中进程等待资源的时间不能无限期延长。存在一个预定义的时间限制,超过该时间限制,进程就会被终止或释放其持有的资源。

2.非抢占:进程一旦获得资源,就不能被其他进程抢占。资源只能在进程释放或终止时释放。

3.资源有序请求:进程只能请求它当前不持有的资源。这种约束可以防止循环等待的形成,即进程A等待进程B释放资源,而进程B又等待进程A释放资源。

4.环路等待:系统中必须存在环路等待才能发生死锁。这意味着,一组进程形成一个循环,其中每个进程都在等待另一个进程释放资源。

5.资源不可剥夺:进程一旦获得资源,不能被其他进程剥夺。资源只能在进程释放或终止时释放。

#死锁避免的可行性条件

死锁避免算法的可行性取决于系统资源分配和释放的顺序以及对当前系统状态的知识。这些约束被称为死锁避免的可行性条件,包括:

1.有限等待:与死锁检测的第一个条件类似,系统中进程等待资源的时间不能无限期延长。存在一个预定义的时间限制,超过该时间限制,进程就会被终止或释放其持有的资源。

2.非抢占:与死锁检测的第二个条件类似,进程一旦获得资源,就不能被其他进程抢占。资源只能在进程释放或终止时释放。

3.资源有序请求:与死锁检测的第三个条件类似,进程只能请求它当前不持有的资源。

4.资源状态信息:系统必须能够获取有关可用资源和进程持有的资源的准确信息。

5.安全状态:系统处于死锁安全的初始状态。这意味着可以安排资源分配,使所有进程最终都可以完成而不发生死锁。

6.银行家算法:系统遵循银行家算法。这是一种资源分配策略,可以防止死锁的发生。

#满足可行性条件的重要性

满足这些可行性条件对于死锁检测和避免算法的正确性和效率至关重要。如果不满足这些条件,算法可能无法准确检测或避免死锁的发生,这可能会导致系统出现严重问题,例如死锁和资源饥饿。第五部分死锁检测与避免的资源分配策略关键词关键要点死锁检测

1.死锁定义和检测算法:死锁是一个系统资源分配冲突状态,导致所有进程都无法继续。死锁检测算法通过检查系统状态来识别死锁是否存在。

2.资源图法和等待图法:资源图法和等待图法是用于检测死锁的两种常见算法。它们通过将系统状态可视化为有向图,来识别是否存在死锁循环。

3.死锁恢复策略:一旦检测到死锁,可以采取不同的恢复策略,例如进程终止、资源抢占或回滚。

死锁避免

1.安全性与银行家算法:安全性是系统能够避免死锁的状态。银行家算法是一种死锁避免算法,它使用安全序列和可用资源来确保系统始终处于安全状态。

2.资源请求和释放:进程在请求和释放资源时,必须遵守安全策略,以确保系统保持安全。

3.死锁预防:死锁预防算法通过限制进程同时持有的资源数量或资源请求的顺序来防止死锁。死锁检测与避免的资源分配策略

死锁检测

*基于资源获取顺序(ROA)的死锁检测:检查当前分配的资源超出了未来的分配请求,以检测是否存在死锁。它的复杂度为O(VR),其中V是任务数,R是资源种类的数量。

*基于等待关系图(WG)的死锁检测:使用有向图表示任务之间的等待关系。如果图存在环,则表示存在死锁。它的复杂度为O(V+E),其中E是图中的边数。

死锁避免

安全状态和不安全状态

*安全状态:存在一个资源分配序列,使每个任务都能获得其最大请求的资源,并且不发生死锁。

*不安全状态:不存在这样的资源分配序列。

死锁避免算法

*银行家算法:通过跟踪分配和可用资源,在资源分配请求时检查系统是否仍处于安全状态。它的复杂度为O(V*R)。

*资源申请算法:类似于银行家算法,但允许任务在获得部分资源后动态请求更多的资源。它的复杂度为O(V*R^2)。

*时间戳算法:为任务和资源分配时间戳。只有时间戳早于获得资源的任务才能获取该资源。它的复杂度为O(V*R)。

死锁检测与避免的比较

|特征|死锁检测|死锁避免|

||||

|复杂度|O(VR)或O(V+E)|O(V*R)或O(V*R^2)|

|效率|低|高|

|准确性|高|中等|

|适用性|适用于所有系统|适用于具有已知资源请求的任务|

|实时性|低|高|

死锁检测与避免的复杂性分析

死锁检测的复杂性分析

*ROA算法的时间复杂度为O(VR),其中V是任务数,R是资源种类的数量。这是因为算法需要检查每个任务的当前分配和未来的分配请求。

*WG算法的时间复杂度为O(V+E),其中E是图中的边数。这是因为算法需要遍历图以检测环。

死锁避免的复杂性分析

*银行家算法的时间复杂度为O(V*R),其中V是任务数,R是资源种类的数量。这是因为算法需要为每个任务检查N个可能的资源分配序列。

*资源申请算法的时间复杂度为O(V*R^2),其中V是任务数,R是资源种类的数量。这是因为算法需要为每个可能的资源请求检查N个可能的资源分配序列。

*时间戳算法的时间复杂度为O(V*R),其中V是任务数,R是资源种类的数量。这是因为算法需要比较每个任务和资源的时间戳。

死锁检测与避免的复杂性权衡

死锁检测的复杂度较低,但准确性较高。死锁避免的复杂度较高,但实时性较好。在选择一种方法时,需要权衡复杂度、准确性和实时性的要求。第六部分银行家算法的时间效率关键词关键要点【银行家算法的时间效率】

1.银行家算法具有较高的时间复杂度,特别是在系统规模较大或请求较多时。

2.银行家算法需要检查所有可能的资源分配,以确定是否存在安全状态。随着系统规模的增加,可能的分配数量也会呈指数级增长。

3.银行家算法的时间复杂度为O(n^m),其中n为进程数,m为资源类型数。

【银行家算法的优化技术】

银行家算法的时间效率

银行家算法的复杂性分析涉及评估其两种主要操作所需的时间复杂度:

资源分配请求

当进程请求资源时,银行家算法首先检查系统是否有足够的可用资源来满足该请求。该算法执行以下步骤:

1.检查可用资源向量是否大于等于请求资源向量:此操作的时间复杂度为O(n),其中n是资源类型的数量。

2.如果检查通过,则分配资源:此操作的时间复杂度为O(1),因为只需更新可用资源向量即可。

3.如果检查失败,则将进程置于等待状态:此操作的时间复杂度为O(1)。

因此,资源分配请求的总时间复杂度为O(n)。

资源释放

当进程释放资源时,银行家算法首先更新可用资源向量,然后检查是否有等待的进程可以满足其资源请求。该算法执行以下步骤:

1.更新可用资源向量:此操作的时间复杂度为O(n),其中n是资源类型的数量。

2.遍历等待队列,检查是否有进程可以满足其资源请求:此操作的时间复杂度为O(m),其中m是等待队列中的进程数量。

3.如果找到可以满足其资源请求的进程,则分配资源并将其从等待队列中移除:此操作的时间复杂度为O(1)。

因此,资源释放的总时间复杂度为O(n+m)。

其他复杂度考虑因素

除了资源分配请求和释放,银行家算法还必须考虑以下因素:

*安全状态检查:这涉及检查系统是否处于安全状态,以防止死锁。复杂度为O(n^2)。

*死锁检测:这涉及检测系统是否处于死锁状态。复杂度为O(n^m),其中m是等待队列中的进程数量。

总时间复杂度

在最坏的情况下,银行家算法的时间复杂度为O(n^m),其中n是资源类型的数量,m是等待队列中的进程数量。这可能是因为在死锁检测期间,算法需要遍历等待队列中的所有进程。然而,在实践中,m往往很小,因此算法的实际时间复杂度通常远低于最坏情况。

改进策略

为了提高银行家算法的效率,可以采用以下策略:

*优化资源分配请求:通过使用启发式算法来猜测哪些请求可以满足,可以减少需要检查的请求数量。

*优化等待队列:通过使用优先级队列或其他数据结构,可以快速查找可以满足其资源请求的进程。

*并行化算法:死锁检测和资源分配请求等操作可以并行化,以利用多核系统。

这些优化策略可以显著提高银行家算法在实际系统中的效率。第七部分检测和避免死锁的硬件支持方式关键词关键要点【硬件死锁检测及避免支持】:

1.利用虚拟内存技术,通过动态地址重定位,避免两个进程对同一个物理内存区域同时请求。

2.采用分段式内存管理,将进程的内存空间逻辑地划分为多个段,每个段独立管理,防止段间冲突。

3.引入页式虚拟存储器,通过将内存分成大小相等且固定的页面,实现内存的动态分配和共享。

【硬件死锁预防支持】:

死锁检测与避免的硬件支持方式

1.记忆地址引用计数

内存管理单元(MMU)可用于在发生死锁时检测死锁。MMU跟踪每个进程引用的内存地址。当一个进程试图访问另一个进程正在使用的地址时,MMU会产生中断。操作系统可以利用此中断来检测死锁。

2.死锁检测缓冲区

硬件可以在内存中分配一个死锁检测缓冲区。每个进程在执行资源请求时,都会在缓冲区中写入一条记录。记录包含进程标识符、请求的资源以及请求的时间戳。当一个进程等待资源时,它将在缓冲区中查找循环等待。如果找到循环等待,则表明存在死锁。

3.硬件锁定

某些硬件设备支持硬件锁定。该锁定允许进程独占访问共享资源。当一个进程获取该锁定时,其他进程无法访问该资源。当一个进程释放锁定时,将发出中断,允许另一个进程获取锁。这可以防止多个进程因同一资源而同时进入等待状态,从而消除死锁的可能性。

4.优先级继承

硬件可以支持优先级继承。当一个低优先级的进程等待一个高优先级的进程持有的资源时,低优先级的进程会继承高优先级的进程的优先级。这确保了高优先级的进程不会因低优先级的进程而被饿死,从而减少了死锁的可能性。

5.单一资源所有者

硬件可以强制执行单一资源所有者的策略。该策略确保一次只有一个进程可以拥有给定的资源。当一个进程释放资源时,它将被标记为可用,并且另一个进程可以立即获取该资源。这消除了多个进程同时等待同一资源的可能性,从而消除了死锁。

6.计时器中断

硬件定时器可以定期生成中断。当一个进程等待资源的时间超过某个阈值时,就会产生中断。操作系统可以利用此中断来检测和解决死锁。

7.死锁避免算法

某些硬件设备内置了死锁避免算法。这些算法在资源分配之前分析系统状态,并确定是否存在死锁的潜在风险。如果存在风险,则该算法将拒绝资源请求以防止死锁。

优点:

*硬件支持的死锁检测和避免方法比软件实现更快速、更可靠。

*它们消除了人为错误的可能性,因为它们在硬件级别执行。

*它们可以在不需要软件修改的情况下检测和避免死锁。

缺点:

*硬件支持的解决方案可能比软件实现更昂贵。

*它们可能不适用于所有系统或所有资源类型。

*它们可能需要修改硬件架构,从而导致兼容性问题。

评估:

硬件支持的死锁检测和避免方法在高性能、关键任务系统中非常有用,其中死锁是无法接受的。它们提供了一种快速、可靠且健壮的方式来检测和避免死锁,而不需要大量的软件开销。然而,在成本和兼容性方面必须仔细权衡这些解决方案的优点和缺点。第八部分死锁检测与避免的应用场景关键词关键要点操作系统

-死锁检测和避免在操作系统中至关重要,可防止进程死锁,保证系统稳定运行。

-检测死锁通常通过维护资源分配图或使用银行家算法,识别出系统中存在死锁的进程。

-避免死锁则通过预防措施实现,例如资源有序分配策略、银行家算法或资源预留等。

并行编程

-并行编程中,死锁会经常发生,特别是在多线程和多进程环境中。

-死锁检测和避免尤为重要,可确保并行程序的正确性和效率。

-检测死锁可以使用锁检测工具或死锁分析器,而避免死锁可通过锁顺序、死锁预防算法或死锁恢复策略等手段。

分布式系统

-分布式系统中,死锁可能发生在进程跨越多个节点相互通信时。

-死锁检测和避免在分布式系统中具有挑战性,因为涉及多台计算机和网络延迟。

-可采用分布式死锁检测算法、分布式死锁避免算法或分布式死锁恢复机制来解决分布式系统的死锁问题。

数据库管理系统

-数据库管理系统中,当多个事务同时访问同一条记录时,可能发生死锁。

-死锁检测和避免是确保数据库系统并发性的重要机制。

-检测死锁可以使用超时机制或死锁检测算法,而避免死锁可通过两阶段锁协议或乐观并发控制等方法实现。

人工智能系统

-人工智能系统,特别是多智能体系统中,死锁可能发生在智能体竞争有限资源时。

-死锁检测和避免在人工智能系统中至关重要,可防止系统陷入僵局,影响决策和行动。

-可采用分布式死锁检测算法、多智能体协调机制或基于博弈论的死锁避免方法来解决人工智能系统的死锁问题。

云计算和物联网

-云计算和物联网环境中,资源共享和虚拟化可能会导致死锁问题。

-死锁检测和避免对于确保云计算和物联网系统的可靠性和可用性至关重要。

-云计算中可采用虚拟机死锁检测算法或资源配额机制,而物联网中可使用网络死锁检测工具或轻量级死锁预防算法。死锁检测与避免的应用场景

死锁是计算机系统中的一种状态,其中两个或多个进程因争夺相同的资源而无限等待,导致系统无法继续执行。死锁检测和避免技术可用于防止或检测死锁。具体应用场景包括:

操作系统

*进程管理:在多进程操作系统中,多个进程并发运行,争夺有限的系统资源(如内存、外设)。死锁检测可用于识别死锁并采取适当的措施(如终止进程)。

*内存管理:在虚拟内存系统中,进程需要访问物理内存页。如果多个进程同时请求同一页,可能会发生死锁。死锁避免技术可用于防止此类情况。

数据库系统

*并发事务:数据库中的并发事务可能会争夺表、行或索引上的锁。死锁检测可识别死锁事务,使数据库管理员可以采取补救措施(如回滚事务)。

*二阶段提交:二阶段提交协议是一种用于确保分布式数据库事务原子性的机制。死锁检测可防止在提交阶段发生死锁。

网络系统

*路由协议:路由协议用于在计算机网络中交换路由信息。死锁检测可用于防止路由算法陷入死锁,从而导致网络瘫痪。

*流控制:流控制协议用于管理网络中的数据流。死锁检测可避免数据流死锁,导致网络拥塞。

嵌入式系统

*实时系统:实时系统具有严格的时间约束。死锁检测可及时识别死锁,防止系统因死锁而无法响应时间关键型事件。

*多核系统:多核系统中有多个处理器同时执行任务。死锁检测可防止不同核上的处理器争夺共享资源而死锁。

云计算

*虚拟机管理:云计算中的虚拟机共享相同的物理资

温馨提示

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

评论

0/150

提交评论