一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

线程间中断信号发送方法及装置与流程

2022-02-22 09:58:42 来源:中国专利 TAG:


1.本说明书实施例通常涉及计算机技术领域,尤其涉及线程间中断信号发送方法及装置。


背景技术:

2.多核多线程处理器的中断可以由可编程中断控制器(programmable interrupt controller,pic)统一控制。pic允许一个硬件线程中断其他硬件线程,这种方式被称为核间中断(inter-processor interrupts,ipi)。pic具有宽度为32位的核间中断寄存器ipibase,该寄存器存储目的线程的编号、中断向量及中断类型(是否中断多个硬件线程)等内容。核间中断可以通过向核间中断寄存器ipibase写入需要的值来产生。若硬件线程a想要发送核间中断给硬件线程b,它只需向核间中断寄存器ipibase中写入硬件线程b的线程id、中断向量、中断类型等值。pic会通知硬件线程b所在的内核挂起它当前的执行序列,并根据中断向量跳转到中断服务例程isr的入口。
3.在host kernel下,cpu可以利用ipi来实现硬件线程之间的中断信号发送,但是在一些应用场景下,不能利用ipi来实现硬件线程之间的中断信号发送。


技术实现要素:

4.鉴于上述,本说明书实施例提供一种线程间中断信号发送方法及装置。利用该线程间中断信号发送方法及装置,可以实现所有运行态的线程间的中断信号发送。
5.根据本说明书实施例的一个方面,提供一种用于在第一线程和第二线程之间发送中断信号的方法,所述方法由pci设备执行,所述方法包括:经由pci总线接收第一线程所在处理器通过mmio写操作发送的通知消息,所述mmio写操作基于所述pci设备的mmio内存的内存地址所映射的所述第一线程的虚拟空间地址实现;响应于接收到所述通知消息,生成旨在第二线程的中断信号;以及按照所述pci设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号,其中,所述中断配置信息根据所述第二线程的状态信息配置,所述第二线程的状态信息包括所述第二线程所处运行态以及所述第二线程是否处于运行中。
6.可选地,在上述方面的一个示例中,所述中断配置信息根据所述第二线程的状态信息配置可以包括:如果所述第二线程处于host kernel,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器中的为所述第二线程配置的中断句柄;如果所述第二线程处于guest kernel且所述第二线程在运行中,则将中断配置为posted interrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;如果所述第二线程处于guest kernel且所述第二线程未运行,则将所述中断信号发送方式配置为将所述中断信号发送给host kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;如果所述第二线程处于用户态,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程
kernel且所述第二线程在运行中,则所述中断配置信息配置单元将中断配置为posted interrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;如果所述第二线程处于guest kernel且所述第二线程未运行,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给host kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器。
16.可选地,在上述方面的一个示例中,如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为通过信号量发送方式或eventfd发送方式将所述中断信号发送给所述第二线程所在处理器。
17.可选地,在上述方面的一个示例中,所述通知消息包括mov指令,所述mov指令的源操作数存储所述pci设备的mmio内存所需值,以及所述mov指令的目的地址是所述mmio内存所映射到的所述第一线程的虚拟空间地址。
18.可选地,在上述方面的一个示例中,所述mmio内存所需值包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,响应于接收到所述mov指令,所述中断信号生成单元根据所述mov指令中的mmio内存所需值,生成与所需值对应的中断信号。
19.可选地,在上述方面的一个示例中,所述pci设备具有限流策略。所述装置还可以包括:限流判断单元,在生成所述中断信号后,根据所述限流策略进行限流判断。在所述限流判断单元判断为进行限流时,所述中断信号发送单元不发送所述中断信号,在所述限流判断单元判断为不进行限流时,所述中断信号发送单元按照所述pci设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
20.可选地,在上述方面的一个示例中,所述pci设备具有分发策略。所述中断信号发送单元根据所述分发策略,按照所述pci设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
21.可选地,在上述方面的一个示例中,所述pci设备具有中断重映射表。所述装置还可以包括:中断重映射单元,基于所述中断重映射表来对所述中断信号进行中断重映射。所述中断信号发送单元按照所述pci设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送经过中断重映射后的中断信号。
22.根据本说明书的实施例的另一方面,提供一种用于在第一线程和第二线程之间发送中断信号的装置,所述装置包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
23.根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
24.根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
附图说明
25.通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
26.图1示出了根据本说明书的实施例的核间通知系统的系统架构的示例框图。
27.图2示出了根据本说明书的实施例的中断信号发送方sender和中断信号接收方receiver的部署示意图。
28.图3示出了根据本说明书的实施例的中断信号发送方sender的初始化过程的示例示意图。
29.图4示出了根据本说明书的实施例的中断配置信息配置过程的示例流程图。
30.图5示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法的流程图。
31.图6示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的装置的方框图。
32.图7示出了根据本说明书的实施例的基于计算机实现的中断信号发送装置的示意图。
具体实施方式
33.现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
34.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
35.在host kernel下,cpu可以利用ipi来实现硬件线程之间的中断信号发送,但是在一些应用场景下,由于权限原因,无法使用ipi机制来实现线程所在的cpu之间的中断信号通知。上述应用场景的示例例如可以包括vcpu同步操作、para-virtualized(pv)driver和两级调度器。
36.在vcpu同步操作的应用场景下,作为中断信号发送方的线程sender处于guest kernel,以及作为中断信号接收方的线程receiver处于guest kernel。在硬件虚拟化背景下,guest kernel中的很多操作需要vcpu同步操作,比如:tlb shootdown、rcu、、cpu frequency scaling、schedule。
37.在pv driver的应用场景下,作为中断信号发送方的线程sender处于guest kernel,以及作为中断信号接收方的线程receiver处于host kernel。pv driver分为前端
driver和后端driver,当前端driver完成请求填写后,需要激活或唤醒(kick)后端driver进行工作。
38.在两级调度器的应用场景下,作为中断信号发送方的线程sender处于guest kernel或host kernel,以及作为中断信号接收方的线程receiver处于host kernel。在两级调度器系统中,除了host kernel中的l1调度器(比如linux cfs)之外,在guest kernel或者hr3中存在另外一个调度器(l2调度器),l2调度器用于调度guest kernel或者hr3中的任务。无论采用work-stealing还是work-sharing模型,在任务繁忙时,需要唤醒新的vcpu或线程进行工作。
39.下面将参照附图来详细描述根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法及装置。
40.图1示出了根据本说明书的实施例的核间通知系统1的系统架构的示例框图。
41.如图1所示,核间通知系统1包括中断信号发送方sender 10、pci设备20和中断信号接收方receiver 30。sender 10可以是运行在用户态的hr3线程,由处于host kernel的物理处理器(例如,pcpu0)运行的hr0线程,或者由处于guest kernel的虚拟处理器(例如,vcpu0)运行的guest线程。receiver 30可以是运行在用户态的hr3线程,由处于host kernel的物理处理器(例如,pcpu1)运行的hr0线程,或者由处于guest kernel的虚拟处理器(例如,vcpu1)运行的guest线程。图2示出了根据本说明书的实施例的中断信号发送方sender和中断信号接收方receiver的部署示意图。在本说明书中,sender 10以及receiver 30分别对应于第一线程和第二线程。
42.pci设备20例如可以通过向通用pci设备加入定制的通知分发(notification distribution)功能和/或通知限流(notification restrictor)功能来实现。通用pci设备的示例可以包括但不限于nic设备、apic设备和intel dlb(dynamic load balancer)设备。nic设备的示例例如可以包括但不限于比如ixgbe和i40e的通用网卡设备或者智能网卡设备。
43.在进行核间通知之前,需要对sender 10和receiver 30进行初始化处理。在对sender 10初始化处理时,将pci设备20的内存地址映射到sender 10的虚拟空间地址。
44.图3示出了根据本说明书的实施例的中断信号发送方sender的初始化过程的示例示意图。
45.在host场景下,线程访问pci设备20(例如,rnic)通常采用mmio写操作。为了让vm场景下的线程也可以按照上述方式访问pci设备20,需要引入额外的内存映射,即,将pci设备20的mmio内存(如doorbell)的内存地址映射到vm中的线程虚拟地址空间。下面以在设备初始化过程中映射一个doorbell为例说明上述过程。
46.前端线程调用verbs接口“open_device”来初始化设备上下文。上述初始化调用被分为如图3所示的三个部分,步骤2a、2b和2c。
47.如图3所示,在2a,在虚拟化后端收到前端请求后,在rnic上申请一个doorbell,由此后端驱动获取所申请的doorbell的hpa(host物理地址)doorbell_hpa。在2b,前端驱动识别pci设备的doorbell所在的mmio内存,然后调用mmap()将该mmio内存的内存地址映射到线程的虚拟地址空间。所申请的内存可以称为vdoorbell,它对应qemu中的虚拟地址空间doorbell_hva。在步骤2c,后端驱动通过修改qemu的页表创建doorbell_hva和doorbell_
hpa之间的映射,由此,前端线程访问vdoorbell就会被定向到pci设备上的真实doorbell。按照这种方式,vm中的线程可以通过mmio写操作的方式直接访问pci设备上的doorbell。
48.在对receiver 30进行初始化时,需要根据receiver 30的状态信息配置pci设备的中断配置信息。在本说明书中,线程的状态信息可以包括线程所处运行态以及线程是否处于运行中。中断配置信息可以包括中断信号发送方式、目标cpu。
49.图4示出了根据本说明书的实施例的中断配置信息配置过程400的示例流程图。
50.如图4所示,在对receiver 30进行初始化时,在410,判断receiver 30是否处于host kernel。如果判断为receiver 30处于host kernel,则在420,将pci设备20的中断配置信息配置为中断配置信息1,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给receiver 30所在处理器中的为receiver 30配置的中断句柄interrupt handler。例如,在receiver 30处于host kernel时,可以在host kernel中为receiver 30配置合适的interrupt handler。然后,将中断信号发送给所配置的interrupt handler。interrupt handler响应于所接收的中断信号执行相应处理。在本说明书中,术语“线程所在处理器”是指运行线程的处理器。处理器的示例例如可以包括但不限于cpu、mpu、gpu等。
51.如果判断为receiver 30未处于host kernel,则在430,判断receiver 30是否处于guest kernel。如果判断为receiver 30未处于guest kernel(即,处于用户态,hr3线程),则在440,将pci设备20的中断配置信息配置为中断配置信息2,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给receiver 30所在处理器。例如,在一个示例中,可以将中断信号发送方式配置为通过信号量(semaphore)发送机制或eventfd将中断信号发送给receiver 30所在处理器。
52.信号量发送机制利用pv操作来对信号量进行处理。信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当信号量的值大于0时,表示当前可用资源的数量。当信号量的值小于0时,其绝对值表示等待使用该资源的进程个数。信号量的值由pv操作来改变。执行一次p操作意味着请求分配一个单位资源,信号量的值减1。执行一个v操作意味着释放一个单位资源,信号量的值加1。
53.pv操作由p操作原语和v操作原语组成。p操作(wait)申请一个单位资源,进程进入。v操作(signal)释放一个单位资源,进程出来。在执行p(s)操作后,将信号量s的值减1,即s=s-1。如果s《=0,则该进程继续执行。否则,将该进程置为等待状态,排入等待队列。在执行v(s)操作后,将信号量s的值加1,即s=s 1。如果s》0,则该进程继续执行。否则,释放队列中第一个等待信号量的进程。
54.如果判断为receiver 30处于guest kernel,则在450,判断receiver 30是否在运行中。如果判断为receiver 30在运行中,则在460,将pci设备20的中断配置信息配置为中断配置信息3,即,将中断配置为posted interrupt,并且将中断配置信息中的中断信号发送方式配置为将中断信号发送给receiver 30所在处理器。posted interrupt允许apic中断直接注入到guest而不需要vm-exit。
55.如果判断为receiver 30未运行,则在470,将pci设备20的中断配置信息配置为中断配置信息4,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给host kernel中的与receiver 30所在虚拟处理器对应的物理处理器,所述物理处理器唤醒receiver 30所在虚拟处理器。例如,物理处理器可以通过irqfd绑定并唤醒receiver 30所
在虚拟处理器。如有需要,可以将中断信号注入guest kernel,guest kernel中的irq响应可以根据需要进行调整。
56.图5示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法500的流程图。方法500由pci设备20执行。
57.如图5所示,在510,pci设备20经由pci总线接收第一线程所在处理器通过mmio写操作发送的通知消息。这里,mmio写操作基于pci设备的mmio内存的内存地址所映射的sender 10的虚拟空间地址。这里,mmio内存例如可以包括doorbell内存。在一个示例中,通知消息可以是mov指令。mov指令的源操作数存储pci设备20的mmio内存所需值,以及mov指令的目的地址是mmio内存所映射到的sender 10的虚拟空间地址。例如,mov指令可以是mov reg,mem,其中,reg寄存器存储doorbell内存所需值,mem表示doorbell内存映射到的sender 10的虚拟空间地址。
58.在520,响应于接收到通知消息,pci设备20生成旨在receiver 30的中断信号。这里,旨在receiver 30的中断信号是指所生成的中断信号意在去往receiver 30所在处理器。
59.在一个示例中,源操作数所存储的mmio内存所需值可以包括固定值。相应地,在接收通知消息后,pci设备20生成固定类型的中断信号。在另一示例中,源操作数所存储的mmio内存所需值可以包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,响应于接收到mov指令,根据mov指令中的mmio内存所需值,生成与所需值对应的中断信号。
60.在如上生成中断信号后,在530,按照pci设备的中断配置信息所配置的中断信号发送方式向receiver 30所在处理器发送中断信号。receiver 30所在处理器接收到中断信号后,响应于所接收的中断信号执行相应处理。
61.可选地,在另一示例中,pci设备20可以具有限流策略。所述限流策略的示例例如可以包括但不限于:pci设备20在规定时段内针对中断信号的最大发送次数。例如,pci设备20在一秒内针对每个中断最多发送m次。引入限流策略的主要原因是防止不信任用户利用该中断发送机制进行dos攻击。在上述限流策略中,需要在pci设备20中为每个中断信号设置一个计数器counter,利用该计数器counter来计数该中断信号在规定时段内的发送次数。
62.在pci设备20具有限流策略的情况下,在生成中断信号后,可以根据限流策略进行限流判断,以判断是否需要对该中断信号执行限流处理。例如,在中断信号在规定时段内的发送次数达到最大发送次数时,判断为需要对该中断信号进行限流处理。在中断信号在规定时段内的发送次数未达到最大发送次数时,判断为不需要对该中断信号进行限流处理。在限流判断结果为需要限流时,不发送所述中断信号。在限流判断结果为不需要限流时,按照pci设备的中断配置信息所配置的中断信号发送方式向receiver30所在处理器发送该中断信号。
63.可选地,在另一示例中,pci设备20可以具有分发策略。所述分发策略的示例例如可以包括但不限于:广播分发模式、信号量分发模式、1:1定向分发模式、1:n定向分发模式。在1:n定向分发模式下,响应于接收到通知消息,pci设备20生成n个分别旨在n个receiver 30的中断信号。
kernel中的与第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒第二线程所在虚拟处理器。如果第二线程处于用户态,则中断配置信息配置单元630将中断信号发送方式配置为将中断信号发送给第二线程所在处理器。
76.此外,可选地,在一个示例中,如果第二线程处于用户态,则中断配置信息配置单元630将中断信号发送方式配置为通过信号量发送机制或eventfd发送机制将中断信号发送给第二线程所在处理器。
77.此外,可选地,在一个示例中,所述通知消息可以包括mov指令,其中,mov指令的源操作数存储pci设备的mmio内存所需值,以及mov指令的目的地址是mmio内存所映射到的第一线程的虚拟空间地址。
78.在一个示例中,源操作数所存储的mmio内存所需值可以包括固定值。相应地,在接收通知消息后,中断信号生成单元620生成固定类型的中断信号。在另一示例中,源操作数所存储的mmio内存所需值可以包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,在接收到mov指令后,中断信号生成单元620根据mov指令中的mmio内存所需值,生成与所需值对应的中断信号。
79.可选地,在一个示例中,pci设备可以具有限流策略。中断信号发送装置600还可以包括限流判断单元(未示出)。在生成中断信号后,所述限流判断单元根据限流策略进行限流判断。在限流判断单元判断为进行限流时,中断信号发送单元640不发送中断信号。在限流判断单元判断为不进行限流时,中断信号发送单元640按照pci设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。
80.可选地,在一个示例中,pci设备具有分发策略。在这种情况下,中断信号发送单元640根据分发策略,按照pci设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。
81.可选地,在一个示例中,pci设备可以具有中断重映射表。中断信号发送装置还可以包括中断重映射单元(未示出)。中断重映射单元基于中断重映射表来对中断信号进行中断重映射。然后,中断信号发送单元640按照pci设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送经过中断重映射后的中断信号。
82.如上参照图1到图6,对根据本说明书实施例的中断信号发送方法和中断信号发送装置进行了描述。上面的中断信号发送装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
83.图7示出了根据本说明书的实施例的基于计算机实现的中断信号发送装置700的示意图。如图7所示,中断信号发送装置700可以包括至少一个处理器710、存储器(例如,非易失性存储器)720、内存730和通信接口740,并且至少一个处理器710、存储器720、内存730和通信接口740经由总线760连接在一起。至少一个处理器710执行在存储器中存储或编码的计算机程序(即,上述以软件形式实现的元素)。
84.在一个实施例中,在存储器中存储计算机程序,其当执行时使得至少一个处理器710:经由pci总线接收第一线程所在处理器通过mmio写操作发送的通知消息,mmio写操作基于pci设备的mmio内存的内存地址所映射的第一线程的虚拟空间地址实现;响应于接收到通知消息,生成旨在第二线程的中断信号;以及按照pci设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号,其中,中断配置信息根据第二线程
的状态信息配置,第二线程的状态信息包括第二线程所处运行态以及第二线程是否处于运行中。
85.应该理解,在存储器中存储的计算机程序被执行时使得至少一个处理器710执行本说明书的各个实施例中的结合图1-图6描述的各种操作和功能。
86.根据一个实施例,提供了一种比如计算机可读介质(例如,非暂时性计算机可读介质)的程序产品。计算机可读介质可以具有计算机程序(即,上述以软件形式实现的元素),该计算机程序被处理器执行时,使得处理器执行本说明书的各个实施例中的结合图1-图6描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的计算机程序。
87.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此计算机可读代码和存储计算机可读代码的可读存储介质构成了本说明书的一部分。
88.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
89.根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图6描述的各种操作和功能。
90.本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
91.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
92.以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
93.上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
94.本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见
的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献