内核崩溃报告的分类方法及装置与流程

文档序号:30956821发布日期:2022-07-30 10:23阅读:281来源:国知局
内核崩溃报告的分类方法及装置与流程

1.本说明书涉及数据处理技术领域,尤其涉及一种内核崩溃报告的分类方法及装置。


背景技术:

2.作为大多数操作系统的核心部分,系统内核在发生异常错误时可以生成对应的内核崩溃报告,开发人员可以根据内核崩溃报告中的调用栈信息对该内核崩溃报告进行分类,进而对相应的内核错误进行分析、定位和修复。
3.在相关技术中,通常采用字符串匹配或统计特征的方法对调用栈信息进行分析以确认崩溃报告的类型,然而,以上方法无法有效利用调用栈信息间的高阶相关性,难以挖掘调用栈函数间的语义关联性与调用函数间的序列关系,制约崩溃报告分类效果,进而影响了用户排查内核错误的效率。


技术实现要素:

4.有鉴于此,本说明书提供一种内核崩溃报告的分类方法及装置,以解决相关技术中存在的不足。
5.具体地,本说明书是通过如下技术方案实现的:
6.根据本说明书实施例的第一方面,提供了一种内核崩溃报告的分类方法,所述方法包括:
7.获取内核崩溃报告,并解析得到所述内核崩溃报告包含的调用栈信息;
8.确定所述调用栈信息对应的目标特征向量;
9.将所述目标特征向量输入预先训练生成的内核崩溃报告分类模型,并根据所述内核崩溃报告分类模型输出的分类结果确定所述内核崩溃报告的类型。
10.根据本说明书实施例的第二方面,提供了一种内核崩溃报告的分类装置,所述装置包括:
11.调用栈信息获取单元,用于获取内核崩溃报告,并解析得到所述内核崩溃报告包含的调用栈信息;
12.目标特征向量确定单元,用于确定所述调用栈信息对应的目标特征向量;
13.内核崩溃报告分类单元,用于将所述目标特征向量输入预先训练生成的内核崩溃报告分类模型,并根据所述内核崩溃报告分类模型输出的分类结果确定所述内核崩溃报告的类型。
14.根据本说明书实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法的步骤。
15.根据本说明书实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法的步骤。
16.在本说明书所提供的技术方案中,通过引入神经网络技术,使得内核崩溃报告中的调用栈信息能够以特征向量的形式输入预先训练生成的内核崩溃报告分类模型,并基于数据驱动的方法得到对应的分类结果,从而提高了报告分类的效果以及用户对于内核错误的排查效率。
17.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
18.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
19.图1是本说明书一示例性实施例示出的一种内核崩溃报告的分类系统的架构示意图;
20.图2是本说明书一示例性实施例示出的一种内核崩溃报告的分类方法的流程示意图;
21.图3是本说明书一示例性实施例示出的另一种内核崩溃报告的分类方法的流程示意图;
22.图4是本说明书一示例性实施例示出的一种电子设备的示意结构图;
23.图5是本说明书一示例性实施例示出的一种内核崩溃报告的分类装置的结构示意图。
具体实施方式
24.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
25.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
26.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
27.图1是本说明书一示例性实施例示出的一种内核崩溃报告的分类系统的架构示意图。如图1所示,可以包括系统内核11以及内核崩溃报告分类模型12。
28.系统内核11是为众多应用程序提供对电子设备的安全访问的一部分软件。在上述
系统运行过程中,系统内核11在自身发送异常时,可以生成对应的内核崩溃报告。且可以将该内核崩溃报告发送至内核崩溃报告分类模型12所在的电子设备。
29.内核崩溃报告分类模型12为支持神经网络的数据分类模型,在上述系统运行过程中,内核崩溃报告分类模型12接收来自系统内核11的内核崩溃报告后,可以解析并得到内核崩溃报告中包含的调用栈信息,然后将该调用栈信息对应的特征向量输入内核崩溃报告分类模型,以使得用户可以根据该内核崩溃报告分类模型的输出的分类结果确定上述内核崩溃报告的类型,进而执行针对性的维护操作。
30.其中,系统内核11以及内核崩溃报告的分类模型12均可以设置于同一电子设备,或者二者分别设置于不同的电子设备中。当上述电子设备为网络设备时,上述电子设备可以为包含一独立主机的物理服务器,又或者可以为主机集群承载的虚拟服务器。当上述电子设备为用户使用的本地设备时,用户可以使用诸如下述类型的电子设备:手机、平板设备、笔记本电脑、掌上电脑(pdas,personal digital assistants)、可穿戴设备(如智能眼镜、智能手表等),本说明书的一个或多个实施例并不对此进行限制。
31.此外,当系统内核11以及内核崩溃报告分类模型12所在电子设备不同时,各电子设备之间进行的连接方式,可以包括多种类型的有线或无线连接,本说明书并不对此进行限制。
32.下面结合图2所示实施例对本说明书的技术方案进行阐述。图2是本说明书一示例性实施例示出的一种内核崩溃报告的分类方法的流程示意图,如图2所示,该方法可以包括以下步骤:
33.s201,获取内核崩溃报告,并解析得到所述内核崩溃报告包含的调用栈信息。
34.在系统内核发生异常并产生对应的内核崩溃报告时,可以从内核崩溃报告中解析得到调用栈信息部分。除了上述调用栈信息外,不同的系统内核生成的内核崩溃报告还可以根据实际需求包含额外的信息。以linux系统为例:其系统内核发生异常所产生的内核崩溃报告中可以包含崩溃描述、机器环境信息和调用栈信息,本说明书中并不对此进行限制。
35.同时,本说明书并不对上述内核崩溃报告的解释方式进行限制,可以根据与该系统内核对应的报告格式、规范或人为定义的特征信息从内核崩溃报告中解析出调用栈信息部分。还是以上述linux系统为例:可以将“warning”作为上述崩溃描述的关键词,以表示与该关键词有关的报告内容为崩溃描述。类似的,可以将“moudules”、“cpu”以及“hardware”等作为上述机器环境信息的关键词,以表示与该关键词有关的报告内容为机器环境信息。还可以将“call trace”作为的调用栈信息的关键词,以表示与该关键词有关的报告内容为调用栈信息。所以根据调用栈信息的关键词可以快速解析并获取内核崩溃报告中的调用栈信息。
36.s202,确定所述调用栈信息对应的目标特征向量。
37.获取上述调用栈信息后,为进一步判断上述内核崩溃报告的类型,可以将其转换为对应的目标特征向量,并输入下文的内核崩溃分类模型进行检测。
38.上述调用栈信息包含描述系统内核的应用程序发生异常时的数据情况,其中,上述数据情况可以为相关方法的调用信息,以帮助用户发现内核错误发生的过程和原因。
39.在一实施例中,在上述调用栈信息为上述内核崩溃报告对应的应用程序在发生异常时涉及的方法调用列表的情况下,获取上述方法调用列表中的调用栈函数,并可以将上
述调用栈函数进行特征化,以得到上述目标特征向量。其中,上述调用栈函数可以为上述方法调用列表中的每行数据。同时,上述调用栈信息可以根据实际需求表现为日志数据、数据库表数据等格式,本说明书中并不对此进行限制。
40.上述调用栈函数可以包含有内容与其他调用栈函数类似的公共部分,以及涉及用户输入信息等独有内容的私有部分。
41.在一实施例中,可以对上述调用栈函数进行修剪,并保留上述调用栈函数的公共部分,并将上述调用栈函数的公共部分进行特征化,从而得到上述目标特征向量。在该实施例中,由于上述调用栈函数的私有部分对于下文中的内核崩溃报告分类模型得到准确的分类结果没有起到实际意义,甚至还有可能影响上述分类结果,所以对上述调用栈函数的修剪操作相对于对该调用栈函数进行预处理操作,即通过保留上述调用栈函数的公共部分的方式,减少后续特征化操作的数据量,提升特征化效率,同时还提升了上述分类结果的准确性。
42.本领域技术人员可以理解的是,上述公共部分可以为上述调用栈函数对应的函数名称,或者上述调用栈函数对应的函数名称与偏移量。其中,上述偏移量与上述系统内核的编译结果相关,可用于表征上述调用栈函数在内核代码中的位置偏移量。事实上,上述公共部分可以是任何能够用于区分对应内核崩溃报告类型的公共标识、数据,本说明书中并不对此进行限制。
43.根据上述公共部分所含内容的不同,可以执行区别化的特征化操作。
44.在一实施例中,当上述公共部分仅包含上述调用栈函数对应的函数名称时,可以将上述函数名称直接进行特征化,以得到获取上述目标特征向量。
45.在另一实施例中,当上述公共部分同时包含上述调用栈函数对应的函数名称与偏移量时,可以将上述函数名称进行特征化,以得到对应的特征向量,然后再将上述函数名称对应的特征向量与上述偏移量对应的特征向量进行拼接,以得到获取上述目标特征向量。相较于上一实施例的目标特征向量,本实施例的目标特征向量由于携带了对应调用栈函数的偏移量的特征向量,使得下文中的内核崩溃报告分类模型可以更快的确定上述目标特征向量对应的调用栈函数所在的位置,进而提升了区分内核崩溃报告类型的效率。
46.上述目标特征向量可以被预先存储,并在预先存储的特征向量与上述调用栈信息相匹配时被直接使用,以避免额外的特征化操作。
47.在一实施例中,可以将上述内核崩溃报告的调用栈信息与向量库中预先建立的调用栈信息与特征向量之间的映射关系进行匹配,并将匹配到的映射关系中的特征向量确定为上述目标特征向量。其中,上述调用栈信息与特征向量之间的映射关系是唯一确定,即一调用栈信息唯一对应一特征向量,当上述内核崩溃报告的调用栈信息与向量库中预先建立的调用栈信息与特征向量之间的映射关系存在匹配关系时,可以将该映射关系中的特征向量直接作为上述目标特征向量。此外,上述向量库可以通过文本、数据库等形式进行表征,本说明书中并不对此进行限制。
48.当上述匹配失败时,可以将未匹配成功的上述调用栈信息与上述目标特征向量进行存储。
49.在一实施例中,在匹配失败的情况下,可以对上述调用栈信息进行特征化以生成对应上述内核崩溃报告的目标特征向量,并将上述内核崩溃报告的调用栈信息与上述目标
特征向量之间的映射关系更新至上述向量库中。在该实施例中,虽然该内核崩溃报告的调用栈信息未匹配到向量库中预先建立的调用栈信息与特征向量之间的映射关系,但此次匹配失败后,与该内核崩溃报告的调用栈信息相同的其他调用栈信息在与上述映射关系进行匹配时,可以直接获取与该内核崩溃报告对应的特征向量,以作为上述其他调用栈信息对应的特征向量。从而实现了未匹配成功的上述内核崩溃报告的调用栈信息与上述目标特征向量在上述向量库中的复用。
50.例如前文所述,在针对所述调用栈信息进行特征化以获取目标特征向量时,可以采用诸如基于transformer的双向编码器表示技术摸(bidirectional encoder representations from transformers,bert)模型或word2vec(word to vector)等自然语言处理技术中的预训练模型,以提取上述调用栈信息中的语义特征,并将上述调用栈信息转化为调用栈信息矩阵。上述调用栈信息矩阵可作为上述目标特征向量输入至下文的内核崩溃报告分类模型中。
51.s203,将所述目标特征向量输入预先训练生成的内核崩溃报告分类模型,并根据所述内核崩溃报告分类模型输出的分类结果确定所述内核崩溃报告的类型。
52.确定上述目标特征向量后,可以将其输入至预先训练生成的上述内核崩溃报告分类模型,以得到对应上述内核崩溃报告的分类结果。上述内核崩溃报告分类模型可以为预先对训练样本进行训练而得到,该训练样本可以包括基于已知类型的内核崩溃报告所形成的特征向量,并且各条训练样本可以包含相应的类型标签,以用于标注各个特征向量所对应的内核崩溃报告的类型信息。其中,获取训练样本所含的上述特征向量的方式,可以参考本说明书中生成上述目标特征向量的方式,此处不再赘述。在训练过程中,可以将上述训练样本输入待训练的内核崩溃报告分类模型,以针对该模型进行训练与调优。举例而言,上述内核崩溃报告分类模型可以为类似于长短期记忆(long short-term memory,lstm)、使用/不使用注意力(attention)机制的双向长短期记忆力(bidirectional long short-term memory,bilstm)的深度学习模型等。本说明书中并不对此进行限制。
53.在一实施例中,上述内核崩溃报告分类模型可以为基于注意力机制的双向长短期记忆力网络模型结构,且该模型结构包含依次连接的双向长短期记忆力网络层、注意力层以及用于分类的全连接层。其中,上述双向长短期记忆力网络层可以用于将处理输入向量数据,同时,上述注意力层可以将模型的处理重点集中于可能揭示上述内核崩溃报告类型的向量数据。在该实施例中,上述内核崩溃报告分类模型可以利用目标特征向量所对应的调用栈信息的语义特征以及序列特征对崩溃报告进行分类处理。保证了输出结果的准确性。
54.通过上述实施例可知,本说明书中内核崩溃报告的分类方法,通过上述内核崩溃报告分类模型对诸如linux等系统的内核崩溃报告进行分类,实现了基于数据驱动的分类方法代替相关技术中采用字符串匹配的方法,进而提高了崩溃报告的分类效率。同时,相比较于相关技术中基于统计的特征提取方法,本说明书中的方案可以通过基于注意力机制的内核崩溃报告分类模型结构,同时考虑到了调用栈函数本身特征与调用栈函数间的序列特征,使得最终得到的分类结果更符合实际情况。
55.图3是本说明书一示例性实施例示出的另一种内核崩溃报告的分类方法的流程示意图。
56.如图3所示,该方法可以包括以下步骤:
57.s301,接收linux系统内核发送的内核崩溃报告,并解析得到该内核崩溃报告包含的调用栈信息。
58.在一实施例中,存在一linux系统的内核发生异常,同时生成内容为“59.warning:cpu:1pid:28102at kernel/module.c:1108module_put+0x57/0x70
60.modules linked in:dvb_usb-gp8psk(-)dvb_usb dvb_core nvidia_drm(po)nvidia_mod eset(po)snd-hda-codec-hdmi snd-hda-intel snd-hda-codec snd-hwdep snd-hda-core snd_pcm snd_timer snd soundcore nvidia(po)[last unloaded:rc_core]
[0061]
cpu:1pid:28102comm:rmmod tainted:pwc o 4.8.4-build.1#1
[0062]
hardware name:msi ms-7309/ms-7309,bios v1.12 02/23/200900000000 c12ba080 00000000 00000000 c103ed6a c1616014 00000001 00006 dc6c1615862 00000454 c109e8a7 c109e8a7 00000009 ffffffff 00000000 f13f6a10f5f5a600 c103ee33 00000009 00000000 00000 000 c109e8a7 f80ca4d0 c109f617
[0063]
call trace:
[0064]
[《c12ba080》]?dump_stack+0x44/0x64
[0065]
[《c103ed6a》]?-warn+0xfa/0x120
[0066]
[《c109e8a7》]?module_put+0x57/0x70
[0067]
[《c109e8a7》]?module_put|ox57/0x70
[0068]
[《c103ee33》]?warn_slowpath null+0x23/0x30
[0069]
[《c109e8a7》]?module-put|ox57/0x70[《f80ca4do》j?gp8psk-fe_set-frontend+0x460/0x460[dvb_usb-gp8psk]
[0070]
[《c109f617》]?symbol_put_addr+0x27/0x50[《f80bc9ca》]?dvb-usb-adapter-frontend-exit+0x3a/0x70[dvb-usb]
[0071]
[《f80bb3bf》]?dvb_usb_exit|0x2f/0xd0[dvb_usb]
[0072]
[《c13d03bc》]?usb_disable_endpoint+0x7c/0xb0[《f80bb48a》]?dvb-usb-device-exit+ox2a/0x50[dvb-usb]
[0073]
[《c13d2882》]?usb_unbind_interface+0x62/0x250
[0074]
[《c136b514》]?
‑‑
pm-runtime_idle+0x44/0x70
[0075]
[《c13620d8》]?
‑‑
device-release-driver+0x78/0x120
[0076]
[《c1362907》]?driver_detach+0x87/0x90
[0077]
[《c1361c48》]?bus_remove_driver|ox38/0x90
[0078]
[《c13d1c18》]?usb-deregister+0x58/0xb0
[0079]
[《c109fbbo》]?sys_delete_module+0x130/0x1f0
[0080]
[《c1055654》]?task-work_run+0x64/0x80
[0081]
[《c1000fa5》]?exit-to-usermode-loop 10x85/0x90
[0082]
[《c10013f0》]?do_fast_syscall_32+0x80/0x130
[0083]
[《c1549f43》]?sysenter-past_esp+0x40/0x6a”的内核崩溃报告,其中,通过解析该内核崩溃报告包含的调用栈信息,得到“call trace”中所包含的内容(即[《c12ba080》]?
dump_stack+0x44/0x64
……
[《c1549f43》]?sysenter-past_esp+0x40/0x6a)。
[0084]
s302,对进上述内核崩溃报告中的调用栈函数的函数名称与偏移量进行特征化,以得到对应的目标特征向量。
[0085]
在一实施例中,获取上述调用栈信息中各调用栈函数的函数名称与偏移量,以“[《c10013f0》]?do_fast_syscall_32+0x80/0x130”为例,其中,该调用栈函数的函数名称为“do_fast_syscall_32”,偏移量为“0x80/0x130”,那么通过bert模型分别获取二者的特征向量“[e1,.....,en]”以及“[ea,eb]”,并拼接可得目标特征向量“[e1,......,en,ea,eb]”。
[0086]
s303,将上述目标特征向量输入基于内核崩溃报告分类模型,并得到对应的分类结果。
[0087]
在一实施例中,可以将上述目标特征向量输入已训练完成的内核崩溃报告分类模型中,可以输出对应的类型标签作为上述分类结果。其中,对应上述目标特征向量的分类结果为“system系统调用错误”。
[0088]
s304,人工确认分类结果,以展开对应的维护操作。
[0089]
在一实施例中,相关的技术维护人员可以根据上述分类结果确定是调用系统的方法出现错误导致linux系统内核崩溃,从而快速定位问题所在位置,已进行对应问题排查与修复。
[0090]
图4是一示例性实施例中的一种电子设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成内核崩溃报告的分类装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0091]
与前述内核崩溃报告的分类方法的实施例相对应,本说明书还提供了内核崩溃报告的分类装置的实施例。
[0092]
请参考图5,图5是一示例性实施例示出的一种内核崩溃报告的分类装置的结构示意图。
[0093]
如图5所示,在软件实施方式中,该装置可以包括:
[0094]
调用栈信息获取单元501,用于获取内核崩溃报告,并解析得到所述内核崩溃报告包含的调用栈信息;
[0095]
目标特征向量确定单元502,用于确定所述调用栈信息对应的目标特征向量;
[0096]
内核崩溃报告分类单元503,用于将所述目标特征向量输入预先训练生成的内核崩溃报告分类模型,并根据所述内核崩溃报告分类模型输出的分类结果确定所述内核崩溃报告的类型。
[0097]
可选的,所述目标特征向量确定单元502具体用于:
[0098]
在所述调用栈信息为所述内核崩溃报告对应的应用程序在发生异常时涉及的方法调用列表的情况下,获取所述方法调用列表中的调用栈函数;
[0099]
将所述调用栈函数进行特征化,以得到所述目标特征向量。
[0100]
可选的,所述目标特征向量确定单元502具体用于:
[0101]
对所述调用栈函数进行修剪,并保留所述调用栈函数的公共部分;
[0102]
将所述调用栈函数的公共部分进行特征化,以得到所述目标特征向量。
[0103]
可选的,所述公共部分为所述调用栈函数对应的函数名称,或者所述调用栈函数对应的函数名称与偏移量。
[0104]
可选的,所述目标特征向量确定单元502具体用于:
[0105]
在所述公共部分包含所述调用栈函数对应的函数名称与偏移量的情况下,将所述函数名称进行特征化,以得到对应的特征向量;
[0106]
将所述函数名称对应的特征向量与所述偏移量进行拼接,以得到所述目标特征向量。
[0107]
可选的,所述装置还用于:
[0108]
向量库管理单元504,用于将所述内核崩溃报告的调用栈信息与向量库中预先建立的调用栈信息与特征向量之间的映射关系进行匹配,并将匹配到的映射关系中的特征向量确定为所述目标特征向量。
[0109]
可选的,所述内核崩溃报告分类模型为基于注意力机制的双向长短期记忆力网络模型结构,所述模型结构包含依次连接的双向长短期记忆力网络层、注意力层以及用于分类的全连接层。
[0110]
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0111]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0112]
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
[0113]
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如fpga(现场可编程门阵列)或asic(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
[0114]
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指
令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏操纵台、全球定位系统(gps)接收机、或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。
[0115]
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如eprom、eeprom和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及cd rom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
[0116]
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
[0117]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
[0118]
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
[0119]
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1