CN116680208B - 异常识别方法以及电子设备 - Google Patents
异常识别方法以及电子设备 Download PDFInfo
- Publication number
- CN116680208B CN116680208B CN202211626644.2A CN202211626644A CN116680208B CN 116680208 B CN116680208 B CN 116680208B CN 202211626644 A CN202211626644 A CN 202211626644A CN 116680208 B CN116680208 B CN 116680208B
- Authority
- CN
- China
- Prior art keywords
- instruction type
- type data
- address
- read
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000005856 abnormality Effects 0.000 title claims abstract description 17
- 230000015654 memory Effects 0.000 claims abstract description 191
- 230000002159 abnormal effect Effects 0.000 claims abstract description 39
- 230000007704 transition Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 23
- 230000004044 response Effects 0.000 abstract description 2
- 230000007246 mechanism Effects 0.000 description 22
- 238000004458 analytical method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 235000008694 Humulus lupulus Nutrition 0.000 description 8
- 238000010295 mobile communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000010485 coping Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及计算机技术领域,公开了一种异常识别方法以及电子设备,该方法包括:检测到操作***内核奔溃的异常类型为指令型异常;获取指令型异常所产生的地址;在地址为有效地址时,获取有效地址所对应的地址单元内存储的第一指令型数据;对应于第一指令型数据满足第一条件,从高速缓冲存储器中重新获取第二指令型数据;对应于第二指令型数据与第一指令型数据不同,确定发生高速缓冲存储器跳变。基于此,在确定异常的原因为高速缓冲存储器跳变,可采取对应的处理方式,从而避免电子设备发生重启。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种异常识别方法以及电子设备。
背景技术
高速缓冲存储器(Cache)是存在于主存(Double Data Rate,DDR)和处理器内核之间的一级存储器。当电子设备中的高速缓冲存储器中的数据发生跳变(即高速缓冲存储器跳变),高速缓冲存储器中存储的某个比特位上的数据由1跳变为0或者由0跳变为1,此时处理器使用发生高速缓冲存储器跳变的数据执行相关操作时,会导致电子设备出现故障,比如说重启。
例如,在用户使用手机中的应用软件程序进行社交活动的过程中,高速缓冲存储器中的数据会因为伽玛射线、处理器供电异常等原因发生跳变。若发生高速缓冲存储器跳变,则在手机应用软件程序运行时,手机的处理器从高速缓冲存储器中读写到的指令及数据不可用或者读写到的指令及数据会导致业务逻辑改变,以及导致操作***内核发生异常(例如,内核奔溃),而当操作***内核发生异常时,现有的处理方案一般会控制手机重启,如此,导致用户体验不佳。
发明内容
本申请实施例提供一种异常识别方法以及电子设备,解决了在操作***内核发生异常(例如,内核崩溃)时,由于无法识别导致内核崩溃的原因为发生高速缓冲存储器跳变,而导致手机重启的问题。
第一方面,本申请提供了一种异常识别方法,应用于电子设备,包括,
检测到操作***内核奔溃的异常类型为指令型异常;
获取指令型异常所产生的地址;
在地址为有效地址时,获取有效地址所对应的地址单元内存储的第一指令型数据;
对应于第一指令型数据满足第一条件,从高速缓冲存储器中重新获取第二指令型数据;
对应于第二指令型数据与第一指令型数据不同,确定发生高速缓冲存储器跳变。
可以理解的,在操作***内核发生异常时,操作***控制处理器接收异常,在确定出该异常类型为指令型异常的情况下(即导致异常的是一个指令型数据,根据Linux内核异常处理机制可直接得到当前的异常类型),此时就可以判断第一指令型数据是否满足第一条件,该第一条件对应于能够确定发生存在异常的指令型数据发生高速缓冲存储器跳变或者主存跳变的可能性较大的情况。当第一指令型数据满足了发生高速缓冲存储器跳变或者主存跳变的可能性较大的时候,就需要进一步确定是发生高速缓冲存储器跳变还是主存跳变。再从高速缓冲存储器重新读第二指令型数据,该第二指令型数据与第一指令型数据所对应的主存中的原始数据是相同的,比对第二指令型数据与第一指令型数据是否相同,由于第一指令型数据与第二指令型数据发生高速缓冲存储器跳变,并且跳变成相同的指令型数据概率太低,当第二指令型数据与第一指令型数据不同,则可以确认发生高速缓冲存储器跳变。可以理解的,此时处理器再使用第二指令型数据(新的指令型数据)运行,就可以使得电子设备恢复正常运行,从而减少未进行高速缓冲存储器跳变识别而采用Linux内核处理机制原先设置的对应于指令型异常所对应的处理操作而导致的重启问题。
在上述第一方面的一种可能实现中,第一条件,包括,
第一指令型数据属于未定义地址段或者第一指令型数据所对应的读写属性为只读。
可以理解的,当获取到一个异常的指令型数据所对应的读写属性为只读时,由于“只读”对应于不可被修改的特性,所以在不可修改但是又能够确定该指令型数据存在异常时,此时就可以确定出读取的指令型数据发生了跳变(即发生指令跳变),但是由于高速缓冲存储器中的数据的来源为主存,所以仅能推断出发生高速缓冲存储器跳变或者主存跳变。若获取到的指令型数据属于未定义地址段,即不属于任何地址段,由于在正常情况下一个指令型数据不可能不属于内核空间的任何一个地址段,所以,由于产生指令型数据属于未定义地址段的其他原因所对应的概率比较小(例如数据在UFS存储器中跳变,其中UFS存储器为主存中的所有数据的来源地方),所以,也可以进一步认为读取的指令型数据在高速缓冲存储器中发生跳变或者在主存中跳变。
在上述第一方面的一种可能实现中,确定第一指令型数据是否满足第一条件的方式包括,
将第一指令型数据与预设的只读属性的地址段组和预设的非只读属性的地址段组匹配;
对应于第一指令型数据属于只读属性的地址段组,确定第一指令型数据所对应的读写属性为只读,并确定第一指令型数据满足第一条件;
或者对应于第一指令型数据不属于只读属性的地址段组和不属于非只读属性的地址段组,确定第一指令型数据属于未定义地址段,并确定第一指令型数据满足第一条件。
可以理解的,可以将内核空间中的各地址段按照读写属性分组,从而通过遍历的方式将异常的指令型数据与读写属性确定的地址段匹配,从而根据匹配结果就可以知道指令型数据的读写属性了。
在上述第一方面的一种可能实现中,还包括,
对应于第一指令型数据属于非只读属性的地址段组,确定第一指令型数据所对应的读写属性为非只读,且确定第一指令型数据不满足第一条件。
在上述第一方面的一种可能实现中,还包括,对应于第二指令型数据与第一指令型数据相同,确定发生主存跳变。
可以理解的,由于可以确定该指令型数据发生了跳变,已经排除了高速缓冲存储器跳变,所以此时可以大概率确认该数据是在主存中发生跳变,即认为发生主存跳变,从而可以采取对应的主存跳变的应对机制,修复主存跳变,使得电子设备回复正常运行。
在上述第一方面的一种可能实现中,从高速缓冲存储器中重新获取第二指令型数据,包括,
将第一指令型数据暂存,并且
控制高速缓冲存储器擦除存储的第一指令型数据,并且控制高速缓冲存储器重新读取主存中的第三指令型数据得到第二指令型数据;
从高速缓冲存储器中读取第二指令型数据。
可以理解的,第一指令型数据是从高速缓冲存储器读取主存中的第三指令型数据得到的,此时再从高速缓冲存储器读取主存中的第三指令型数据得到第二指令型数据,再从高速缓冲存储器中读取第二指令型数据,就可以将第二指令型数据与第一指令型数据进行比较,进一步分析是在哪里产生跳变。
在上述第一方面的一种可能实现中,只读属性的地址段组包括modules、rodata、text地址段中的至少一种。
在上述第一方面的一种可能实现中,非只读属性的地址段组包括vmalloc、data、bss、vmemmap、init、memory、PCI I/O、fixed地址段中的至少一种。
在上述第一方面的一种可能实现中,获取指令型异常所产生的地址,包括,
从程序计数器中获取指令型异常所产生的地址。
第二方面,本申请提供了一种电子设备,包括:
一个或多个处理器;
一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得电子设备执行上述第一方面以及第一方面的各种可能实现中的任一种异常识别方法。
第三方面,本申请提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时使计算机执行上述第一方面以及第一方面的各种可能实现中的任一种异常识别方法。
附图说明
图1根据本申请的一些实施例,示出了一种用户使用手机100的场景示意图;
图2根据本申请的一些实施例,示出了一种处理器内核001通过高速缓冲存储器002高速获取主存003中的数据的示意图;
图3根据本申请的一些实施例,示出了一种识别高速缓冲存储器跳变的流程示意图;
图4根据本申请的一些实施例,示出了一种处理器内核与高速缓冲存储器的组合示意图;
图5根据本申请的一些实施例,示出了一种手机100的结构示意图。
具体实施方式
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
本申请的说明性实施例包括但不限于一种异常识别方法以及电子设备。
下面先对本申请中相关术语进行简单介绍。
内核崩溃(kernel panic):是指因为Linux内核发生致命异常,并无法再继续运行下去,通过重启进行重置恢复内核运行状态的行为,通常伴随着内核异常信息输出。
Linux内核异常处理机制:是Linux内核原生机制。例如,对于具有架构的处理器而言,此处的异常是指CPU的某些异常状态或者一些异常的***事件(可能来自外部,也可能来自内部),这些状态或者事件可以导致CPU去执行一些预先设定的、具有更高执行权限的软件,即异常处理程序。处理器通过执行异常处理程序可以进行异常的处理,从而让***平滑的运行。当处理器执行异常处理程序完毕之后,需要返回发生异常的现场。
异常向量表:指明了在异常发生时操作***应该跳转的地址。当一种异常发生的时候,ARM处理器会跳转到对应该异常的固定地址去执行异常处理程序,而这个固定的地址,就称之为异常向量。各个异常级别有对应的向量基地址寄存器(Vector Base AddressRegister,VBAR),并且VBAR寄存器保存了各个异常级别的异常向量表的基地址。该寄存器有三个,分别是VBAR_EL1,VBAR_EL2,VBAR_EL3。在本申请的一些实施例中,可以根据不同异常级别以及向量基准地址参照异常向量表做一个对应的偏移,跳转到对应的异常处理程序,执行对应的操作。
程序计数器(Program Counter,PC):是用来存储指向下一条指令的地址,也即将要执行的指令代码,由执行引擎读取下一条指令。
指令型异常:指令型异常,对于操作***而言通常都是“未定义指令异常”,至于异常真正的原因需要通过逻辑推导去识别,例如因为指令跳变等。
下面结合附图对本申请的技术方案进行说明。
图1根据本申请的一些实施例,示出了一种用户使用手机100的场景示意图。如图所示,用户在使用手机100的过程中,手机100突然发生多次重启,用户体验差。
可以理解的,在一些实施例中,在电子设备使用的过程中,处理器会优先对高速缓冲存储器中的数据读写,若发生高速缓冲存储器跳变,则很大概率下处理器读写到的指令及数据不可用或者读写到的指令及数据会导致业务逻辑改变,继而操作***内核异常(例如内核崩溃),从而使得电子设备无法正常运行,影响用户体验。
如图2所示,手机100的处理器内核001在运行过程中可以通过高速缓冲存储器002获取高速获取主存003中的数据。其中,高速缓冲存储器002会从主存003中读取数据。手机100的处理器内核001在运行过程中通过高速缓冲存储器002高速获取主存003中的数据的过程顺序为:处理器内核001首先会查看所需数据在高速缓冲存储器002中是否命中(即是否能够找到所需数据),如果没有命中,再查看所需数据在主存003中是否命中。如果手机100的处理器内核001从高速缓冲存储器002高速获取到的数据在高速缓冲存储器中发生跳变(即获取到的数据发生高速缓冲存储器跳变),处理器内核001很有可能读取到的指令及数据不可用或者读写到的指令及数据会导致业务逻辑改变,继而使得操作***内核异常(例如,内核崩溃)。
一些实施例中,应对操作***内核异常的方案为采用ARM架构的CPU,可以理解,ARM架构的CPU自身具有错误检查和纠正(Error Checking and Correcting,ECC)功能,能够识别出高速缓冲存储器跳变,并且对产生的高速缓冲存储器跳变进行修复。但是,虽然当前主流的处理器芯片,如的芯片多具备针对高速缓冲存储器跳变的ECC能力,但是仅能对高速缓冲存储器中的一个比特位的数据跳变进行识别修复,对2个比特位的数据跳变仅能做到识别,难以实现对更多的比特位的数据跳变进行识别及修复。
在另一些实施例中,应对操作***内核异常的方案为触发ARM架构定义的Linux内核异常处理机制以处理操作异常。例如,当操作***内核发生异常(例如,发生内核崩溃)后,Linux内核异常处理机制被触发,日志中会记录出现的异常情况,且处理器将根据Linux内核异常处理机制所对应的异常向量表进入预置的异常处理程序中,但是,异常处理程序所实现的方案一般不会对异常的原因进行识别,例如不会识别产生异常的原因是由于高速缓冲存储器跳变、主存跳变(即主存中的数据的比特位上的值发生跳变)、UNIX文件***(UNIX file system,UFS)存储器跳变、内存管理单元(Memory Management Unit,MMU)器件异常、软件逻辑代码异常、PC跑飞等。而是对操作***内核异常进行直接处理,使得处理异常的结果大多为Linux内核重启,即手机重启。而在用户使用电子设备时,若多次发生重启,将会导致用户体验不佳。
为解决上述问题,本申请提供一种方案,该方案是对Linux内核异常处理机制的补充。在操作***内核发生异常(例如,内核奔溃)时,操作***控制处理器接收异常,在确定出该异常类型为指令型异常的情况下(即导致异常的是一个指令型数据,根据Linux内核异常处理机制可直接得到当前的异常类型):
获取该指令型异常产生的地址,即获取PC存储的地址。并且判断此地址是否是一个有效地址,在为有效地址的情况下,获取该有效地址内存储的指令型数据。
当异常的指令型数据为一个未定义的指令型数据或者该指令型数据有效并且读写属性为只读时确定该指令型数据发生了指令跳变(即该指令型数据中的某个比特位上的数据发生了跳变),此时也可以确定该指令型数据发生高速缓冲存储器跳变或者主存跳变的可能性较大。
在确定出产生高速缓冲存储器跳变或者主存跳变的可能性较大的情况下,将该地址单元内的指令型数据暂存,控制高速缓冲存储器擦除原先异常的指令型数据(即从主存中获取的指令型数据),并且再控制高速缓冲存储器从主存中重新加载新的指令型数据,然后比对新加载的指令型数据与暂存的异常的指令型数据是否相同,如果不同,则确认发生了高速缓冲存储器跳变。
此时,处理器基于从高速缓冲存储器中读取重新加载后的指令型数据运行,以使电子设备恢复正常运行。
可以理解的,根据本申请提出的识别方法,可以确定异常的原因是否为高速缓冲存储器跳变,并根据异常的原因确定对应的处理方式,例如,如果确定出是产生了高速缓冲存储器跳变,由于通过控制高速缓冲存储器擦除该异常指令型数据,并且重新加载新的正确的指令型数据,此时处理器根据从高速缓冲存储器中读取正确的指令型数据运行,操作***内核恢复正常,使得电子设备可以恢复正常运行,即避免电子设备发生重启或者减少电子设备重启的次数,提升用户体验。
另外一方面,本申请实施例中,即使无法确定出产生了高速缓冲存储器跳变或者确定出没有产生高速缓冲存储器跳变,但是电子设备会产生对应于识别是否产生高速缓冲存储器跳变的具体分析日志,使得维测或者研发人员可以根据对应于该分析日志研究以及分析产生异常问题的原因,从而帮助维测或者研发人员解决电子设备运行异常问题。避免现有技术中由于异常场景记录不够详细,开发人员无法根据现有日志内容精确定位异常原因,例如,无法确认是否是由于高速缓冲存储器跳变或其他软件异常使得操作***内核发生异常,从而无法采取相对应的修复方法的问题。
可以理解,在指令型异常产生的地址为有效地址的情况下,可以获取该有效地址对应的地址单元内存储的指令型数据,根据该指令型数据所对应的内核空间中地址段的读写属性(例如,该地址段为只读、该地址段为可读可写),确定出对应于产生高速缓冲存储器跳变或者主存跳变(即主存中的数据的比特位上的值发生跳变)的可能性。
可以理解的,操作***内核空间的虚拟地址是连续的,每段地址空间范围对应有具体的地址段,例如内核空间中地址范围0xffffffe0b88a0000-0xffffffe0b913ca00对应的地址段名称为data段等。并且,内核空间中的各地址段都有对应的读写属性,包括只读、可读可写等。所以,可以将地址段按照读写属性分组,当得到一个指令型数据后,就可以判断该指令型数据所处的地址段组,例如,按照只读以及非只读(其他读写属性)划分,则地址段组就包括只读属性的地址段组以及非只读属性的地址段组,当确定出指令型数据所属的地址段组,就可以确定出该指令型数据的读写属性。
可以理解的,内核空间的地址范围的基数在每一次开机后都不是固定的(如果地址固定太不安全,黑客可以随意的攻击***),操作***内核通过地址随机化的特性将每一次开机后地址范围都做一个偏移。下述表1示出了某一次开机后的地址范围示例。
例如,下述表1示出了一种内核空间各地址段所对应的数据范围以及读写属性。如表1所示,对应于读写属性为只读的地址段包括:modules、rodata、text;对应于读写属性为可读可写的地址段包括:vmalloc、data、bss、vmemmap、init、memory、PCI I/O、fixed。
可以理解的,如果获取的指令型数据有所属的地址段,则认为是一个有效的指令型数据,如果获取的指令型数据没有所属的地址段,即该指令型数据不在任何规定的地址段范围内(或者不属于任何地址段组),则可以认为是无效的指令型数据,属于未定义地址段。
可以理解的,在本申请中可以通过内核函数判断指令型数据所对应的地址段的范围以及属性。
可以理解的,当获取到一个异常的指令型数据所对应的读写属性为只读时,由于“只读”对应于不可被修改的特性,所以在不可修改但是又能够确定该指令型数据存在异常时,此时就可以确定出读取的指令型数据发生了跳变(即发生指令跳变),但是由于高速缓冲存储器中的数据的来源为主存,所以仅能推断出发生高速缓冲存储器跳变或者主存跳变,此时无法确定从高速缓冲存储器中读取的异常数据是否是在高速缓冲存储器中发生跳变,所以需进一步确认是否产生高速缓冲存储器跳变。
可以理解的,当获取到的指令型数据所对应的读写属性不为只读,即为其他读写属性,由于分析复杂,暂不做后续操作。例如,所对应的读写属性为可读可写,由于异常的指令型数据是可读可写的,此时无法确定该指令型数据是发生了指令跳变,还是该指令型数据被设置的程序所改写的,所以此时无法直接确定出该指令型数据异常的原因是由跳变产生的,后续分析较为复杂,暂时不做任何处理。
可以理解的,若获取到的指令型数据属于未定义地址段,即不属于任何地址段,由于在正常情况下一个指令型数据不可能不属于内核空间的任何一个地址段,所以,由于产生指令型数据属于未定义地址段的其他原因所对应的概率比较小(例如数据在UFS存储器中跳变,其中UFS存储器为主存中的所有数据的来源地方),所以,也可以进一步认为读取的指令型数据在高速缓冲存储器中发生跳变或者在主存中跳变,然后再进一步确认是否产生高速缓冲存储器跳变。
可以理解的,本申请所提出的技术方案不需要增加额外的硬件资源,适用于各种芯片,不仅局限于中高端芯片,在低端芯片上也可以使用。
表1
地址段名称 | 地址单元内的数据范围 | 地址段读写属性 |
modules | 0xffffffc008000000-0xffffffc010000000 | 只读 |
vmalloc | 0xffffffc010000000-0xfffffffebfff0000 | 可读可写 |
text | 0xffffffe0b5e00000-0xffffffe0b7a30000 | 只读 |
rodata | 0xffffffe0b7a30000-0xffffffe0b85a0000 | 只读 |
init | 0xffffffe0b85a0000-0xffffffe0b88a0000 | 可读可写 |
data | 0xffffffe0b88a0000-0xffffffe0b913ca00 | 可读可写 |
bss | 0xffffffe0b913d000-0xffffffe0b9412464 | 可读可写 |
fixed | 0xfffffffefe5fb000-0xfffffffefea00000 | 可读可写 |
PCI I/O | 0xfffffffefec00000-0xfffffffeffc00000 | 可读可写 |
vmemmap | 0xfffffffeffe00000-0xffffffffffe00000 | 可读可写 |
memory | 0xffffff8000000000-0xffffff8200000000 | 可读可写 |
可以理解的,本申请除了保护上述提及的Linux操作***,还保护安卓TM操作***、鸿蒙TM操作***、UnixTM操作***等,只要是***内核涉及到Linux***的操作***都在本申请的保护范围内。
可以理解的,本申请的技术方案除了适用于手机,还适用于其他电子设备,例如,可以是平板电脑、智慧屏、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等电子设备。可以理解的是,本申请实施例对电子设备的具体类型不作任何限制。
图3根据本申请的一些实施例,示出了一种识别高速缓冲存储器跳变的流程示意图。在操作***内核异常(例如,发生内核崩溃)的情况下,触发了Linux内核异常处理机制后,才能进一步进行高速缓冲存储器跳变的识别。当检测到Linux内核发生异常(例如,内核崩溃),则需要确定出异常类型,在确定出异常类型为指令型异常的情况下,再获取发生异常的地址,在获取的地址为有效地址的情况下,根据有效地址存储单元内的指令型数据所对应的读写属性情况,分情况分析是否产生高速缓冲存储器跳变。具体步骤如下所示,
S301,在操作***内核异常下,进入Linux内核异常处理机制中的端侧识别。
可以理解的,Linux异常处理机制对应有端侧识别(即高速缓冲存储器跳变识别方法的入口)。
可以理解的,操作***内核异常是指那些会导致***崩溃的,要求触发操作***内核重启的异常。
在一些实施例中,操作***发生内核崩溃,此时Linux内核异常处理机制被触发,从而进入Linux内核异常处理机制中的端侧识别。
S302,对异常类型进行检测,检测到异常类型为指令型异常。
可以理解的,异常类型有很多,如果检测到异常类型为指令型异常,即导致异常的数据为指令型数据(即为指令),可以根据指令所对应的读写属性分析导致异常的原因。如果检测到的异常不是指令型异常,就不继续后续识别分析。
在一些实施例中,当异常被***以中断等方式捕获后,遵循Linux异常中断处理机制逻辑,各个异常级别的异常参照异常向量跳转到对应的处理逻辑中去,对于用于终止当前进程的函数abort,异常综合症寄存器寄存器(Exception Syndrome Register,ESR)保存了更详细的异常信息。ESR寄存器有三个,分别是ESR_EL1,ESR_EL2,ESR_EL3,各个异常级别的异常需要分别识别对应ESR寄存器的值,进而识别当前异常是否为指令型异常。
S303,根据程序计数器获取存储的指令型异常所产生的地址。
可以理解的,PC内存储有一个地址,该地址所指向的存储单元内存储有数据。当确定出当前的异常类型是指令型异常时,即可以判断出该地址所指向的存储单元内存储的是异常的指令型数据,即为一个异常指令。所以,需要先获取异常指令所对应的地址,才能从地址对应的存储单元内得到指令型数据。
在一些实施例中,PC内存储的地址,即PC指针指向的地址。该PC指针指向的地址就是产生指令型异常的地址。
S304,判断获取的地址是否有效。
可以理解的,如果当获取的出现异常的地址为有效地址,即该地址是一个有效的数据,此时就可以根据该地址进行进一步分析产生异常的具体原因;如果该地址是无效地址,即该地址是一个无效的数据,此时就无法进行后续进一步的分析。
在一些实施例中,判断找到的地址是否有效,如果是有效地址,则进入S306,进行后续分析;如果是无效地址,则进入S305,则不进行后续分析。
S305,不继续后续分析识别。
在一些实施例中,此时可停止识别是否产生高速缓冲存储器跳变的端侧方案,然后进行Linux内核处理机制原先设置的对应于指令型异常所对应的处理操作。
S306,根据有效的地址得到该地址单元内的指令型数据。
可以理解的,每个有效地址对应有一个存储单元用于存储数据,由于S302中已确定异常类型为指令型异常,所以可以确定该有效地址的存储单元存储有指令型数据。
在一些实施例中,获取有效地址所对应的地址单元内的指令型数据。
S307,将指令型数据与基于读写属性进行分组的地址段进行匹配,确定目标读写属性。
可以理解的,地址单元内存储的数据会所属于内核空间中的一个地址段,如上表1所述的某一次开机后内核地址空间的分布。虽然出于安全考虑增加了内核空间实现地址随机化,但是仍然可以合法的通过内核函数获取指令型数据所对应的地址段类型。例如,若指令型数据为0xffffffe0b913d001,如表1所示,该指令型数据就对应于bss地址段。
可以理解的,该指令型数据也可以为不属于任何地址段对应的数据范围,即为未定义地址段,例如,获取的指令型数据不为表1中任何地址段所对应的数据范围,在这种情况下,认为发生了数据跳变。
由于每个地址段都有对应的读写属性,并且根据各地址段所对应的读写属性是只读还是其他读写情况进一步识别高速缓冲存储器跳变。所以在具体匹配时,可以关注该指令型数据是否是属于只读属性的地址段的范围内、其他读写情况(即非只读)的地址段的范围以及还是未定义地址段。所以,可以将各地址段按照读写属性事先分类/组,将只读属性的地址段分为一类/组,将其他读写属性(即非只读属性)的地址段分为一类/组。
当获取了指令型数据后,可以将指令型数据与基于读写属性进行分组的地址段进行匹配,确定目标读写属性。当获取到的指令型数据属于只读属性的地址段组时,就可以确定该指令型数据的读写属性为只读(即目标读写属性为只读);当获取到的指令型数据属于其他属性的地址段组时,就可以确定该指令型数据的读写属性为其他读写属性(即目标读写属性不为只读属性);当获取到的指令型数据不属于任何地址段组时,则可以确定该指令型数据为未定义地址段。
在一些实施例中,将指令型数据与基于读写属性进行分组的地址段进行匹配,当该指令型数据为不属于任何地址段对应的数据范围(即为未定义地址段),则进入S308,根据该指令型数据为未定义地址段进一步分析;当该指令型数据所处只读属性的地址段组的范围内,即属于modules、text、rodata地址段内,确定目标读写属性为只读,则进入S309,根据该指令型数据所对应的只读属性进一步分析;当该指令型数据所处其他读写属性的地址段组的范围内,即属于vmalloc、data、bss、vmemmap、init、memory、PCI I/O、fixed地址段内,确定目标读写属性不为只读,为其他读写属性,例如可读可写,则进入S310,不继续后续分析。
S308,根据该指令型数据为未定义地址段,确定出该指令型数据发生了指令跳变(即怀疑产生高速缓冲存储器跳变或者主存跳变)。
可以理解的,在确定出的地址段为未定义地址段时,由于在正常使用时,指令型数据不可能不属于内核空间的任何一个地址段,所以,可以确定该指令型数据发生了跳变(即发生指令跳变)。由于产生未定义地址段的其他原因的概率比较小(例如数据在文件***存储器(UFS存储器)中跳变),所以,也可以进一步认为读取的指令型数据在高速缓冲存储器中发生跳变或者在主存跳变,然后再进一步确认是发生高速缓冲存储器跳变还是主存跳变。
S309,根据目标读写属性为只读属性,确定出该指令型数据发生了指令跳变(即产生高速缓冲存储器跳变或者主存跳变)。
可以理解的,获取到一个异常的指令型数据所对应的读写属性为只读,由于“只读”对应于不可被修改的特性,所以在不可修改但是又能够确定该指令型数据存在异常时,所以此时可以确定该指令型数据不是所期望的指令型数据,虽然该指令型数据能够在内核空间中找到所对应的地址段类型,即该指令型数据的数据范围虽然合乎要求,但是该指令的逻辑上会存在问题,从而确定该指令型数据发生了指令跳变(即产生高速缓冲存储器跳变或者主存跳变)。
例如,所期望的一个指令型数据对应的可读可写的地址段,经过跳变后,指令型数据对应只读的地址段,此时就不具备可读可写的功能了。
可以理解的,一个指令型数据中会有几个比特位对应为该指令的逻辑运算功能,有几个比特位对应有逻辑运算的具体操作数。
例如,所期望的一个指令型数据的逻辑运算所对应的操作数跳变为其他不合逻辑的操作数。比如说所期望的一个指令型数据是进行的逻辑“加”运算,并且其中一个操作数为直接数,另一个操作数为存储有操作数的寄存器,但是“直接数”所对应的比特位发生跳变,使得“直接数”变为寄存器,当从跳变后的寄存器中读取数据时,此时就无法从该寄存器中读取到所对应的数据,从而出现异常。
又例如,所期望的一个指令型数据的逻辑运算功能跳变为其他不合逻辑的逻辑运算功能。比如说期望的逻辑运算功能为“减”逻辑,结果跳变后为“位与”逻辑,将原先“减逻辑”的操作数进行位与运算就会出错。
S310,根据目标读写属性为其他读写属性,确定不继续后续分析识别。
可以理解的,若在确定出的地址段对应的读写属性为其他读写属性(即非只读属性),例如可读可写时,由于所属地址段的指令型数据是可读可写的,此时无法确定该指令型数据是发生了指令跳变,还是该指令型数据被设置的程序所改写的,所以此时无法直接确定出该指令型数据异常的原因是由跳变产生的,后续分析较为复杂,暂时不继续后续分析识别。
在一些实施例中,此时可停止识别是否产生高速缓冲存储器跳变的端侧方案,然后进行Linux内核处理机制原先设置的对应于指令型异常所对应的处理操作。
S311,将异常的指令型数据暂存,并且控制高速缓冲存储器擦除存储的指令型数据以及重新从主存中加载该指令型数据。
可以理解的,由于高速缓冲存储器中的数据来源于主存中的数据,所以无法确认指令型数据是在高速缓冲存储器中发生跳变还是在主存中发生跳变。此时,可以比对发生异常的指令型数据与主存中的原始的指令型数据是否相同来确认指令型数据是在高速缓冲存储器中发生跳变还是在主存中发生跳变。
在一些实施例中,将异常的指令型数据暂存,比如说暂存在一个局部变量中,然后控制高速缓冲存储器擦除掉原先加载的异常的指令型数据,重新从主存中加载该指令型数据,此时高速缓冲存储器中只有新加载的指令型数据,即新的指令型数据。
S312,从高速缓冲存储器中获取新加载的指令型数据,判断新的指令型数据与暂存的旧的指令型数据是否相同。
可以理解的,由于已将旧的异常的指令型数据暂存,此时只需从高速缓冲存储器中读取新加载的指令型数据,即可得到新的指令型数据,继而可以比较两个数据是否相同。
在一些实施例中,比对新的指令型数据与暂存的旧的指令型数据是否相同,当新的指令型数据与旧的指令型数据相同时,由于两次跳变成相同的指令型数据概率太低,则可以确认未发生高速缓冲存储器跳变,进入S314,怀疑主存跳变;当新的指令型数据与旧的指令型数据不同时,由于新的指令型数据与旧的指令型数据所对应于主存中的数据是相同的,所以在正常情况下,从高速缓冲存储器中两次读取的数据应该相同,但是此时不同,则可以确认发生高速缓冲存储器跳变,进入S313。
S313,确认为发生高速缓冲存储器跳变,并且使用新的指令型数据继续运行。
可以理解的,旧的指令型数据是从主存中加载的,并且新的指令型数据与旧的指令型数据在主存中所对应的原始数据是相同的,此时新的指令型数据与旧的指令型数据不同,则可以确定原先高速缓冲存储器从主存中加载的旧的指令型数据发生了跳变。此时处理器再使用新的指令型数据运行,就可以使得电子设备恢复正常运行,从而减少未进行高速缓冲存储器跳变识别而采用Linux内核处理机制原先设置的对应于指令型异常所对应的处理操作而导致的重启问题。
S314,怀疑主存跳变。
可以理解的,由于可以确定该指令型数据发生了跳变,但是由于原先异常的指令型数据与重新从主存中加载的新的指令型数据相同,即已经排除了高速缓冲存储器跳变,所以此时可以大概率确认该数据是在主存中发生跳变,即认为发生主存跳变。
可以理解,上述步骤S301至步骤S314的执行顺序只是一种示意,在另一些实施例中,也可以采用其他执行顺序,还可以拆分或合并部分步骤,在此不做限定。
图4根据本申请的实施例,示出了一种处理器中处理器内核与高速缓冲存储器组合方式的结构示意图。可以理解的,处理器内核是处理器的核心,处理器可以包括多个/种处理器内核,并且各种处理器核心都具有固定的逻辑结构。比如说,处理器可以包括一级高速缓冲存储器(First-Level Cache,L1 Cache)、二级高速缓冲存储器(Second LevelCache,L2 Cache)、执行单元、指令级单元和总线接口等逻辑单元,并且各逻辑单元都会有科学的布局。
如图4所示,该处理器包括8个处理器内核,处理器内核Core0、处理器内核Core1、处理器内核Core2、处理器内核Core3、处理器内核Core4、处理器内核Core5、处理器内核Core6、处理器内核Core7。其中,每个处理器内核都包括一级高速缓冲存储器和二级高速缓冲存储器,并且,每个一级高速缓冲存储器包括独立的两部分:指令高速缓冲存储器和数据高速缓冲存储器。如图4所示,处理器内核Core0包括一个一级高速缓冲存储器L1和一个二级高速缓冲存储器L2,其中,一级高速缓冲存储器L1包括指令高速缓冲存储器L1 I、数据高速缓冲存储器L1 D;......;处理器内核Core7包括一个一级高速缓冲存储器L1和一个二级高速缓冲存储器L2,其中,一级高速缓冲存储器L1包括指令高速缓冲存储器L1 I、数据高速缓冲存储器L1 D。
该处理器还包括一个三级高速缓冲存储器(Third Level Cache,L3 Cache)。如图中所示,8个处理器内核可共用一个三级高速缓冲存储器L3。
处理器内核从高速缓冲存储器中获取所需数据的顺序是,先查看所需数据在一级高速缓冲存储器中是否命中,如果在一级高速缓冲存储器中未命中,再查看所需数据在二级高速缓冲存储器中是否命中,如果在二级高速缓冲存储器中未命中,然后查看所需数据在三级高速缓冲存储器中是否命中,如果在三级高速缓冲存储器中未命中,再从主存中(图中未示出)获取。
可以理解的,在操作***内核异常时,通过上述图3所述的高速缓冲存储器识别方式定位出是由于数据是在高速缓冲存储器(即图中的L1、L2或者L3)中发生跳变,此时控制高速缓冲存储器擦除数据并且重新从主存中加载新的数据后,再读取高速缓冲存储器中的没有问题的数据,就可以正常运行了。
可以理解的,上述图4仅仅是一种关于处理器内核和高速缓冲存储器之间组合的一种示意图,在其他实施例中,还可以包括更多的组合,比如说三级高速缓冲存储器也位于处理器内核上、各内核之间共用多个二级高速缓冲存储器等等,具体的组合方式在此不再赘述。
在实际使用的过程中,本申请的高速缓冲存储器识别的方案可以运用在包括高速缓冲存储器的各种ARM架构包含高速缓冲存储器结构的处理器上,例如 系列等处理器上。
图5根据本申请的实施例,示出了一种手机100的硬件结构示意图。在图5中,相似的部件具有同样的附图标记。如图5所示,手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP(Digital Signal Processor)、微处理器MCU(Micro-programmed Control Unit)、AI(Artificial Intelligence,人工智能)处理器或可编程逻辑器件FPGA(FieldProgrammable Gate Array)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。并且,处理器可以包括如图4所示的结构,以及执行如图3所示的识别方法。
存储器可用于存储数据、软件程序以及模块,可以是易失性存储器(VolatileMemory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(FlashMemory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,或者也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡。
电源模块140可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器110。
移动通信模块150可以包括但不限于天线、功率放大器、滤波器、低噪声放大器(Low Noise Amplify,LNA)等。移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以由天线接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以包括天线,并经由天线实现对电磁波的收发。无线通信模块160可以提供应用在手机100上的包括无线局域网(Wireless Local Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星***(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等无线通信的解决方案。手机100可以通过无线通信技术与网络以及其他设备进行通信。
在一些实施例中,手机100的移动通信模块150和无线通信模块160也可以位于同一模块中。
摄像头193用于捕获静态图像或视频。景物通过镜头生成的光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP(Image SignalProcessor,图像信号处理器)转换成数字图像信号。手机100可以通过ISP,摄像头193,视频编解码器,GPU(Graphic Processing Unit,图形处理器),显示屏以及应用处理器等实现拍摄功能。
显示屏包括显示面板。显示面板可以采用液晶显示屏(Liquid Crystal Display,LCD),有机发光二极管(Organic Light-emitting Diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(Active-matrix Organic Light-emitting Diode的,AMOLED),柔性发光二极管(Flex Light-emitting Diode,FLED),Mini LED,Micro LED,Micro OLED,量子点发光二极管(Quantum Dot Light-emitting Diodes,QLED)等。
音频模块170可以将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
接口模块包括外部存储器接口、通用串行总线(Universal Serial Bus,USB)接口及用户标识模块(Subscriber Identification Module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口与处理器110通信,实现数据存储功能。通用串行总线接口用于手机100和其他手机进行通信。用户标识模块卡接口用于与安装至手机100的SIM卡进行通信,例如读取SIM卡中存储的电话号码,或将电话号码写入SIM卡中。
在一些实施例中,手机100还包括按键、马达以及指示器等。其中,按键可以包括音量键、开/关机键等。马达用于使手机100产生振动效果,例如在用户的手机100收到新的IMAPP消息时产生振动,以提示用户查看消息。指示器可以包括激光指示器、射频指示器、LED指示器等。
可以理解的是,本发明实施例示意的结构并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理***包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何***。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理***通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (10)
1.一种异常识别方法,应用于电子设备,其特征在于,包括,
检测到操作***内核奔溃的异常类型为指令型异常;
获取所述指令型异常所产生的地址;
在所述地址为有效地址时,获取所述有效地址所对应的地址单元内存储的第一指令型数据;
对应于所述第一指令型数据满足第一条件,从高速缓冲存储器中重新获取第二指令型数据,其中,所述第二指令型数据与所述第一指令型数据对应的主存地址相同;
对应于所述第二指令型数据与所述第一指令型数据不同,确定发生高速缓冲存储器跳变;
并且,所述第一条件,包括,
所述第一指令型数据属于未定义地址段或者所述第一指令型数据所对应的读写属性为只读。
2.根据权利要求1所述的方法,其特征在于,确定所述第一指令型数据是否满足第一条件的方式包括,
将所述第一指令型数据与预设的只读属性的地址段组和预设的非只读属性的地址段组匹配;
对应于所述第一指令型数据属于所述只读属性的地址段组,确定所述第一指令型数据所对应的读写属性为只读,并确定所述第一指令型数据满足所述第一条件;
或者对应于所述第一指令型数据不属于所述只读属性的地址段组和不属于所述非只读属性的地址段组,确定所述第一指令型数据属于所述未定义地址段,并确定所述第一指令型数据满足所述第一条件。
3.根据权利要求2所述的方法,其特征在于,还包括,
对应于所述第一指令型数据属于所述非只读属性的地址段组,确定所述第一指令型数据所对应的读写属性为非只读,且确定所述第一指令型数据不满足所述第一条件。
4.根据权利要求1所述的方法,其特征在于,还包括,对应于所述第二指令型数据与所述第一指令型数据相同,确定发生主存跳变。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述从高速缓冲存储器中重新获取第二指令型数据,包括,
将所述第一指令型数据暂存,并且
控制所述高速缓冲存储器擦除存储的所述第一指令型数据,并且控制所述高速缓冲存储器重新读取主存中的第三指令型数据得到所述第二指令型数据,其中,所述第三指令型数据与所述第一指令型数据对应的主存地址也相同;
从所述高速缓冲存储器中读取所述第二指令型数据。
6.根据权利要求2或3所述的方法,其特征在于,所述只读属性的地址段组包括modules、rodata、text地址段中的至少一种。
7.根据权利要求6所述的方法,其特征在于,所述非只读属性的地址段组包括vmalloc、data、bss、vmemmap、init、memory、PCI I/O、fixed地址段中的至少一种。
8.根据权利要求1所述的方法,其特征在于,所述获取所述指令型异常所产生的地址,包括,
从程序计数器中获取所述指令型异常所产生的地址。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器;所述一个或多个存储器存储有一个或多个程序,当所述一个或者多个程序被所述一个或多个处理器执行时,使得所述电子设备执行权利要求1-8中任一项所述异常识别方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有指令,所述指令在计算机上执行时使所述计算机执行权利要求1-8中任一项所述异常识别方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211626644.2A CN116680208B (zh) | 2022-12-16 | 2022-12-16 | 异常识别方法以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211626644.2A CN116680208B (zh) | 2022-12-16 | 2022-12-16 | 异常识别方法以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116680208A CN116680208A (zh) | 2023-09-01 |
CN116680208B true CN116680208B (zh) | 2024-05-28 |
Family
ID=87777607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211626644.2A Active CN116680208B (zh) | 2022-12-16 | 2022-12-16 | 异常识别方法以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116680208B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373450A (zh) * | 2007-08-21 | 2009-02-25 | 联想(北京)有限公司 | 处理cpu异常的方法及*** |
CN105988905A (zh) * | 2015-02-12 | 2016-10-05 | 中兴通讯股份有限公司 | 异常处理方法及装置 |
CN106571954A (zh) * | 2016-10-24 | 2017-04-19 | 上海斐讯数据通信技术有限公司 | 一种ap设备的异常重启原因检测方法及装置 |
CN109416672A (zh) * | 2016-07-02 | 2019-03-01 | 英特尔公司 | 不对有缺陷数据采取异常的从存储器读取指令、处理器、方法和*** |
CN110032867A (zh) * | 2019-03-26 | 2019-07-19 | 中国人民解放军国防科技大学 | 一种主动切断隐蔽通道应对缓存侧信道攻击的方法及*** |
CN113467981A (zh) * | 2020-03-31 | 2021-10-01 | 华为技术有限公司 | 异常处理的方法和装置 |
CN113495799A (zh) * | 2020-03-20 | 2021-10-12 | 华为技术有限公司 | 一种内存故障处理方法及相关设备 |
CN115292077A (zh) * | 2022-07-13 | 2022-11-04 | 深圳市道通智能汽车有限公司 | 内核异常处理方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2535514B (en) * | 2015-02-19 | 2021-09-22 | Advanced Risc Mach Ltd | Processor exception handling |
-
2022
- 2022-12-16 CN CN202211626644.2A patent/CN116680208B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373450A (zh) * | 2007-08-21 | 2009-02-25 | 联想(北京)有限公司 | 处理cpu异常的方法及*** |
CN105988905A (zh) * | 2015-02-12 | 2016-10-05 | 中兴通讯股份有限公司 | 异常处理方法及装置 |
CN109416672A (zh) * | 2016-07-02 | 2019-03-01 | 英特尔公司 | 不对有缺陷数据采取异常的从存储器读取指令、处理器、方法和*** |
CN106571954A (zh) * | 2016-10-24 | 2017-04-19 | 上海斐讯数据通信技术有限公司 | 一种ap设备的异常重启原因检测方法及装置 |
CN110032867A (zh) * | 2019-03-26 | 2019-07-19 | 中国人民解放军国防科技大学 | 一种主动切断隐蔽通道应对缓存侧信道攻击的方法及*** |
CN113495799A (zh) * | 2020-03-20 | 2021-10-12 | 华为技术有限公司 | 一种内存故障处理方法及相关设备 |
CN113467981A (zh) * | 2020-03-31 | 2021-10-01 | 华为技术有限公司 | 异常处理的方法和装置 |
CN115292077A (zh) * | 2022-07-13 | 2022-11-04 | 深圳市道通智能汽车有限公司 | 内核异常处理方法及*** |
Non-Patent Citations (4)
Title |
---|
A Redundant Approach to Increase Reliability of Data Cache Memories;Silva Junior等;《2021 XLVII LATIN AMERICAN COMPUTING CONFERENCE (CLEI 2021)》;全文 * |
基于BCH算法的高速缓存纠检错方案研究;王珍珍等;《 微电子学与计算机》(第11期);全文 * |
排查服务器内存异常故障;刘进京;;网络安全和信息化(第12期);全文 * |
高速缓冲存储器的功能原理探讨;杨春岭;;河南农业(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116680208A (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8347141B2 (en) | Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility | |
CN105723348B (zh) | 使用事务性存储器检测未授权存储器修改及访问 | |
US7702955B2 (en) | Method and apparatus for detecting a fault condition and restoration thereafter using user context information | |
US8935458B2 (en) | Drive assisted system checkpointing via system restore points | |
CN109992402B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN113495799A (zh) | 一种内存故障处理方法及相关设备 | |
CN110633190B (zh) | 一种应用程序内存监控方法、装置、设备及存储介质 | |
US10120597B2 (en) | Memory chips and data protection methods | |
US20230259636A1 (en) | Security assessment apparatus and method for processor | |
US8775863B2 (en) | Cache locking control | |
US8726101B2 (en) | Apparatus and method for tracing memory access information | |
CN116680208B (zh) | 异常识别方法以及电子设备 | |
US20070005860A1 (en) | Interrupt control system and method | |
US7725806B2 (en) | Method and infrastructure for recognition of the resources of a defective hardware unit | |
CN111273862A (zh) | 数据存储方法及其装置、可读介质和*** | |
CN113282435B (zh) | 应用异常的处理方法和电子设备 | |
CN117130824A (zh) | 一种处理异常的方法、电子设备及存储介质 | |
CN113094106B (zh) | 通信控制方法、装置、计算机设备和存储介质 | |
CN112650513B (zh) | 程序升级方法、装置、计算机设备和存储介质 | |
US20180373623A1 (en) | Apparatus and method for software self test | |
US20100169716A1 (en) | Managing confidence levels in a computing system | |
US20230057717A1 (en) | Insecure software detection apparatus and detection method, and storage medium | |
CN116502239B (zh) | 二进制程序的内存漏洞检测方法、装置、设备及介质 | |
CN114627942A (zh) | eMMC数据保护方法、装置、eMMC封装及存储介质 | |
CN117707629A (zh) | ***启动方法、可读存储介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |