服务器宕机利用内存转储死锁的分析方法



      内存转储分析方法可分为死锁分析法和不正常分析法两种。两种方法的不同之处在于,死锁

分析整个系统开始,不正常分析从特定不正常点开始。死锁现象体现出来,便是系统不响应现

象。死锁分析是全局的。这里的总体情况是整个操作系统,包括所有流程。我们从教科书、运

行程序中学到的,包括代码片段、数据片段和堆栈片段。使用这种方法来查看系统也是适当的

。系统的全貌实际上包括正在执行的代码(线程)和用于保存状态的数据(数据、堆栈)。
 
 
 
死锁的本质是系统中的部分或全部线程进入等待状态并相互依赖,使得进程执行的任务不能继

续。因此,分析这种现象的核心思想是分析系统中所有线程的状态及其依赖性,如图1所示。

线程的状态是相对性明确的信息。我们可以根据载入运行内存转储中的线程状态标示来得到

这类信息。依靠关系分析需要大量的技能和实践经验。最常用的分析方法是对物体的等待关

系、时间分析等。
 
 
与死锁分析相比,不正常分析方法的关键是不正常。大家常常会碰到出现异常,比如清零实际

操作、不法命令实行、不正确的详细地址浏览,乃至是手机软件级別的非法操作。这些不正常

对操作系统级别反应,是不正常重启类停机的现象。不正常现象说到底是CPU执行了具体的指

令而开启的。换句话说,我们看到的现象必须是CPU跨越了不正常。所以我们需要从不正常点

开始,从而推导出代码执行的完整逻辑。
 
 
就经验而言,很少有工程师知道如何分析内存转储不正常,很少有人了解上述情况。许多工程

师对不正常重启现象进行了分析,基本上只是在不正常本身中,没有对这一现象背后的整个逻

辑进行推导。与死锁分析方法相比,异常分析方法不是很多固定规则,甚至很多次,由于现象

逻辑复杂,我们找不到根源。总体而言,不正常分析的基本逻辑是不断比较预期情况和非预期

情况,找出其背后的原因。例如,处理由执行错误指令开启的不正常,我们需要首先回答正常

执行指令应该是什么,以及为什么CPU得到错误指令。
分享: