CPU的流水线和IPC分别是什么概念

CPU的流水线和IPC分别是什么概念,第1张

cpu流水线技术是一种将指令分百解为多步,并让不同指令的各步 *** 作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。IPC(Inter-Process Communication,进程间通信)度。

采用流水线技术后,并没有加速单条指令的执行,每条指令的 *** 作步骤一个也不能少,只是多条指令的不同 *** 作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。

扩展资料:

流水线技术通过增加计算机硬件来实现的。它要求各功能段能互相独立地工作,这就要增加硬件,相应地也加大了控制的复杂性。

如果没有互相独立的 *** 作部件,很可能会发生各种冲突。例如要能预取指令,就需增加指令的硬件电路,并把取来的指令存放到指令队列缓冲器中,使微处理器能同时进行取指令和分析、执行指令的 *** 作。

IPC是目前世界范围内唯一通用的国际专利分类。问世的30多年里,IPC对于海量专利文献的组织、管理和检索,做出了不可磨灭的贡献。由于新技术的不断涌现,专利文献每年增长约150万件,目前约有5 000万件。按照第7版69 000个组计算,平均每组包含的文献量超过700件。而且各国的科学技术的发达程度差距很大,它并不能够适应每个国家的具体情况。另外,IPC的建立是基于纸件专利文献的管理与检索,在计算机、通讯网络等新技术快速发展的今天,它显现出一些不适应。为了让IPC名副其实地成为世界各国专利局以及其他使用者在确定专利申请的新颖性、创造性而进行的专利文献检索时的一种有效检索工具, IPC联盟大会成员国从1999年开始对IPC进行改革。

一、国际专利分类(IPC)的改革

本次改革是IPC系统建立以来的最彻底的一次改革。它经历了6年的时间,其间数十名来自世界各国专利局的分类专家、资深审查员,投入到IPC的改革及提高IPC检索效率的各项研究活动中。目前,IPC改革已完成,改革后的IPC(第8版)已于2006年1月1日正式启用。

1.IPC存在的价值

IPC是一种语言独立的专利文献检索、管理工具,用它进行检索可以不依赖文种、同义词及专业术语等,它是各国专利文献获得统一分类的工具。目前有100多个国家使用IPC进行专利文献的检索和管理。在有些国家,IPC甚至是唯一检索工具。

另外,欧洲专利局的ECLA分类、日本专利局的FI分类都是在IPC基础上发展起来的。

2.IPC的发展目标

为了使IPC成为适用于世界各国专利文献和科技文献的专利分类,确保它在电子环境中有效地使用,必须对它的结构及修订方式等进行改革。

IPC的发展目标就是通过改革,将IPC分类设计为两级分类体系,以满足不同需求的用户使用。其中,基本版分类(CORE LEVEL)适用于专利文献量较少的国家及社会公众使用;高级版分类(ADVANCED LEVEL)比基本版更详细、精确,适用于国际专利文献检索。IPC的修订工作需要与专业技术发展的连续性相一致,而且应以现代电子通讯技术为主,以低费用、快速的方式完成,修订程序应能连续不断地体现新技术的发展状况。

改革的具体内容如下。

① 建立两级模式;

② 出版网络版的IPC;

③ 缩短修订周期;

④ 对过档专利文献进行再分类并建立主分类的数据库。

二、两个版本的划分

1.基本版

改革后的IPC的根本特征之一,就是由基本版和高级版构成的两级结构系统。基本版分类是强制分类,它主要用于传播信息以及检索少量专利文献,它的使用对象为较小的专利局和社会公众。由于基本版分类的大众化,因此,它需要相对稳定,而且类目比较宽泛,只包含了IPC的部分内容,如部、大类、小类、大组,某些技术领域还包括一些较上位的小组。目前第8版基本版分类只有2万组左右,是高级版内容的30%,并被分成5个分册印刷成纸件出版。

2.高级版

高级版分类用于世界范围的所有专利或非专利文献管理,并将成为国际标准的、专业化的专利信息检索工具。IPC联盟的任何成员国均可选用高级版分类进行专利文献的检索及管理。据WIPO(世界知识产权组织)的调查数据显示,目前国际上有36个国家的专利局承诺采用高级版进行分类。我国知识产权局的专利文献及PCT最低文献,均已采用了高级版分类。第8版高级版分类包含IPC全部内容,有7万多个组。由于变化较快,它不再以纸件的形式出版,而是在WIPO的网站上以网络版的形式出现。

目前,世界上有37个专利局采用高级版,18个局采用基本版,3个局两个版本混合使用,1个局采用小类表进行站立文献的分类;许多大的专利局,诸如SIPO(中国知识产权局)、EPO(欧洲专利局)、USPTO(美国专利局)、JPO(日本专利局)、German(德国)和UK(英国)专利局使用高级版IPC对其2006年以后产生的专利文献进行分类。

三、网络版分类表的新增功能

为了让IPC在网络环境中使用,以便进一步增强其检索功能,便于其维护和修订,并能够与其他电子检索工具结合使用,WIPO在其官方网站上开发了IPC出版的平台,并在该平台上公布网络版的英文和法译本的分类表全文,以及IPC基本版和高级版修订内容的英文和法译本。基本版和高级版IPC分类表是分别显示的。与以前各版的分类相比,网络版IPC中新增了以下内容和功能。

①便于分类表使用的附加信息,如分类定义、信息参见、分类示例、化学结构式和图例等;

②可进行第7版与第8版分类的对照,以及关键词查询;

③基本版与高级版、英文与法文的转换;

④可以链接各语种IPC译本,如德语、韩语、西班牙语、捷克语、匈牙利亚语、日语、汉语、俄语和荷兰语,及专利、非专利检索数据库,如Espacenet、USPTO、PCT、JOPAL和ECLA等数据库;

⑤经过批准的高级版的修订内容会不断地扩充到电子版IPC中;

⑥可进行技术主题的标准化排序;

⑦可下载XML格式的IPC全文的主文档数据。

四、修订工作

1.基本版IPC的修订周期和程序

为保持相对稳定,IPC基本版的修订为3年一次,这比原来5年一次的修订周期缩短了2/5的时间。修订工作由IPC修订工作组负责,WIPO国际局负责启动,并定期邀请IPC专家委员会成员与斯特拉斯协议第5(2)条中规定的政府间组织参照基本版修订标准提交对基本版的修订建议。WIPO国际局,世界各国专利局或组织提出的修订请求和修订提案转交给IPC修订工作组或专家委员会,由他们来决定是否对这些请求和提案进行立项。被批准的修订请求将纳入IPC基本版本修订项目中。对于获准的每项请求,都要指定一个局作为项目负责人,负责起草项目计划,其中包括各项工作时间表。项目负责人将在IPC电子论坛上组织有关讨论,各局对修订项目的评议和项目报告负责人的提案都将会在论坛上进行公示。

2.高级版IPC的修订周期和程序

为了充分利用信息技术、提高工作效率,高级版IPC修订将在网络上进行,修订周期最多3个月。为了给各专利局提供充足的时间来适应新版的高级分类,在新版本生效前3个月就会出版该分类表。

为了以最有效方式达到IPC改革的目的,WIPO成立了专门负责高级版修订工作的IPC特别分委员会。它的分委员会成员来自承担了20%以上的PCT最低文献再分类工作的专利局。目前,只有美、日、欧、俄4个局满足这一标准,因此,该分委员会目前由上述4个局和国际局组成。分委员会的构成每3年重新评定一次,评定的标准为各局再分类工作的实际工作业绩。高级版修订程序主要遵照下列原则。

①在IPC修订中,最大限度地使用现有的ECLA、FI和USPC分类位置的相同标题和定义;

②在各局进行的再分类工作所提供的有效资源基础上所建立的IPC修订项目优先考虑。特别分委会要衡量各局提出的修订提案的成本/效益,对这些提案做出评价。衡量成本/效益通常是以再分类工作量与修订后检索效率之间的比率为基准的;

③为了便于所有局进行现有技术检索并保持检索文档的完整性,对特别分委员会的成员局强制给出最短的实施时间,限期完成对过档文献再分类工作。

五、再分类与主分类数据库MCD

改革后的IPC需要一个专门用于储存和管理专利文献分类数据的主分类数据库(MCD),其中,包含世界范围内的专利文献和非专利文献题录数据。主分类数据库允许用当前版本的IPC完成专利检索,消除用户对替换IPC各版本的依赖,检索时只需要使用单一版本的IPC,而不需要混合使用IPC1~IPC7的分类号。因此,要求对其中所有过档专利文献进行再分类,且2006年1月1日以后公布的所有文献都要使用当前的IPC8进行分类。

鉴于EPO的DOCDB数据库基本符合作为IPC主分类数据库的要求,因此,决定对DOCDB数据库进行升级后,将其作为改革后IPC的主分类数据库。该数据库的维护亦由EPO负责。DOCDB数据库是20世纪70年代初建立的,主要是为检索早期国际专利组织的专利文献而建立的,收集的数据仅限于专利文献。随着数据收集范围的不断扩大,目前已收录了70多个国际专利组织、5 400万件专利的著录项目数据。另外,所有愿意提交其专利文献著录项目数据的专利机构及国际专利组织,已陆续将其数据提交到数据库中,因此,该数据库的收录量在不断扩增。

欧洲专利局对MCD数据库中的过档专利文献的再分类工作,依赖于各局对其国内文献进行的再分类。现有28个局表示要进行再分类,再分类的数据会陆续进入到MCD数据库中。

由于该数据库中的数据由自愿参加此项工作的世界各国知识产权局提供,因此,MCD数据库是免费使用,至少对于各国知识产权局是免费的。

计算机的分类有:

1、超级计算机:通常是指由数百数千甚至更多的处理器(机)组成的、能计算普通PC机和服务器不能完成的大型复杂课题的计算机。超级计算机是计算机中功能最强、运算速度最快、存储容量最大的一类计算机,是国家科技发展水平和综合国力的重要标志。

2、网络计算机:包括服务器、工作站、集线器、交换机和路由器等。

3、工业控制:主要类别有IPC(PC总线工业电脑)、PLC(可编程控制系统)、DCS(分散型控制系统)、FCS(现场总线系统)及CNC(数控系统)五种。

4、个人电脑:包括台式机、电脑一体机、笔记本电脑、掌上电脑和平板电脑。

5、嵌入式系统:是一种以应用为中心、以微处理器为基础,软硬件可裁剪的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式 *** 作系统以及用户的应用程序等四个部分组成。

扩展资料:

*** 作系统是管理、控制和监督计算机软、硬件资源协调运行的程序系统,由一系列具有不同控制和管理功能的程序组成,它是直接运行在计算机硬件上的、最基本的系统软件,是系统软件的核心。 *** 作系统是计算机发展中的产物,它的主要目的有两个:

一是方便用户使用计算机,是用户和计算机的接口。比如用户键入一条简单的命令就能自动完成复杂的功能,这就是 *** 作系统帮助的结果;

二是统一管理计算机系统的全部资源,合理组织计算机工作流程,以便充分、合理地发挥计算机的效率。

*** 作系统通常应包括下列五大功能模块:

(1)处理器管理:当多个程序同时运行时,解决处理器(CPU)时间的分配问题。

(2)作业管理:完成某个独立任务的程序及其所需的数据组成一个作业。作业管理的任务主要是为用户提供一个使用计算机的界面使其方便地运行自己的作业,并对所有进入系统的作业进行调度和控制,尽可能高效地利用整个系统的资源。

(3)存储器管理:为各个程序及其使用的数据分配存储空间,并保证它们互不干扰。

(4)设备管理:根据用户提出使用设备的请求进行设备分配,同时还能随时接收设备的请求(称为中断),如要求输入信息。

(5)文件管理:主要负责文件的存储、检索、共享和保护,为用户提供文件 *** 作的方便。

*** 作系统的种类繁多,依其功能和特性分为分批处理 *** 作系统、分时 *** 作系统和实时 *** 作系统等;依同时管理用户数的多少分为单用户 *** 作系统和多用户 *** 作系统;适合管理计算机网络环境的网络 *** 作系统。

主要特点

运算速度快:计算机内部电路组成,可以高速准确地完成各种算术运算。当今计算机系统的运算速度已达到每秒万亿次,微机也可达每秒亿次以上,使大量复杂的科学计算问题得以解决。例如:卫星轨道的计算、大型水坝的计算、24小时天气算需要几年甚至几十年,而在现代社会里,用计算机只需几分钟就可完成。

计算精确度高:科学技术的发展特别是尖端科学技术的发展,需要高度精确的计算。计算机控制的导d之所以能准确地击中预定的目标,是与计算机的精确计算分不开的。一般计算机可以有十几位甚至几十位(二进制)有效数字,计算精度可由千分之几到百万分之几,是任何计算工具所望尘莫及的。

逻辑运算能力强:计算机不仅能进行精确计算,还具有逻辑运算功能,能对信息进行比较和判断。计算机能把参加运算的数据、程序以及中间结果和最后结果保存起来,并能根据判断的结果自动执行下一条指令以供用户随时调用。

存储容量大:计算机内部的存储器具有记忆特性,可以存储大量的信息,这些信息,不仅包括各类数据信息,还包括加工这些数据的程序。

自动化程度高:由于计算机具有存储记忆能力和逻辑判断能力,所以人们可以将预先编好的程序组纳入计算机内存,在程序控制下,计算机可以连续、自动地工作,不需要人的干预。

性价比高:几乎每家每户都会有电脑,越来越普遍化、大众化,21世纪电脑必将成为每家每户不可缺少的电器之一。计算机发展很迅速,有台式的还有笔记本。

参考资料:

百度百科——计算机

正如上一章所说, 跨进程通信是需要内核空间做支持的 传统的 IPC 机制如 管道, Socket, 都是内核的一部分, 因此通过内核支持来实现进程间通信自然是没问题的

但是 Binder 并不是 Linux 系统内核的一部分, 那怎么办呢, 这得益于 Linux 的动态内核可加载模块 (Loadable Kernel Module, LKM)的机制

这样 Android 系统就可以通过动态添加一个内核模块运行在内核空间, 用户进程进程之间通过这个内核模块作为桥梁来实现通信

那么在 Android 系统中用户进程之间是如何通过这个内核模块 (Binder Driver)来实现通信的呢 显然不是和上一章的传统 IPC 通信一样,进行两次 copy 了, 不然Binder 也不有在性能方面的优势了

Binder IPC 机制中设计到的内存映射通过 mmap() 来实现, mmap() 是 *** 作系统中一种内存映射的方法

内存映射能减少数据 copy 的次数, 实现用户空间和内核空间的高效互动 两个空间各自的修改也能直接反应在映射的内存区域, 从而被对方空间及时感知 也正因为如此, 内存映射能够提供对进程间通信的支持

Binder IPC 正是基于内存映射( mmap() ) 来实现的, 但是 mmap() 通常是用在有物理介质的文件系统上的

比如进程中的用户区域是不能直接和物理设备打交道的, 如果想要把磁盘上的数据读取到进程的用户区域, 需要两次 copy (磁盘 -> 内核空间 -> 用户空间) 通常在这种场景下 mmap() 就能发挥作用, 通过在物理介质和用户空间之间建立映射, 减少数据的 copy 次数, 用内存读写代替 I/O 读写, 提高文件读取效率

而 Binder 并不存在物理介质, 因此 Binder 驱动使用 mmap() 并不是为了在物理介质和用户空间之间映射, 而是用来在内核空间创建数据接收的缓存空间

一次完整的 Binder IPC 通信过程通常是这样:

这样就完成了一次进程间通信

如下图:

介绍完 Binder IPC 的底层通信原理, 接下来我们看看实现层面是如何设计的

一次完成的进程间通信必然至少包含两个进程, 通常我们称通信的双方分别为客户端进程(Client) 和服务端进程(Server), 由于进程隔离机制的存在, 通信双方必然需要借助 Binder 来实现

BInder 是基于 C/S 架构 是由一些列组件组成 包括 Client, Server, ServiceManager, Binder 驱动

Binder 驱动就如如同路由器一样, 是整个通信的核心 驱动负责进程之间 Binder 通信的建立 / 传递, Binder 引用计数管理, 数据包在进程之间的传递和交互等一系列底层支持

ServiceManager 作用是将字符形式的 Binder 名字转化成 Client 中对该 Binder 的引用, 使得 Client 能够通过 Binder 的名字获得对 Binder 实体的引用

注册了名字的 Binder 叫实名 Binder, 就像网站一样除了 IP 地址以外还有自己的网址

Server 创建了 Binder, 并为它起一个字符形式, 可读易记的名字, 将这个 BInder 实体连同名字一起以数据包的形式通过 Binder 驱动 发送给 ServiceManager, 通知 ServiceManager 注册一个名字为 "张三"的 Binder, 它位于某个 Server 中, 驱动为这个穿越进程边界的 BInder 创建位于内核中的实体节点以及 ServiceManager 对实体的引用, 将名字以及新建的引用打包传给 ServiceManager, ServiceManager 收到数据后从中取出名字和引用填入查找表

ServiceManager 是一个进程, Server 又是一个另外的进程, Server 向 ServiceManager 中注册 BInder 必然涉及到进程间通信 当实现进程间通信又要用到进程间通信, 这就好像蛋可以孵出鸡的前提确实要先找只鸡下蛋! Binder 的实现比较巧妙, 就是预先创造一只鸡来下蛋 ServiceManager 和其他进程同样采用 Binder 通信, ServiceManager 是 Server 端, 有自己的 Binder 实体, 其他进程都是 Client, 需要通过这个 Binder 的引用来实现 Binder 的注册, 查询和获取 ServiceManager 提供的 Binder 比较特殊, 它没有名字也不需要注册 当一个进程使用 BINDERSETCONTEXT_MGR 命令将自己注册成 ServiceManager 时 Binder 驱动会自动为它创建 Binder 实体(这就是那只预先造好的那只鸡) 其实这个 Binder 实体的引用在所有 Client 中都固定为 0 , 而无需通过其他手段获得 也就是说, 一个 Server 想要向 ServiceManager 注册自己的 Binder 就必须通过这个 0 号引用和 ServiceManager 的 Binder 通信 这里说的 Client 是相对于 ServiceManager 而言的, 一个进程或者应用程序可能是提供服务的 Server, 但是对于 ServiceManager 来说它仍然是个 Client

Server 向 ServiceManager 中注册了 Binder 以后, Client 就能通过名字获得 Binder 的引用 Client 也利用保留的 0 号引用向 ServiceManager 请求访问某个 Binder 比如,Client 申请访问名字叫"张三"的 Binder 引用 ServiceManager 收到这个请求后从请求数据包中取出 Binder 名称, 在查找表里找到对应的条目, 取出对应的 Binder 引用, 作为回复发送给发起请求的 Client 从面相对象的角度看, Server 中的 Binder 实体现在有两个引用: 一个位于 ServiceManager 中, 一个位于发起请求的 Client 中 如果后面会有更多的 Client 请求该 Binder, 系统中就会有更多的引用指向这个 Binder, 就像 Java 中一个对象有多个引用一样

我们已经解释清楚 Client, Server 借助 Binder 驱动完成跨进程通信的实现机制了, 但是还有个问题需要弄清楚, 比如 A 进程想要 B 进程中的某个对象(object) 是如何实现的呢, 毕竟它们属于不同的进程, A 进程没办法直接使用 B 进程中的 object

前面我们说过跨进程通信的过程都有 Binder 驱动的参与, 因此在数据流经 Binder 驱动的时候 Binder 驱动会对数据做一层转换

我们在 Client端,向 ServiceManager 获取具体的 Server 端的 Binder 引用的时候,会首先进过 Binder 驱动,Binder 驱动它并不会把真正的 Server 的 Binder 引用返回给 Client 端,而是返回一个代理的 java 对象,该对象具有跟 Server 端的 Binder 引用相同的方法签名,这个对象为 ProxyObject,他具有跟 Server 的 Binder 实例一样的方法,只是这些方法并没有 Server 端的能力,这些方法只需要把请求参数交给 Binder 驱动即可 对于 Client 端来说和直接调用 Server 中的方法是一样的

了解了上面之后, 我们大致可以推算出 Binder 的通信过程

1 注册 ServiceManager

2 注册 Server

3 Client 获取 Server 的 Binder 引用

4 Client 与 Server 通信

IPC是指两个进程之间进行数据交互的过程,即:跨进程通信。

进程是一个执行单,在移动设备上指一个程序或者一个应用。一个进程可以有多个线程,也可以只有一个线程,即主线程。在Android里边,主线程也叫作UI线程,要是在主线程执行大量耗时任务,就会造成界面无法响应,ANR问题,解决这类问题,把耗时 *** 作放在子线程就好。

在Android中,最有特色的进程间通信就是Binder,Binder轻松的实现了进程间的通信。

给四大组件 Activity、Service、Receiver、ContentProvider 在AndroidMenifeist中指定 android:process 属性,可以指定其运行的进程。

: 开头的线程是当前应用的私有进程,其它应用不可以和它跑在同一个进程中,而不以 : 开头的属于全局进程,其他应用通过ShareUID方式可以和它跑在一个进程中。

Android为了每一个应用(进程)都分配了独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间。

多进程会造成如下几个反面方面的问题:

为了解决这些问题,系统提供了跨进程通信方法,虽然不能直接共享内存,但是可以实现数据共享。Intent来传递数据,共享文件,基于Binder的Messenger,ContentProvider,AIDL和Socket。

当我们需要通过Intent和Binder传输数据,或者我们需要把对象持久化到存储设备上,再或者通过网络传输给其它客户端时,Serializable和Parcelable接口可以完成对象的序列化过程。

Serialzable是java提供的序列化接口,是一个空接口,为对象同序列化和反序列化 *** 作。

想让一个类对象实现序列化,只需要这个类实现Serialzable接口,并声明一个serialVersionUID即可,serialVersionUID可以声明成1L或者IDE根据当前类接口自动生成它的hash值。

没有serialVersionUID不影响序列化,但是可能会影响反序列化。序列化时,系统当前类的serialVersionUID写入序列化文件中,当反序列化时,回去检测文件中的serialVersionUID,看它是否和当前类的serialVersionUID一致,如果不一致,无法完成反序列化。

Seriallizable用起来简单但是开销大,序列化和反序列过程需要大量的I/O *** 作,而Parcelable是Android序列化方式,更适合Android平台,效率更高。Parcelable主要用于内存序列化上,而Seriallizable更适用于序列化到本地存储设备,或者将对象序列化后通过网络传输到别的客户端。

Activity、Service、Receiver都支持在 Intent中传递Bundle数据,Bundle实现了Pareclable接口,所以它可以方便地在不同进程间传输。

