版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/1面向异构体系结构的线程调度算法第一部分异构体系结构的概念及特点 2第二部分线程调度算法面临的挑战 4第三部分基于性能的线程调度算法 7第四部分基于公平性的线程调度算法 9第五部分基于能效的线程调度算法 11第六部分基于可靠性的线程调度算法 15第七部分基于安全性 17
第一部分异构体系结构的概念及特点关键词关键要点【异构体系结构的概念】:
1.异构体系结构是指由不同类型、不同性能、不同功能的处理单元构成的计算机系统。
2.组成异构体系结构的各子系统通常具有不同的指令系统、不同的数据格式、不同的存储结构和不同的通信机制。
3.异构体系结构可以综合不同处理单元的优点,提高系统的整体性能和可靠性。
【异构体系结构的特点】:
#异构体系结构的概念及特点
1.异构体系结构的概念
异构体系结构是指由不同类型计算节点组成的计算系统。这些计算节点可以是具有不同指令集架构(ISA)、不同微架构、不同内存结构、不同存储结构等的处理器、协处理器、加速器、场可编程门阵列(FPGA)、专用集成电路(ASIC)等。异构体系结构可以提供比传统同构体系结构更高的性能、功耗或成本优势。
2.异构体系结构的特点
异构体系结构具有以下特点:
-异构性:异构体系结构由不同类型的计算节点组成,这些计算节点具有不同的指令集架构、微架构、内存结构、存储结构等。
-可扩展性:异构体系结构可以很容易地扩展,只需添加新的计算节点即可。
-灵活性:异构体系结构可以根据不同的应用程序和任务需求进行配置,以实现最佳性能。
-成本效益:异构体系结构可以提供比传统同构体系结构更高的性能、功耗或成本优势。
3.异构体系结构的分类
异构体系结构可以根据不同的分类标准进行分类,常见的分类方法包括:
-按计算节点类型分类:异构体系结构可以分为以下几类:
-CPU+GPU异构体系结构:这种异构体系结构由CPU和GPU组成,CPU负责处理一般的应用程序,而GPU负责处理图形渲染、视频编码等计算密集型任务。
-CPU+FPGA异构体系结构:这种异构体系结构由CPU和FPGA组成,CPU负责处理一般的应用程序,而FPGA负责处理可重构计算任务,例如信号处理、图像处理等。
-CPU+ASIC异构体系结构:这种异构体系结构由CPU和ASIC组成,CPU负责处理一般的应用程序,而ASIC负责处理特定任务,例如网络处理、存储处理等。
-按计算节点连接方式分类:异构体系结构可以分为以下几类:
-共享内存异构体系结构:这种异构体系结构中的所有计算节点共享同一个内存空间,它们可以通过共享变量进行通信。
-分布式内存异构体系结构:这种异构体系结构中的每个计算节点都有自己的私有内存空间,它们可以通过消息传递进行通信。
-混合内存异构体系结构:这种异构体系结构结合了共享内存和分布式内存的优点,它既支持共享内存通信,也支持消息传递通信。
4.异构体系结构的应用
异构体系结构广泛应用于各种领域,包括:
-高性能计算:异构体系结构可以提供比传统同构体系结构更高的计算性能,因此被广泛应用于高性能计算领域,例如天气预报、气候模拟、分子模拟等。
-图形处理:异构体系结构可以提供比传统同构体系结构更高的图形处理性能,因此被广泛应用于图形处理领域,例如游戏、视频编辑、3D建模等。
-机器学习:异构体系结构可以提供比传统同构体系结构更高的机器学习性能,因此被广泛应用于机器学习领域,例如图像识别、自然语言处理、语音识别等。
-数据分析:异构体系结构可以提供比传统同构体系结构更高的数据分析性能,因此被广泛应用于数据分析领域,例如大数据分析、数据挖掘等。
-网络处理:异构体系结构可以提供比传统同构体系结构更高的网络处理性能,因此被广泛应用于网络处理领域,例如路由器、交换机、防火墙等。
-存储处理:异构体系结构可以提供比传统同构体系结构更高的存储处理性能,因此被广泛应用于存储处理领域,例如存储服务器、磁盘阵列等。第二部分线程调度算法面临的挑战关键词关键要点【数据密集型任务的调度】:
1.在异构体系结构中,数据密集型任务的调度面临着巨大的挑战,由于数据量大,需要大量的数据传输,这会消耗大量的带宽和时间,从而降低任务的执行效率。
2.此外,数据密集型任务通常需要使用多个计算节点,这就需要考虑如何将任务合理地分配到不同的计算节点上,以最大限度地利用计算资源,避免出现资源浪费的情况。
3.最后,数据密集型任务的调度还必须考虑数据的安全性,以防止数据泄露或被篡改。
【能耗约束的调度】:
线程调度算法面临的挑战
1.体系结构异构性
异构体系结构是指由不同类型的处理器、内存和网络互连组成的计算机系统。这些不同的组件具有不同的性能特征,这使得为异构体系结构设计线程调度算法变得非常具有挑战性。例如,处理器可能有不同的指令集、不同的时钟速度和不同的缓存大小。内存可能有不同的访问时间和不同的容量。网络互连可能有不同的带宽和不同的延迟。
2.应用程序异构性
应用程序具有广泛的特征,这使得为异构体系结构设计线程调度算法变得更加困难。例如,应用程序可能有不同的并行性水平、不同的计算强度和不同的内存访问模式。
3.工作负载动态性
工作负载是应用程序在异构体系结构上运行时产生的任务集。工作负载可以是静态的,也可以是动态的。静态工作负载是不会随着时间而变化的,而动态工作负载是会随着时间而变化的。动态工作负载给线程调度算法带来了很大的挑战,因为线程调度算法需要能够适应工作负载的变化。
4.实时性要求
有些应用程序具有实时性要求,这意味着这些应用程序必须在特定时间内完成。对于具有实时性要求的应用程序,线程调度算法必须能够保证这些应用程序能够在特定时间内完成。
5.公平性要求
公平性要求是指线程调度算法必须能够公平地对待所有线程。这意味着线程调度算法不能让某些线程长时间等待而让其他线程长时间运行。
6.能源效率要求
随着移动设备的普及,能源效率已成为一个越来越重要的考虑因素。线程调度算法必须能够在满足性能和公平性要求的前提下,尽可能地降低能源消耗。
7.安全性要求
安全性要求是指线程调度算法必须能够防止恶意线程对系统造成损害。例如,线程调度算法必须能够防止恶意线程独占处理器资源,从而导致其他线程无法运行。
8.可靠性要求
可靠性要求是指线程调度算法必须能够在出现故障的情况下继续运行。例如,线程调度算法必须能够在处理器或内存出现故障的情况下,继续调度线程。第三部分基于性能的线程调度算法关键词关键要点基于性能的线程调度算法-目标
1.提高系统整体吞吐量,即在单位时间内完成更多任务。
2.降低系统平均响应时间,即用户发出请求到系统做出响应之间的时间。
3.提高系统资源利用率,即充分利用系统中的处理器、内存和其他资源。
4.保证系统公平性,即每个任务都有机会获得处理器的使用权。
基于性能的线程调度算法-分类
1.静态调度算法:在运行时,调度程序已经知道所有任务的信息,可以根据这些信息为每个任务分配处理器。
2.动态调度算法:在运行时,调度程序不知道所有任务的信息,只能根据当前系统状态为任务分配处理器。
3.实时调度算法:实时调度算法保证任务在指定的时间内完成。
4.非实时调度算法:非实时调度算法不保证任务在指定的时间内完成。基于性能的线程调度算法
基于性能的线程调度算法旨在最大程度地提高异构体系结构上运行的应用程序的性能。这些算法通过考虑线程的性能特征和系统资源的可用性来做出调度决策。基于性能的线程调度算法可以分为两类:静态调度算法和动态调度算法。
静态调度算法
静态调度算法在程序运行之前将线程分配给处理器。这可以通过编译时分析程序并确定线程的性能特征来实现。静态调度算法的优点是开销低,并且可以保证线程在整个运行过程中始终在同一个处理器上运行。然而,静态调度算法的缺点是灵活性较差,无法适应程序运行时的变化。
动态调度算法
动态调度算法在程序运行时将线程分配给处理器。这可以通过运行时监控线程的性能特征并根据这些特征做出调度决策来实现。动态调度算法的优点是灵活性强,可以适应程序运行时的变化。然而,动态调度算法的缺点是开销较高,并且无法保证线程始终在同一个处理器上运行。
基于性能的线程调度算法的分类
基于性能的线程调度算法可以进一步分为以下几类:
*基于优先级的调度算法:这些算法根据线程的优先级来做出调度决策。优先级较高的线程被优先调度执行。
*基于时间片的调度算法:这些算法将时间划分为时间片,并在每个时间片内调度一个线程执行。时间片用完后,当前线程被挂起,下一个线程被调度执行。
*基于公平性的调度算法:这些算法确保每个线程获得相同的执行时间。
*基于亲和性的调度算法:这些算法考虑线程与处理器的亲和性来做出调度决策。亲和性较高的线程被优先调度在与其亲和的处理器上执行。
基于性能的线程调度算法的应用
基于性能的线程调度算法广泛应用于各种异构体系结构上运行的应用程序中。这些算法可以提高应用程序的性能,并减少应用程序的执行时间。
基于性能的线程调度算法的最新进展
近年来,基于性能的线程调度算法的研究取得了很大进展。新的调度算法被提出,这些算法可以更好地适应异构体系结构的复杂性,并提高应用程序的性能。此外,新的调度技术也被开发出来,这些技术可以降低调度开销,并提高调度算法的效率。
基于性能的线程调度算法的未来展望
基于性能的线程调度算法的研究将继续是一个活跃的研究领域。未来,新的调度算法和技术将被开发出来,这些算法和技术可以进一步提高异构体系结构上运行的应用程序的性能。第四部分基于公平性的线程调度算法关键词关键要点基于公平性的线程调度算法一:轮询调度算法
1.轮询调度算法是一种简单而公平的线程调度算法,它通过依次给每个线程分配执行时间来实现公平性。
2.轮询调度算法的优点是实现简单、开销小、公平性好,并且不会导致线程饥饿。
3.轮询调度算法的缺点是不能充分利用多核处理器的优势,并且可能导致线程的执行时间不均匀。
基于公平性的线程调度算法二:时间片轮询调度算法
1.时间片轮询调度算法是在轮询调度算法的基础上改进而来的,它通过给每个线程分配一个时间片来实现公平性。
2.时间片轮询调度算法的优点是能够充分利用多核处理器的优势,并且可以保证每个线程在一定的时间内都能得到执行。
3.时间片轮询调度算法的缺点是实现复杂度较高,开销较大,并且可能导致线程的执行时间不均匀。
基于公平性的线程调度算法三:多级反馈队列调度算法
1.多级反馈队列调度算法是一种分层的线程调度算法,它将线程划分为多个队列,每个队列都有不同的优先级。
2.多级反馈队列调度算法的优点是能够根据线程的优先级来分配执行时间,从而保证高优先级的线程能够优先执行。
3.多级反馈队列调度算法的缺点是实现复杂度较高,开销较大,并且可能导致线程的执行时间不均匀。基于公平性的线程调度算法
公平性是线程调度算法的一个重要目标。公平性是指每个线程在获得处理器时间方面都享有平等的机会,无论其优先级、运行时间或任何其他因素如何。公平性有助于确保每个线程都能够及时完成其任务,防止某些线程由于优先级低或运行时间长而被饿死。
#基于时间片的轮询算法(Round-RobinScheduling)
该算法是一种最简单的公平性线程调度算法,它通过将处理器时间分成相等的时隙(称为时间片)并轮流将时间片分配给各个线程来实现公平性。当一个线程执行完其分配的时间片后,它会被从处理器中移除并排到就绪队列的末尾,然后下一个线程开始执行。如此循环往复,确保每个线程都能够公平地获得处理器时间。
#基于优先级的轮询算法(Priority-BasedRound-RobinScheduling)
该算法是一种改进的轮询算法,它考虑了线程的优先级。在该算法中,每个线程都有一个优先级,优先级高的线程会比优先级低的线程获得更多的执行时间。当选择下一个要执行的线程时,调度器会首先从就绪队列中选择具有最高优先级的线程,然后在该线程执行完其分配的时间片后,再选择具有次高优先级的线程,以此类推。
#最短作业优先算法(ShortestJobFirstScheduling)
该算法是一种动态公平性线程调度算法,它根据线程的预计执行时间来进行调度。在该算法中,调度器会选择具有最短预计执行时间的线程作为下一个要执行的线程。这样可以确保具有较短执行时间的线程能够尽快完成其任务,从而提高系统的整体吞吐量。
#最小松弛时间优先算法(LeastSlackTimeFirstScheduling)
该算法也是一种动态公平性线程调度算法,它根据线程的松弛时间来进行调度。在该算法中,每个线程都有一个松弛时间,松弛时间是指线程的预计完成时间与其截止时间之间的差值。调度器会选择具有最小松弛时间的线程作为下一个要执行的线程。这样可以确保具有较短松弛时间的线程能够尽快完成其任务,从而提高系统的整体实时性。第五部分基于能效的线程调度算法关键词关键要点动态电压频率调整(DVFS)
1.DVFS是一种通过动态调整处理器电压和频率来降低功耗的技术,是一种常用的节能策略。
2.DVFS算法可以根据不同工作负载动态调整处理器电压和频率,从而降低闲置功耗并提高能量效率。
3.DVFS算法的挑战在于如何在性能和功耗之间取得平衡,在满足性能需求的前提下尽可能地降低功耗。
线程迁移
1.线程迁移是一种将线程从一个处理器迁移到另一个处理器的技术,可以有效平衡处理器负载并减少功耗。
2.线程迁移算法需要考虑处理器负载、功耗、通信开销以及处理器之间的距离等因素。
3.线程迁移算法的挑战在于如何在性能和功耗之间取得平衡,在减少功耗的同时尽可能地减少性能损失。
动态线程池管理
1.动态线程池管理是一种根据工作负载动态调整线程池大小的技术,可以有效平衡线程池性能和功耗。
2.动态线程池管理算法需要考虑工作负载、线程池大小、线程池功耗以及系统资源等因素。
3.动态线程池管理算法的挑战在于如何在性能和功耗之间取得平衡,在满足性能需求的前提下尽可能地降低功耗。
并行任务调度
1.并行任务调度是一种将任务分配给多个处理器执行的技术,可以提高任务并行度并减少任务执行时间。
2.并行任务调度算法需要考虑任务粒度、任务依赖关系、处理器资源以及处理器之间的通信开销等因素。
3.并行任务调度算法的挑战在于如何在性能和功耗之间取得平衡,在减少功耗的同时尽可能地提高任务并行度和减少任务执行时间。
异构计算
1.异构计算是一种利用不同类型处理器(如CPU、GPU、FPGA等)协同工作来解决复杂计算问题的技术。
2.异构计算可以有效提高计算性能并降低功耗,是未来计算技术的发展方向之一。
3.异构计算的挑战在于如何将任务合理分配给不同类型的处理器,以及如何协调不同类型的处理器之间的通信和协作。
人工智能和机器学习
1.人工智能和机器学习技术可以用于开发更智能的线程调度算法,从而提高调度效率并降低功耗。
2.人工智能和机器学习技术可以自动学习工作负载特征和处理器特性,并根据学习结果动态调整调度算法参数。
3.人工智能和机器学习技术的挑战在于如何设计有效的算法模型和训练数据,以及如何将这些技术应用于实际的调度系统中。基于能效的线程调度算法
一、概述
基于能效的线程调度算法(Energy-EfficientThreadSchedulingAlgorithms,EETSA)旨在减少异构体系结构中应用程序的能耗,同时保证其性能。EETSA通过考虑处理器功耗、内存功耗、网络功耗等因素,动态调整线程的执行顺序和分配给不同处理器的线程数量,从而优化应用程序的能效。
二、EETSA分类
EETSA可以分为两大类:静态EETSA和动态EETSA。
1.静态EETSA
静态EETSA在应用程序启动前,根据应用程序的特征和异构体系结构的特性,静态地确定线程的执行顺序和分配给不同处理器的线程数量。静态EETSA的优点是简单高效,但缺点是缺乏灵活性,无法应对应用程序运行时的变化。
2.动态EETSA
动态EETSA在应用程序运行时,根据应用程序的执行情况和异构体系结构的资源利用情况,动态地调整线程的执行顺序和分配给不同处理器的线程数量。动态EETSA的优点是灵活,可以应对应用程序运行时的变化,但缺点是开销较大,并且可能导致性能下降。
三、EETSA的实现方法
EETSA的实现方法有很多,常用的包括:
1.基于启发式的方法
基于启发式的方法通过使用启发式算法来寻找最优或近似最优的线程调度方案。启发式算法通常具有快速求解的特点,但缺点是无法保证找到最优解。
2.基于动态规划的方法
基于动态规划的方法通过将问题分解成一系列子问题,并依次解决这些子问题,最终得到问题的最优解。动态规划方法通常具有最优解的保证,但缺点是计算开销较大。
3.基于强化学习的方法
基于强化学习的方法通过让调度器与环境交互,并不断学习和调整调度策略,最终找到最优的调度方案。强化学习方法通常具有较高的灵活性,但缺点是需要大量的数据和时间来训练调度器。
四、EETSA的评价指标
EETSA的评价指标主要包括:
1.能效
能效是指应用程序在单位功耗下完成的计算量。能效越高,则应用程序的功耗越低。
2.性能
性能是指应用程序的执行速度。性能越高,则应用程序的执行速度越快。
3.公平性
公平性是指应用程序在异构体系结构上获得资源的机会平等。公平性越高,则应用程序获得资源的机会越平等。
五、EETSA的应用
EETSA已被广泛应用于各种异构体系结构中,包括多核处理器、异构多核处理器、众核处理器等。EETSA的应用可以有效地降低应用程序的能耗,提高应用程序的性能,并保证应用程序的公平性。第六部分基于可靠性的线程调度算法关键词关键要点可靠性度量
1.故障率和平均修复时间:故障率是指系统或组件在单位时间内发生故障的概率,平均修复时间是指系统或组件从故障发生到修复完成所需的时间。这两个指标是衡量系统可靠性的重要参数。
2.可用性:可用性是指系统在一段时间内能够正常运行的概率,可用性越高,表明系统越可靠。
3.平均无故障时间:平均无故障时间是指系统从启动到发生故障的时间间隔,平均无故障时间越长,表明系统越可靠。
调度算法
1.主动冗余调度:主动冗余调度算法是指在系统中引入冗余资源,并在任务执行过程中动态地将任务分配给冗余资源,以提高系统的可靠性。
2.动态冗余调度:动态冗余调度算法是指在任务执行过程中,根据任务的可靠性要求和系统资源的可用性,动态地调整冗余资源的分配,以提高系统的可靠性。
3.故障预测调度:故障预测调度算法是指通过故障预测模型预测任务的故障概率,并根据故障概率将任务分配给不同等级的资源,以提高系统的可靠性。基于可靠性的线程调度算法
#概述
在面向异构体系结构的系统中,不同类型的处理器的性能和可靠性可能会有很大差异。为了提高系统的可靠性,需要针对异构体系结构设计专门的线程调度算法,以尽量减少任务在不可靠处理器上执行的时间。
基于可靠性的线程调度算法一般分为两大类:主动调度算法和被动调度算法。主动调度算法通过预测任务的可靠性,将任务调度到可靠的处理器上执行,从而提高系统的可靠性。被动调度算法通过检测任务执行过程中的错误,并将任务重新调度到可靠的处理器上执行,从而提高系统的可靠性。
#主动调度算法
主动调度算法通过预测任务的可靠性,将任务调度到可靠的处理器上执行。主动调度算法主要有以下几种:
*基于历史可靠性信息的调度算法:这种算法通过收集和分析任务的过去执行历史,来预测任务的未来可靠性。然后,将任务调度到预测可靠性较高的处理器上执行。
*基于实时可靠性信息的调度算法:这种算法通过实时监测任务的执行状态,来预测任务的可靠性。然后,将任务调度到预测可靠性较高的处理器上执行。
*基于混合可靠性信息的调度算法:这种算法结合了基于历史可靠性信息和基于实时可靠性信息的调度算法,综合考虑任务的过去执行历史和实时执行状态,来预测任务的可靠性。然后,将任务调度到预测可靠性较高的处理器上执行。
#被动调度算法
被动调度算法通过检测任务执行过程中的错误,并将任务重新调度到可靠的处理器上执行。被动调度算法主要有以下几种:
*基于错误检测的调度算法:这种算法通过在任务执行过程中检测错误,来判断任务是否在不可靠的处理器上执行。如果任务在不可靠的处理器上执行,则将任务重新调度到可靠的处理器上执行。
*基于错误恢复的调度算法:这种算法通过在任务执行过程中恢复错误,来提高任务的可靠性。如果任务在不可靠的处理器上执行,则在发生错误时将任务恢复到最近一次正确执行的状态,然后继续在可靠的处理器上执行。
*基于错误预测的调度算法:这种算法通过预测任务执行过程中的错误,来提高任务的可靠性。如果任务在不可靠的处理器上执行,则在发生错误之前将任务重新调度到可靠的处理器上执行。
#总结
基于可靠性的线程调度算法通过预测任务的可靠性或检测任务执行过程中的错误,将任务调度到可靠的处理器上执行,从而提高系统的可靠性。主动调度算法通过预测任务的可靠性,将任务调度到可靠的处理器上执行。被动调度算法通过检测任务执行过程中的错误,并将任务重新调度到可靠的处理器上执行。第七部分基于安全性关键词关键要点【基于安全性的线程调度算法】:
1.确保线程调度算法本身的安全,防止恶意线程利用调度算法漏洞发起攻击。
2.保护线程的私有信息,防止其他线程窃取或篡改线程的私有数据。
3.确保线程调度算法在不同的执行环境中都能安全运行,不受环境变化的影响。
【基于安全性的线程调度算法设计】:
面向异构体系结构的线程调度算法:基于安全性
引言
异构体系结构是一种由不同类型计算单元组成的计算机体系结构,如CPU、GPU和FPGA。这种体系结构可以提高计算性能并降低功耗,但同时也给线程调度带来了一定的挑战。
基于安全性的线程调度算法
为了应对异构体系结构中的线程调度挑战,研究人员提出了多种基于安全性的线程调度算法。这些算法通过考虑系统安全需求来确保系统能够安全可靠地运行。
1.基于访问控制的线程调度算法
这种算法通过使用访问控制机制来保护系统资源。当一个线程请求访问系统资源时,必须先通过访问控制机制的检查。如果该线程具有访问该资源的权限,则允许其访问;否则,拒绝其访问请求。基于访问控制的线程调度算法可以有效地防止未授权的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《时空会客厅》节目方案
- 安质部管理制度
- 公共厕所保洁制度
- 2024年道路客运从业资格证模拟考试下载
- 2024年吉林客运驾驶员考试虚拟场景考试题目
- 2024年哈尔滨客运从业资格证题库
- 吉首大学《风景建筑速写》2021-2022学年第一学期期末试卷
- 《机械设计基础》期末考试试卷六
- 广东省公务员考试2021-2020申论真题(附答案)
- 吉林艺术学院《数字空间设计表现》2021-2022学年第一学期期末试卷
- 超星尔雅学习通走近核科学技术章节测试答案
- 初中艺术鄂教七年级上册(2022年新编) 漫步艺术长廊舞剧欣赏《永不消逝的电波》教学设计
- 水电厂检修标准化作业流程图
- 中考数学复习专题课件:瓜豆原理之直线型
- GB 18384-2020 电动汽车安全要求
- 腹股沟斜疝护理查房ppt
- 精品堆垛机安装指导书
- PMC生产计划与物料控制实务课件
- 鸡的饲养管理-优质课件
- 人工湿地设计规范标准[详]
- 提灌站项目施工组织设计
评论
0/150
提交评论