• 并行多核体系结构基础在线阅读免费版|百度网盘下载

    编者评论:并行多核架构基础在线阅读面对智能、大数据时代异构并行化趋势,涵盖多核架构的基本内容和本质,填补国内外教学空白,小编为大家带来并行多核架构的基础今天的核心架构。有兴趣的请下载阅读简介虽然多核现在是主流架构,但很少有教科书涵盖并行多核架构。本书填补了这一空白,为研究生或高级本科建筑课程提供了所有材料,重点是多核处理器的架构。本书也适合从事多核编程或多核芯片设计的专业人士作为参考。关于作者YaSolihi是北卡罗来纳州立大学电气与计算机工程系的教授。长期从事计算机体系结构研究。主要研究方向为计算机体系结构、计算机系统建模方法、图像处理,在计算机体系结构和性能建模领域发表了大量高水平论文,相关研究得到了美国国家自然科学基金会、英特尔、IBM、三星、Tekelec、SuMicroytem和惠普的资助。HewaelectedaaIEEEFellowi2017,并入选高性能计算机体系结构国际会议(HPCA)名人堂(2015)。此外,长期从事计算机体系结构教学,教学经验丰富。创建并领导了针对性能、可靠性和安全性的架构研究小组,并开源了许多用于多核架构的性能建模和性能优化的软件工具。相关内容部分预览图书特色向读者介绍如何编写共享内存并行程序的不同视角。帮助读者了解共享存储多核和多处理器所需的软件基础和硬件支持。讨论存储层次结构、设计共享内存并行多处理器时的基本问题、缓存一致性、存储一致性、同步、互连网络,并向读者展示不同概念如何相互作用和适应。探索图形处理单元(GPU)系统中常用的单指令流多线程(SIMT)编程模型。Kuerete架构基础知识Kuerete是一个具有大量代码和功能的大型开源项目。读者可能读过Kuerete相关的文章,或者在其他项目中涉足该领域,甚至在工作中使用过Kuerete。但是为了理解和有效地使用Kuerete,并将其更好地付诸实践,您需要对它有更深入的了解。本章将构建Kuerete的基本框架。首先我们要了解CotaierOrchetratio的含义;然后我们将解释与Kuerete相关的几个重要概念,这些概念将贯穿全书;如何将Kuerete的所有功能提供给用户;然后介绍Kuerete支持的各种运行时和容器引擎(Docker就是其中之一);部署管道的作用)进行了讨论。本章将重点介绍以下几个方面:容器编排、Kuerete适用条件、Kuerete设计原则和架构、Kuerete支持的不同运行环境。读者将熟悉一个开源存储库的整体结构,并为解决剩下的问题打下良好的基础。1.1了解容器编排Kuerete的主要功能是容器编排,即确保所有容器按计划运行在物理机或虚拟机上。这些容器被打包以在部署环境和集群配置的约束下执行大量工作负载。此外,Kuerete必须密切关注所有正在运行的容器,替换已中止、无响应或其他不健康的容器。后续章节将介绍Kuerete的更多能力,本章将重点介绍容器及其编排。1.1.1物理机、虚拟机和容器硬件通过容器编排运行。运行工作负载需要一些真实的硬件配置,包括具有计算能力(CPU或核心)、内存和一些本地持久存储(硬盘驱动器或SSD)的物理物理机。此外,还需要一些共享的持久化存储,所有的物理机都使用网络连接起来,这样它们就可以找到彼此并相互通信。此时,您可以在物理机上运行多个虚拟机,或者干脆保持裸机。Kuerete可以部署在物理硬件或者虚拟机集群上,也可以直接在物理硬件或者虚拟机上管理容器。理论上,Kuerete集群可以由物理机和虚拟机的组合组成,但这并不常见。1.1.2云容器容器非常适合封装微服务,因为它们不仅为微服务提供隔离,而且非常轻量级,并且在部署多个微服务时不会像使用虚拟机时那样产生太多开销。这使得容器成为云部署的理想选择,因为将整个虚拟机分配给每个微服务非常昂贵。主要的云提供商(如AWS、GCE和Azure)现在提供容器托管服务,其中一些基于Kuerete(如Google的GKE);其他如微软Azure的容器服务都是基于AacheMeo等的其他解决方案。此外,AWS将ECS(EC2上的容器服务)作为自己的编排解决方案。Kuerete的强大之处在于它可以部署在这些云服务器上。Kuerete有一个云提供商接口,允许任何云提供商无缝地执行和集成Kuerete。1.1.3服务器运行方式过去系统很小,每个服务器都有一个名称。开发人员和用户确切地知道每台机器上运行的是什么软件。我工作过的许多公司都进行了几天的讨论来决定服务器命名主题。例如,作曲家和希腊神话人物是受欢迎的选择。开发人员将服务器视为他们心爱的宠物。如果一台服务器出现故障,那将是一场大危机,每个人都需要将全部精力放在这三件事上:更换新服务器;确定故障服务器上仍在运行哪些数据;如何使这些数据可用在新服务器上运行。如果故障服务器存储了一些重要的数据,就只能寄希望于备份数据和数据恢复。显然,这种方式是不合适的,当有几十台甚至上百台服务器时,必须像牲畜一样对待,需要考虑集体而不是个人。或许此时在造机器的时候,还是需要把它们当宠物一样对待,但对于we服务器来说,就只能把它们当成牲畜了。Kuerete将这种方法发挥到了极致,接管了将容器分配给特定机器的整个任务。无需花费大量时间与单个机器(节点)进行交互。这最适合无状态工作负载。对于有状态的应用,情况稍有不同,但Kuerete提供了一个名为StatefulSet的解决方案,我们接下来会讨论。本节介绍容器编排的概念,讨论主机(物理机或虚拟机)与容器的关系,并讨论在云中运行容器的优势。最后,用牲畜和宠物的类比来讨论运行模式。第1.2节将深入了解Kuerete的世界并了解与之相关的概念和术语。1.2Kuerete相关概念本节将简要介绍与Kuerete相关的许多重要概念,并提供一些示例来说明这些概念的重要性和关系,以熟悉这些术语和概念。接下来,展示如何将这些概念编织在一起以实现出色的结果。读者可以将其中许多概念视为构建块。一些概念被实现为Kuerete组件,例如节点和主节点。这些组件处于不同的抽象级别,将在1.5节中详细讨论。图1.1是著名的Kuerete架构。图1.1Kuerete架构1.2.1集群集群是Kuerete用来运行构成系统的各种工作负载的主机存储和网络资源的集合。一个完整的系统可以由多个集群组成。稍后将详细讨论集群联合的高级用例。1.2.2节点节点是单个主机,可以是物理机或虚拟机,其职责是运行Pod。每个Kuerete节点运行多个Kuerete组件,例如Kuerlet和Kue代理。节点由Kuerete主控制器管理。这些节点类似于Kuerete工蜂,并肩负着重担。他们曾经被称为奴才。如果读者过去读过文献,请不要混淆,下属指的是节点。1.2.3主节点主节点是Kuerete的控制平面,由几个组件组成,包括API服务器、调度程序和控制器管理器。主节点负责全局和集群级别的节点调度和事件处理。通常情况下,所有主控制器组件都位于单个主机上,当考虑高可用性场景或大型集群时,首选多个主节点。高可用集群在第4章详细讲解。1.2.4吊舱Pod是Kuerete中的工作单元。每个Pod包含一个或多个容器。Pod通常在同一台机器上运行并一起调度。Pod中的所有容器都具有相同的IP地址和端口空间,它们可以通过localhot或标准进程进行通信。此外,Pod中的所有容器都可以访问托管在托管Pod的节点上的本地共享存储,该存储存在于每个容器上。Pod是Kuerete的一个重要特性。作为在多个进程中运行的主要Docker应用程序的超级管理员,可以在单个Docker容器中运行多个应用程序,但不鼓励这种做法,原因如下。透明性:让Pod中的容器对基础设施可见,让基础设施可以为这些容器提供服务,比如进程管理、资源监控等,为用户提供了很多便利。解耦的软件依赖关系:各个容器可以独立进行版本控制、重建和重新部署。Kuerete甚至有望支持单个容器的实时更新。易用性:用户无需运行自己的流程管理器,也无需担心信号和退出代码的事务传播等问题。效率:容器可以更轻量级,因为基础架构将承担更多责任。Pod为相互依赖且需要在同一主机上协作以实现其目标的容器组提供了很好的解决方案。请记住,Pod被认为是临时的、可替代的实体,可以在需要时丢弃和替换,并且Pod可以破坏任何Pod存储。每个Pod都有一个唯一的ID(UID),因此仍然可以区分它们。1.2.5标签标签是用于对对象集合(通常是Pod)进行分组的键值对。这对于其他几个概念很重要,例如副本控制器、副本集和需要对动态对象组进行操作、识别组成员的服务。对象和标签之间存在N×N的关系,每个对象可以有多个标签,每个标签可以应用于不同的对象。标签的设计有一定的限制,对象上的每个标签都必须有唯一的键,标签键必须遵循严格的语法。它的语法由两部分组成:前缀和名称。前缀是可选的,如果存在,用正斜杠(/)与名称分隔,并且必须是有效的DNS子域,前缀最多253个字符。该名称是强制性的,最多可包含63个字符。名称必须以字母、数字、字符(a~z、A~Z、0~9)开头和结尾,并且只能包含字母、数字、字符、点、破折号和下划线。值的规则与名称的规则相同。请注意,标签仅用于标识对象,不会将任何元数据附加到对象。这就是注释的目的(参见第1.2.6节)。1.2.6备注注解允许将任意元数据与Kuerete对象相关联。Kuerete只存储注释并使其元数据可用。与标签不同,它对字符类型和大小没有严格的要求。复杂的系统通常需要这样的元数据,Kuerete认识到这样的需求并开箱即用地提供它,这样用户就不必提取自己单独的元数据存储进行映射。此处介绍了大部分Kuerete概念,并进行了简要概述。在1.2.7节中,我们将从设计动机、内部结构和实现以及源代码等方面继续研究Kuerete的架构。1.2.7标签选择器标签选择器根据标签选择对象,根据相等选择器指定键和值。基于值的相等或不等,它有两个运算符:=(或==)和!=,代码如下。角色=网络服务器这将选择具有该标签键和值的所有对象。标签选择器可以用多个逗号分隔,代码如下。角色=网络服务器,应用程序!=foo基于集合的选择器可扩展性能并允许基于多个值进行选择。代码如下。在(网络服务器、后端)中的角色1.2.8副本控制器和副本集副本控制器和副本集管理一组由标签选择器标识的Pod,确保一定数量的Pod始终在运行。它们之间的主要区别在于,副本控制器通过名称匹配测试成员资格,而通过基于集合的选择器测试副本集。副本集被更新并指定为下一代副本控制器。在撰写本文时,它仍处于测试阶段,并非所有工具都支持。但也许当读者读到这本书时,它已经完全成熟了。Kuerete将保持在副本控制器或副本集中运行相同数量的Pod。当由于主机节点或Pod本身的问题而导致数量下降时,Kuerete将启动新的用例。需要注意的是,如果人为启动的Pod数量超过了指定的数量,则副本控制器会结束多余Pod的进程。副本控制器曾经是许多工作流的中心,例如滚动更新和运行一次性作业。随着Kuerete的发展,它引入了对许多类似工作流的直接支持,例如Deloymet、Jo和DaemoSet等专用对象。这些将在接下来的章节中提到。1.2.9服务服务向用户或其他服务公开一些功能。它们通常包含一组由标签区分的Pod。服务可以提供对外部资源的访问路径,或者直接控制虚拟IP的Pod。本地Kuerete服务器通过方便的端点公开功能。需要注意的是,该服务是在第3层(TCP/UDP)上执行的。Kuerete1.2增加了etry对象,它提供了对HTTP对象的访问,稍后将更详细地讨论。可以通过以下两种机制之一发布或发现服务:DNS或环境变量。服务可以通过Kuerete进行负载均衡。但当服务使用外部资源或需要特殊处理时,开发人员可以自行管理和平衡负载。有关IP地址、虚拟IP地址和端口空间的详细信息将在后面的章节中深入讨论。1.2.10存储卷Pod上的存储是临时的,会随Pod一起消失。如果数据只在节点上的容器之间交换就足够了,但有时数据需要在Pod上存储更长的时间,或者在Pod之间传递,存储卷的概念支持了这种需求。需要注意的是,虽然Docker中也有存储卷的概念,但是还是比较有限的(虽然越来越强大了)。Kuerete使用自己的存储卷,并且支持额外的容器类型(例如rkt),因此它从根本上独立于Docker的存储卷。存储卷有多种类型,目前Kuerete都直接支持。如果可以添加一个间接层,则可能会开发一个抽象存储卷插件。emtyDir存储卷类型为每个容器安装一个卷,默认情况下备份在主机上的任何可用容器上。如果需要,可以请求存储介质。当Pod因任何原因终止时,此存储将被删除。针对特定的云环境、各种网络文件系统,甚至Git存储库,有许多存储卷类型。一个有趣的存储卷类型是PeritetDikClaim,它概述了一些细节并使用了开发人员云提供商环境中的默认持久存储。1.2.11有状态服务集如果您关心Pod上的数据,可以使用持久存储。但是,如果您需要Kuerete来管理分布式数据存储库(例如Kuerete或MySQLGalera),则无法使用常规Pod和服务来模拟它,因为这些集群存储将数据分布在不同的节点上。回到有状态服务集,上一篇文章讨论了宠物和牲畜之间的关系,以及如何管理和执行牲畜。有状态服务集介于两者之间。有状态服务集确保在任何给定时间运行给定数量的唯一可识别宠物(类似于复制控制器)。宠物有以下特点。DNS中可用的稳定主机名。序数索引。与序号和主机名相关联的稳定存储。一组有状态的服务可以帮助对等点发现、添加或删除宠物。1.2.12关键对象密钥对象是包含敏感信息的小对象,例如凭据和令牌。它们以明文形式存储在etcd中,可通过KuereteAPI服务器访问,并在需要访问时作为文件加载到Pod中(使用在常规容量上加载的私钥对象容量)。同一个key对象可以安装到多个Pod中。Kuerete本身对其组件进行加密,开发人员可以创建自己的密钥对象。另一种方法是将密钥对象用作环境变量。需要注意的是,为了获得更好的安全性,在预制密钥对象的情况下,Pod中的密钥对象一般都存放在tmf内存中。1.2.13名称Kuerete中的每个对象都由一个UID和一个名称标识,用于在API调用中引用该对象。名称不应超过253个字符,并使用小写字母数字字符、下划线(_)和点(.)。如果您删除一个对象,您可以创建另一个与被删除对象同名的对象,但UID在集群的整个生命周期内必须是唯一的。UID由Kuerete生成,因此无需担心重复。1.2.14命名空间命名空间是一个虚拟集群。由命名空间分隔的多个虚拟集群可以形成一个物理集群。每个虚拟集群都与其他虚拟集群完全隔离,它们只能通过一个通用接口交换信息。请注意,命名空间中不存在节点对象和持久存储卷。Kuerete可以调度来自不同命名空间的Pod在同一个节点上运行。同样,来自不同命名空间的Pod可以使用相同的持久存储。使用命名空间时,必须考虑网络策略和资源配额,以确保正确访问和分配物理集群资源。1.3深入理解Kuerete架构Kuerete有一个雄心勃勃的目标,即跨环境和云提供商管理和简化分布式系统的编排、部署和管理。它提供了许多功能和服务,这些功能和服务应该可以适应各种环境,并且会继续发展并保持对大多数用户来说足够简单。这是一项艰巨的任务。Kuerete通过清晰的布局、高水平的设计和成熟的架构实现了这一点,该架构同时促进了系统的可扩展性和灵活性。Kuerete的许多部分仍然是硬编码或上下文敏感的,但它们逐渐分解为插件,从而保持内核的通用性和通用性。在本节中,我们将逐层剖析Kuerete。首先,我们将介绍各种分布式系统设计模式以及Kuerete是如何支持它们的。然后我们会介绍Kuerete的外层,也就是它的API集。接下来,我们将介绍构成Kuerete的实际组件。最后对源码树做个简单的介绍,以便更好地了解Kuerete的结构。到本节结束时,读者将对Kuerete的架构、执行以及它的一些设计决策有深入的了解。分布式系统设计模式托尔斯泰的《安娜·卡列尼娜》中描述幸福家庭(分布式工作系统)的一句话都是相似的。这意味着所有设计良好的分布式系统都必须遵循最佳实践和原则,才能正常运行。Kuerete不仅是一个管理系统,它还应用这些最佳实践为开发人员和管理员提供高水平的服务。下面描述了几种设计模式。1、边车模式idecar模式在Pod中除了主应用程序容器之外还共同定位另一个容器。应用程序容器不知道idecar容器,只是执行自己的任务。CetralLoggigAget就是一个很好的例子。主容器只会记录到标准输出,但边车容器会将所有日志发送到中央日志服务,在那里将汇总来自整个系统的日志。使用idecar容器比在主应用程序容器中添加中央日志具有巨大的优势,应用程序不再受中央日志的负担,如果您想升级或更改中央日志记录策略或切换到新的提供程序,只需更新并且部署了一个idecar容器,应用容器并没有改变任何东西,所以不会被意外破坏。2、外交官模式外交模式是指将远程服务视为本地服务并使其成为策略的一部分。外交模式的一个很好的例子是,如果你有一个Redi集群,其中一个主机用于写入,其余副本用于读取,本地外交容器可以充当代理并将Redi暴露给本地主机应用程序容器。主应用程序容器只是简单地连接到localhot:6379(Redi默认端口)上的Redi,但它实际上只是连接到在同一个od中运行的外交容器,它过滤请求并将写入请求发送到真正的Redi主机,并发送读取随机向其中一个只读副本请求,类似于边车模式,在此期间主应用程序不知道正在运行的进程。这在测试真正的本地Redi集群时很有帮助。另外,如果Redi集群配置发生变化,只需要修改diilet容器,主应用也不了解这个操作流程。3、适配器模式适配器模式是关于主应用程序容器的标准化输出。逐步推出的服务可能会面临以下问题:该服务生成的报表格式可能与之前版本不一致,而其他使用该输出的服务和应用程序尚未升级。适配器容器可以与新的应用程序容器共同部署在同一个Pod上,并将其输出与旧版本匹配,直到所有用户都升级。适配器容器与主应用程序容器共享文件系统来监控本地文件系统,每当有新应用程序写入文件时,适配器容器会立即进行适配。4、多节点模式Kuerete直接通过Pod直接支持单节点模式。不直接支持多节点模式,如leader选举、工作队列、分散集合等,但是可以通过标准接口组合Pod来实现Kuerete支持。1.4KuereteAPI如果你想了解一个系统的功能和它提供的服务,你需要关注它的API。API为系统的用户提供了全局图片。Kuerete从多个角度为开发者提供了多套RESTAPI。一些API需要工具使用,而另一些API可以由开发人员直接使用。API的一个重要方面是它们也在不断发展,Kuerete开发人员通过尝试扩展(向现有对象添加新对象和新字段)、避免重命名或删除现有对象和字段来保持它们的可管理性。此外,所有API端点都是版本化的,通常也包含Alha或Beta表示法。代码显示如下。/ai/v1/ai/v2alha1可以通过基于客户端库的kuectlCLI或直接调用RESTAPI来访问API。以下部分详细描述了身份验证和授权机制。至此,读者可以对API有一个初步的了解。1.4.1KuereteAPI这是Kuerete的主要API,而且非常庞大。上面提到的所有概念和许多辅助概念都有对应的API对象和操作。使用正确的权限,可以列出、获取、创建和更新对象。以下是获取所有od列表的常用操作的详细文档。GET/ai/v1/od它支持各种可选参数。retty:如果为true,则以漂亮的形式打印输出。laelSelector:用于限制结果的选择器表达式。watch:如果为true,则监视更改并返回事件流。reourceVerio:使用watch仅返回此版本之后发生的事件。timeoutSecod:列表或监视器的超时时间。1.4.2自动缩放API自动扩缩API非常专注,允许控制对等级别的od自动扩缩器。这个自动缩放器根据CPU利用率甚至特定于应用程序的指标来管理一组Pod。它可以使用/ai/autocalig/v1端点来列出、查询、创建、更新和销毁自动缩放器对象。批处理API批处理API用于管理作业。作业是执行和终止某些活动的Pod。与副本控制器管理的常规Pod不同,它们应该在作业完成时终止。批处理API使用Pod模板来指定作业,然后在大多数情况下允许通过/ai/atch/v1端点列出、查询、创建和删除作业。1.5Kuerete组件Kuerete集群有几个控制集群的主组件,以及在每个集群节点上运行的节点组件。本节将介绍这些组件并解释它们如何协同工作。1.5.1主要组件主组件通常在单个节点上运行,但在高可用性集群或大型集群中,它们可以分布在多个节点上。1、API服务器KueAPIServer(Kue-APIServer)提供KuereteRESTAPI。由于它的无状态特性,它可以很容易地水平扩展。它的所有数据都存储在etcd集群中。API服务器是Kuerete控制平面的体现。2、等等etcd是一个非常可靠的分布式数据存储。Kuerete使用它来存储整个集群状态。在小型临时集群中,单个etcd可以与所有其他主组件在同一节点上运行。但考虑到冗余和高可用性,较大的集群通常包含3个甚至5个etcd集群。3、控制器管理器控制器管理器是打包成单个二进制文件的各种管理器的集合。它包含副本控制器、od控制器、服务控制器和端点控制器等。所有这些控制器都通过API监控集群状态,它们的工作是控制集群处于目标状态。4、调度器Kue调度器负责将Pod调度到节点中。Thiiaverycomlextakaitrequirecoideratioofmultileiteractigfactoruchathefollowig.Reourcerequiremet.ServiceRequet.Hard/oftwareolicycotrait.AffiityadAti-AffiitySecificatio.Datalocality.Deadlie.5、DNSAofKuerete1.3,theDNServiceiartofthetadardKueretecluter.IticheduledaaormalPod.EveryerviceexcettheHeadleervicereceiveDNSame,adPodcaaloreceiveDNSame,whichiuefulforautomatigexloratio.1.5.2NodeComoetNodeiacluterrequireeveralcomoettoiteractwiththeclutermater,receiveworkloadtoexecute,adudatethecluteraedotheirtate.1、AgetTheKueroxyerformlow-leveletworkmaiteaceoeachode,itiuedtoreetlocalKuereteervice,itcaerformTCPadUDPforwardig,aditcafidthecluterIPthroughevirometvarialeorDNS.2、KueletKueletitheo-oderereetatioofKuerete.ItireoileformoitorigcommuicatiowiththemaicomoetadmaagigruigPod,icludigthefollowigaect.DowloadPodecretfromtheAPIerver.Moutvolume.Thecotaier(DockerorRkt)thatruthePod.ReortthetatuofodeadeachPod.Ruthecotaierliveeroe.Ithiectio,wedelveitoKuerete'iteralthroughitAPIadthecomoetuedtocotroladmaagethecluter,exlorigitarchitectureadthedeigatterituortfromamacroerective.Sectio1.6decrietherutimeuortedyKuerete.1.6KuereterutimeKuereteorigiallyolyuortedDockeraacotaierrutimeegie,adowthighavechaged,Rkthaecomeaotheruortedrutimeegie,adthereareomeiteretigattemttoworkwithHyer.hcotaierthroughHyeret.OeofthemoreimortatdeigtrategieithatKuereteitelfhouldecomletelydecouledfromaecificrutime.Kuerete'iteractiowiththerutimeiachievedthrougharelativelygeericiterfacethattherutimeegiemutimlemet.Motoftheiformatioexchagewilleachievedthroughod,cotaiercocet,adoeratiothatcaeerformedocotaier,adeachrutimeegieireoileforeurigthattheKuereterutimeiterfaceicomatile.Ithiectio,therutimeiterfacewilleitroducedideth,dowtoaiglerutimeegie.Afterreadigthiectio,thereaderwillealetochooetherutimeegieuitalefortheactualuecae,adkowtheecificracticalcearioofwitchigorcomiigmultilerutimeitheameytem.1.6.1RutimeIterfaceTherutimeiterfaceforcotaieridetaileditheKuereterojectoGitHu.Kuereteioeource,youcachecktherelevatURL....

    2022-05-06 kubernetes pod是什么 kubernetes Pod 独占资源

  • 《AUTOSAR多核操作系统及其应用》朱元|(epub+azw3+mobi+pdf)电子书下载

    图书名称:《AUTOSAR多核操作系统及其应用》【作者】朱元【页数】226【出版社】上海:同济大学出版社,2021.04【ISBN号】7-5608-9808-7【价格】68.00【参考文献】朱元.AUTOSAR多核操作系统及其应用.上海:同济大学出版社,2021.04.多核操作系统及其应用》内容提要:本书共5章,其中:第1章介绍嵌入式多核微处理器、多核操作系统以及传统汽车电子软件开发方法面临的挑战,进而引出AUTOSAR产生的背景、核心思想及其发展现状。之后,详细分析了AUTOSAR软件架构,并针对不同模块的开发进行详细描述,最后介绍了AUTOSAR方法论、软件接口和Vector针对AUTOSAR软件开发所设计的工具链。第2章主要介绍AURIXTM2G系列多核处理器架构并详细分析内核的结构与特点,以及AURIXTM2G的几个常用片上外设。第3章从嵌入式实时操作系统出发介绍OSEKOS的特性,并分析AUTOSAR多核操作系统在OSEKOS基础上的扩展特性及其相互之间的差异性。随后,介绍AUTOSAR架构下的软件开发过程,详细介绍应用层、RTE、OS、微控制器抽象层之间的关系,并以MICROSAROS为例,重点介绍多核操作系统的设计过程、软件集成环境和文件结构。第4章以车用永磁同步电机控制器为例,介绍其软件架构的开发过程,并在此基础上,阐述AUTOSAR多核操作系统监控的相关概念。随后,重点介绍Gliwa公司T1监控工具的集成和相关的软件功能模块,简单描述并对比分析几种操作系统监控方法。第5章针对嵌入式系统对于程序执行实时性要求和程序执行时间在AUTOSAR多核操作系统中难以预估的矛盾,借助TA工具套件设计一套针对多核操作系统程序的优化方案,在真实车载域控制器上成功地实现了预期的优化目标,并总结归纳出多核操作系统编程的规律和应用技巧。《AUTOSAR多核操作系统及其应用》内容试读第1章AUTOSAR的发展和简介11嵌入式操作系统的发展1.2AUTOSAR的发展13AUTOSAR基础软件层1.4AUTOSAR运行时环境层1.5AUTOSAR应用层1.6AUTOSAR软件接口1.7AUTOSAR方法论TAUTOSAR多核操作系统及其应用1.1嵌入式操作系统的发展1.1.1嵌入式操作系统的发展历程自20世纪80年代起,商业化嵌入式操作系统蓬勃发展,国外嵌入式操作系统已日渐成熟,如VxWork,QNX,PlamOS,WidowCE等。国内的嵌人式操作系统大体分为两类:一类是基于国外嵌入式操作系统进行二次开发,此类大多以Liux为主,比如中软Liux、红旗Liux等;另一类嵌人式操作系统则是中国自主研发,比如女娲Hoe、夏桑2000和DeltaOS等。由于操作系统开发相对复杂,且自主研发成本较高,因此,就目前而言,大多数厂商在开发其产品时,首先还是考虑选用开源的Liux系统,因为Liux相对成熟、稳定而且节约了自主研发的时间和成本,同时,众多Liux开发者又能给予技术支持。各厂商对操作系统的修改和定制未能整齐划一,造成市面上嵌入式系统种类繁多,在复用应用代码时,由于接口不统一而给开发者带来难题。美国EEE协会在Ux的基础上,制定了可移植的操作系统接口协议(PortaleOeratigSytemIterfaceofUix,POSIX),其目的是提高在Uix操作系统环境下应用程序的可移植性。德国汽车工业界于1993年提出了一个用于汽车控制器的开放式系统及其相应的接口体系OESK。与此同时,法国汽车工业PSA和Reaul也着手一个类似的汽车分布式运行系统VDX,即VehicleDitriutedeXecutive。两个社团于1994年合并成OSEK/VDX协会,并于1995年达成共识,发布其规范OSEK/VDX标准,通过标准化API提高了软件的重用性,同时也规范了汽车嵌入式操作系统标准,降低了软件开发难度。实时操作系统是嵌入式系统发展的产物,纵观嵌人式系统的发展历程,大致经历了下面四个阶段。(1)无操作系统阶段。在嵌人式系统早期阶段,通常通过简单微型计算机或单片机实现嵌入式产品设计,其产品具有简单的伺服、监测和控制功能。(2)简单操作系统阶段。在这一阶段,工程师已经开始基于简单的“操作系统”进行软件开发,虽然此时的操作系统比较简单,但其内核精巧且已具备一定的兼容性和扩展能力。(3)嵌入式实时操作系统阶段。传统的嵌入式程序设计中,通常根据控制算法流程图设计一个无限循环的控制程序,在系统运行时依次对每种条件进行判断。当发生中断时,则由中断服务程序(IterrutServiceRoutie,ISR)负责处理。但随着应用的复杂化,系统可能要同时处理多个响应并管理多个外设。如果采用传统设计方法,就会出现两个比较突出的问题:一是为了确保任务的实时性,就必须通过ISR保证,这样就在无形中延长了ISR的执行时间;二是由于应用较多时,多个应用同时访问设备,若资源调度不当,则会造成死锁,降低系统可靠性。实时操作系统根据任务优先级,对任务和资源进行合理调度,保证了系统的可靠性,降低了系统开发的复杂度。2第1章AUTOSAR的发展和简介在嵌人式系统得到蓬勃发展后,操作系统已经能够运行在各种不同类型的微处理器上。操作系统通过向工程师提供大量的API,降低了开发难度,同时提供了图形用户界面(GrahicUerIterface,GUI),使用户体验进一步提升。(4)面向Iteret和可定制阶段。在面向特定应用领域时,可定制嵌入式操作系统(CutomizedEmeddedOeratigSytem,CEOS),不仅能满足基本性能和指标要求,并可通过网络以及云计算等手段使得整个系统达到最优。1.1.2嵌入式多核处理器及操作系统简介随着实时应用研究的飞速发展,对操作系统提出了更高的要求,单处理器已经不能很好地满足某些复杂实时应用系统的需要,采用多处理器结构的实时操作系统和分布式实时操作系统势在必行。嵌入式系统经历了由单核向多核的发展历程,目前,处理器的多核架构种类繁多,主要分为同构多核架构、同构锁步多核架构和异构多核架构,如图1.1所示。同构多核架构是多个核上运行同一操作系统的架构;同构锁步多核架构是在同构多核的基础上增加锁步核,锁步核与主核执行相同的指令,二者进行执行结果的比较,对指令执行错误进行有效监控,从而获得较高的安全性能;异构多核架构是运行不同操作系统的多核架构,由系统程序管理器(Hyervior)协调不同的操作系统在共享物理硬件上的工作。嵌人式多核处理器已成为车用ECU的主流处理器。Core0Core1AUTOSAROSAUTOSAROS同构多核架构Core0Core1AUTOSAROSAUTOSAROSLockteLockte同构锁步多核架构Core0Core1AUTOSAROSLINUXHyervior异构多核架构图L,1三种多核架构示意图在多核嵌入式操作系统领域,国内主机厂和供应商多采用国外发达国家的多核嵌入式操作系统,如uCOS,OSEKOS,AUTOSAROS等。国外的一些汽车零部件公司如BOSCH对多核OS的任务调度已经有了非常深入的研究,国内的供应商如联合汽车电子,3AUTOSAR多核操作系统及其应用上汽捷能等对多核OS的任务调度研究处于消化吸收再创新阶段。我国对嵌人式软件的发展非常重视,2017年,成立国家级项目“智能电动汽车电子电气架构研发”,决定对汽车嵌入式的多核架构、信息安全等领域展开研究。随着互联网、物联网、云计算等热门技术的日益普及,Iteret将与嵌入式技术融合,再一次推动嵌入式技术的快速发展。届时,网络、云计算等将结合嵌入式操作系统,成为汽车电子的新亮点。1.2AUTOSAR的发展1.2.1AUTOSAR的产生背景1,传统开发方法面临的挑战随着汽车电子的不断发展,客户对汽车的舒适性、安全性、智能化和个性化的要求越来越高,ECU执行的功能越来越复杂,软件代码量急速上升,软件复杂度急剧增加,而软件的更新速度也在不断加快。汽车电子系统设计复杂化造成的可靠性隐患导致汽车因安全隐患被“召回”的现象频繁发生,一些国际顶级汽车制造商已经因此倍感痛苦;同时,处理器的种类也在不断增多,大学和企业很难培养出熟悉各类处理器的工程师。传统的嵌入式开发方式不支持硬件抽象,需要嵌入式工程师根据需求在不同的处理器上编写驱动程序,根据不同的ECU编写不同的功能函数,用大量的时间对函数进行测试,再按照严格的逻辑集成应用软件,这一过程将花费大量的时间,而且无法保证嵌人式软件的可靠性和可移植性。德国和法国的整车制造商和零部件生产商曾对嵌入式软件工程师进行调查,发现嵌入式软件工程师将大部分的工作时间耗费在开发和调试底层软件上。2.解决办法为了解决行业内嵌人式软件开发所面临的问题,提高软件的开发效率和可重用性,降低软件的开发成本,全球主流的汽车整车厂、零部件供应商以及软件、半导体和电子工亚的企业于2003年联合成立了汽车开放系统架构AUTOSAR联盟,旨在推动建立汽车电气/电子(E/E)架构的开放式标准,使其成为汽车嵌入式应用功能管理的基础架构,并规范汽车电子产品、软件和元器件的互通性,使用户避免因为采用私有的协议和解决方案而导致开发成本日益增长。目前,该规范已更新到AUTOSAR4.4版本,并且有越来越多的成员加人该联盟中,开展基于AUTOSAR规范的汽车软件设计和开发。目前,AUTOSAR联盟成员如图1.2所示。AUTOSAR定义了一套支持分布式的、功能驱动的汽车电子软件开发方法和电子控制单元上的软件架构标准化方案。从结构化概念设计阶段设计AUTOSAR软件组件及其在ECU间的分配,到定义通信和ECU间的配置,通过工具为软件开发流程提供通用的支持,采用成熟的工具实现需求的结构化并进行相应的管理,同时建立相应的配置。AUTOSAR的核心思想是“统一标准、分散实现、集中配置”,即提供统一、开放的软件第1章AUTOSAR的发展和简介9CoreParterBMWdrouBOSCH6DevelometMemeOtietalDAIMLERSGS⊙PSAPEUGEOTCITROENwNoo/CS☒TOYOTAVOLKSWAGENAG85AociateMemer55PremiumMemerg90品MALPNEQdSPACEARMHONDADELPHIDENSOHIT四SN=●MBec画BETASESTERE震AEOLEAR盖MAGNAFEVifieoFUJITSU©azaTTTech◆TheMathori瑞ValeoNECNP5VOLVO0●●vectorRENESASGeeralGeericStadardTooladSemi-OEMTierISoftwareServicecoductor图1.2AUTOSAR联盟成员架构标准和平台,软件构建在不同的汽车平台上复用,应用软件整合到ECU中,建立独立于硬件的、分层的软件架构;分散实现要求软件系统层次化、模块化,并且降低应用与平台之间的耦合度;将所有模块的配置信息以统一的格式集中管理起来,集中配置生成系统与传统汽车电子开发方法相比,AUTOSAR通过模块化、标准化,使硬件和软件的相互独立性大大提高,如图1.3所示。同时,软件代码可以重复使用和移植,缩短了开发周期,也降低了开发成本。SoftwareSoftwareAUTOSARHardwareHardware图L.3AUTOSAR对传统ECU开发方式的改变基于以上思想,AUTSOAR软件架构分为应用层(AlicatioLayer)、运行时环境层(RTE,RutimeEviromet).和基础软件层(BSW,BaicSoftwareLayer),如图1.4所示。应用层侧重于应用软件的开发,由软件组件(SWC,SoftwareComoet)组成,各个软件组件内部可以包含一个或多个运行实体(RualeEtity),软件组件之间通过Port端口形成逻辑连接。运行时环境层为软件组件之间及软件组件与基础软件之间提供虚拟总线功能(VFB,VirtualFuctioBu),即软件组件与其他软件组件或基础软件的数据交互需要通过运行环境层提供的标准软件接口实现。运行环境层与微控制器之间为基础软件层。这种分层架构优势在于:一方面,OEM可以专注于开发特定的、有竞争力的应用层软件(在运行环境层之上):另一方面,它使OEM所不关心的基础软件层(在运行环境层之下)得到标准化。5AUTOSAR多核操作系统及其应用应用层(AlicatioLayer)运行时环境层(RutimeEvirometLayer)服务层(ServiceLayer)复杂驱动ECU抽象层(ECUAtractioLayer)(ComlexDriver)微控制器抽象层(MicrocotrollerAtractioLayer)微控制器(Microcotroller)图1.4AUTOSAR软件分层架构1.2.2AUTOSAR的发展及应用AUTOSAR自面世以来,从半导体工业、工具和软件厂商、零部件供应商到汽车制造商本身,整个汽车领域内的价值体系都给予了该规范积极地推动。其发展历程如图1.5所示。发布AUTOSAR3.0发布第一版和3.1,BSW被细化发布AUTOSAR3.2AUTOSAR规范,发布AUTOSAR4.2.形成了AUTOSAR3版本与4版本并存定义了BSWAUTOSAR走向成熟方法论发布发布发布AUTOSAR4.1,AUTOSAR2.1.AUTOSAR4.0.AUTOSAR联盟AUTOSAR完整定义了支持多核成立十周年联盟成立BSW和RTE010AUTOSAR1.0AUTOSAR2.1AUT0SAR3.0,3.1,3.2AUTOSAR4.0,4.1AUTOSAR4.2.4.3图1.5AUTOSAR的发展历程根据图1.5,可将AUTOSAR的发展分为三个阶段。第一阶段:AUTOSAR的诞生。成立AUTOSAR联盟,发布第一版AUTOSAR规范,明确提出了基础软件(BSW,BaicSoftware)的概念;初步划分并定义了模块化/标准化的基础软件,对ECU内部软件架构进行了划分,明确了应用程序和基础软件的分工;发布了AUTOSAR2.l,提出了运行时环境(RutimeEviromet,.RTE)的概念。第一阶段的AUTOSAR规范并未成熟,软件架构比较模糊,因此并没被行业广泛接受,也没有在实际中6···试读结束···...

    2022-05-04 epub开源阅读器 epub电脑版

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园