Android基于Linux,使得其并发读写文件可以没有限制的进行,两个进程可以通过读写一个文件来交换数据。共享数据对文件格式没有要求,双反约定就行。使用文件共享很有可能出问题。

SharedPreferences是个特例,虽然也是属于文件的一种,但是由于系统对它的读写有一定的缓存策略,即在内存中会有一份SharedPreferences文件的缓存,因此在多进程模式下,系统对他的读写变得不可靠,高并发的时候,很大可能会丢失数据。

Messenger可以在不同的进程中传递Message对象,在Message中存入我们需要传递的数据,就可以实现数据的跨进程传递。它是一种轻量级的IPC方案,底层实现是AIDL。

Messenger对AIDL做了封装,使得我们可以更便捷的实现跨进程通信,它一次只处理一个请求,在服务端不用考虑线程同步问题,在服务端不存在并发执行的情形。实现一个Messenger有如下几个步骤:

在服务端创建一个Service,同时创建一个Handler,并通过它来创建一个Messenger对象,然后再Service的onBind中返回这个Messenger对象底层Binder即可。

绑定服务端Service,绑定成功后用服务端返回的IBinder对象创建一个Messenger。通过这个对象就可以向服务端发消息了。如果需要服务端回应客户端,就需要和服务端一样,创建一个Handler,并通过它来创建一个Messenger对象,然后把这个Messenger对象通过Message的replyTo参数传给服务端,服务端可以通过这个replyTo参数回应客户端。

首先要创建一个Service用来监听客户端的连接请求,然后创建一个AIDL文件,将暴露给客户端的接口在这个AIDL文件中声明,最后在Service中实现AIDL接口即可。

绑定服务端的Service,将服务端返回的Binder对象转成AIDL接口所属的类型,接着就可可以范文AIDL里边的方法了。

在AIDL文件中,并不是所有的额数据类型都是可以使用的。

以上6种数据就是AIDL所支持的所有类型,其中自定义的Parecelable对象和AIDL对象必须显示的import,不管是否和当前的AIDL文件位于同一个包。

AIDL文件中用到了自定义的Parcelable对象,必须新建一个同名的AIDL文件,在其中声明它为parcelable类型。

AIDL中除了基础数据类型,其它类型参数都需要标上方向:in、out、inout,in是输入型参数,out是输出型参数,inout是输入输出型参数。

上面是远程服务端示例,AIDL方法在服务端的Binder线程池中执行,因此各个客户端同时连接的时候,会存在多个线程同时访问的情形,所以要在AIDL中处理线程同步,这个CopyOnWriteArrayList支持并发的读写。

AIDL所支持的是一个抽象的List,只是一个接口,因此虽然服务端返回的是CopyOnWriteArrayList,当时Binder会按照List规范去范文数据并最终形成一个ArrayList传递给客户端。

ServiceConnection 的回调方法在UI线程中运行,服务端的方法有可能很久才能执行完毕,需要考虑ANR的问题。

服务的方法本省就运行再Binder线程池中,本身可以执行大量耗时 *** 作,不要去服务端方法中开县城去进行异步任务。

客户端

服务端

RemoteCallbackList是系统提供专门用于删除跨进程listener的,它的内部有一个Map结构,用来保存所有的AIDL回调,这个Map的key就是Binder类型,value是CallBack类型。

客户端解注册的时候,我们只需要遍历服务端所有的listener,找出那个和接注册listener具有相同的Binder对象的服务端listener并把它删除即可。

RemoteCallbackList的beginBroadcast和finishBroadcast必须配对使用。

ContentProvider是Android专门提供不同应用间进行数据共享的方式。底层实现一样是Binder。

系统预置了许多ContentProvider,比如通讯录,日程信息表,只需要通过ContentResolver的query、update、insert、delete方法即可。

以上就是关于CPU的流水线和IPC分别是什么概念全部的内容,包括:CPU的流水线和IPC分别是什么概念、IPC简介和发展历程、计算机的基本组成部分是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9637999.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存