不同版本的Android操作系统老化现象分析及建模研究毕业论文
2020-03-30 12:18:14
摘 要
软件老化[3]是指软件在长期不间断的运行过程中,由于系统内存泄露、未释放的文件描述符、数据腐烂、存储空间碎片以及舍入误差的累积等原因从而导致软件性能的衰退的现象。软件老化也可以定义为软件的内部状态在其运行期间的持续和不断增长的退化。此问题会导致性能逐步下降, 有时会导致系统崩溃。由于它的累积属性, 它在连续运行的系统中更密集地发生, 在长时间内执行。通常是由一些错误条件引起的,例如舍入错误、数据损坏、存储空间碎片或未释放的内存块。
在各种软件中都存在软件老化现象,如各种商业软件、操作系统、服务器软件等。检测和消除软件老化的现象是非常困难的, 因为老化现象只有经过一个长期的运行时间才能变得明显。软件老化是当今商业和各类软件系统中最不易察觉的威胁之一。软件系统老化会影响计算机的使用效率,尤其是在要求高可靠性、高实时性的系统中,当系统不能高吞吐量、低延迟长时间可靠地运行,将会造成不可估量的经济损失。
Android是一种基于Linux的自由及开放源代码的操作系统,Android 操作系统作为目前在移动设备,如智能手机和平板电脑上装载的主流操作系统之一,对Android的老化现象分析就显得十分有意义了。而手机作为目前应用非常广泛的通讯设备,它在人们日常生活中所扮演的角色越来越重要。随着人们开始关注于手机应用的多元化和功能的强大性,在满足消费者越来越高的要求方面,智能手机成为最好的选择。
现如今尽管对许多不同的系统的软件老化现象有着相当程度的研究, 涉及不同Android操作系统的老化研究,缺乏Android系统老化的有效的统一规范性定义。现如今有着一些关于软件老化现象的研究,但是针对Android系统的研究却比较少。软件老化会让设备在响应过程中性能逐渐降低、最终报废。同时,由于Android内存管理机制的复杂性以及其特殊的机制,很难通过分析来判断是否存在老化问题。基于上述情况,我通过观察Android的消耗资源中的可用内存来探究一些与软件老化相关的现象,并通过实验逐步验证Android中有关老化的一些假设。然后,通过马尔科夫链对Android进行老化和预测分析。通过实验和建模分析,观察到Android老化现象的存在,并发现老化现象通常是不可逆的,应用程序重新启动对老化现象的缓解帮助不大。目前的实验只是初步的,也比较局限,但观察结果或许会为进一步研究Android操作系统中的老化现象和软件复苏提供了一个新的角度。
关键词:软件老化;Android;马尔科夫链;软件复苏
Abstract
Software ageing [3] refers to the decline of software performance due to system memory leaks, unreleased file descriptors, data corruption, storage space fragmentation, and accumulation of rounding errors during the long-term uninterrupted operation of the software. phenomenon. Software aging can also be defined as the continuous and increasing degradation of the software's internal state during its operation. This problem can lead to a gradual decline in performance, sometimes leading to a system crash. Due to its cumulative nature, it occurs more intensively in a continuously running system and executes over a longer period of time. Usually caused by some error conditions, such as rounding errors, data corruption, memory space fragmentation or unreleased memory blocks.
There are software aging phenomena in various software, such as various commercial software, operating systems, and server software. Detecting and eliminating software aging is very difficult because aging can only become apparent after a long run. Software ageing is one of the least noticeable threats in today's commercial and various software systems. Aging of the software system will affect the efficiency of computer use, especially in systems that require high reliability and high real-time performance. When the system cannot operate with high throughput and low delay for a long time, it will cause incalculable economic losses.
Android is a free and open source operating system based on Linux. The Android operating system is currently one of the mainstream operating systems loaded on mobile devices, such as smart phones and tablet computers. Meaning. As a communication device that is widely used at present, the mobile phone is playing an increasingly important role in people's daily life. As people begin to focus on the diversity of mobile applications and the power of their functions, smart phones are the best choice to meet the increasingly high demands of consumers.
Nowadays, despite the considerable degree of research on the software aging of many different systems, the research on aging of different Android operating systems lacks an effective unified normative definition of the aging of the Android system. There are some studies on software aging, but research on Android systems is relatively rare. Software aging will gradually reduce the performance of the device in the response process, and ultimately be scrapped. At the same time, due to the complexity of the Android memory management mechanism and its special mechanism, it is difficult to determine whether there is an aging problem through analysis. Based on the above situation, I explored some of the phenomena related to software aging by observing the available memory in Android's consuming resources, and experimentally verified some assumptions about aging in Android. Then, aging and predictive analysis of Android through the Markov chain. Through experiments and modeling analysis, we observed the existence of Android aging phenomenon, and found that the aging phenomenon is usually irreversible, and application restarting does not help alleviate the aging phenomenon. The current experiment is only preliminary and relatively limited, but the observation may provide a new perspective for further studying the aging phenomenon and software recovery in the Android operating system.
Key Words:Software Aging;Android;Markov chain;Software Revival
目 录
1 绪论 2
1.1课题研究的背景、目的和意义 2
1.2国内外研究现状 2
1.3课题研究内容 3
1.4预期目标 3
2 实验准备 4
2.1 Android内部的内存回收机制 4
2.2 获取系统可用内存 4
3 实验设计 6
3.1实验1 6
3.2实验2 7
3.3实验3 7
4 实验数据分析 8
4.1实验1的数据分析 8
4.2实验2的数据分析 8
4.3实验3的数据分析 9
4.3.1 M1在实验3中的数据分析 9
4.3.2 M2在实验3中的数据分析 10
5 马尔科夫建模分析 11
5.1建立马尔可夫模型 11
5.2 M1在实验3的模型分析 11
6 结论 13
6.1实验总结 13
6.2局限性说明 13
6.3展望和提高 13
参考文献 14
致 谢 16
1 绪论
1.1课题研究的背景、目的和意义
一些研究表明,软件系统的性能下降或者突然的宕机等现象是由软件老化现象引起的。软件老化现象指长期运行的软件系统中,出现的状态异常、性能下降、系统宕机、失效等现象[15]。软件老化通常表现为:资源泄露,文件句柄和套接字未释放,进程、线程未结束,碎片问题,数值累积错误等。软件老化也可以定义为软件的内部状态在其运行期间的持续和不断增长的退化。
此问题会导致性能逐步下降, 有时会导致系统崩溃。由于它的累积属性, 它在连续运行的系统中更密集地发生, 在长时间内执行,通常是由一些错误条件引起的,例如舍入错误、数据损坏、存储空间碎片或未释放的内存块。
在各种软件中都存在软件老化现象,如各种商业软件、操作系统、服务器软件等[9]。检测和消除软件老化现象是非常困难的, 因为老化现象只有经过一个长期的运行时间才能变得明显。软件老化是当今商业和各类软件系统中最不易察觉的威胁之一。软件系统老化会影响计算机的使用效率,尤其是在要求高可靠性、高实时性的系统中,当系统不能高吞吐量、低延迟长时间可靠地运行,将会造成不可估量的经济损失[6]。
同时, 由于Android操作系统的内存管理机制相当复杂,目前在这方面也缺乏完备的资料, 这使得通过分析相应的内存管理机制来确定系统是否存在老化变得相当困难。但手机作为目前应用非常广泛的通讯设备,它在人们日常生活中所扮演的角色越来越重要[7]。随着人们开始关注于手机应用的多元化和功能的强大性,在满足消费者越来越高的要求方面,智能手机成为最好的选择[10]。
而Android作为一个开源的操作系统,由于其作为当前智能手机上搭载的主流操作系统之一,它对人类的日常生活的影响也越来越巨大。Android操作系统在随着使用时间的增加,它也会出现各种软件老化问题,如应用程序无响应以及突然崩溃等,经过长时间运行后,通常这些问题会变得更加明显,会给用户带来糟糕的使用体验[8]。因此,对Android中的软件老化现象的研究就显得很有必要了,如果可以弄清楚软件老化的成因又或者是如何减缓软件老化速度将对Android开发人员保持其应用程序的有效控制、减缓性能下降的速度有着很大的帮助。
1.2国内外研究现状
软件老化存在于许多长期运行的复杂操作系统中,它的具体表现是性能下降和故障率增加。许多恢复策略被提出用于对抗软件老化并减少故障发生的概率。自从1990年Bell实验室对软件老化和复兴进行研究以来,人们进行了大量的关于老化现象的研究、并且一直在探索更好的软件恢复策略。
以前的许多软件老化研究都是在不同的系统中进行的,但是Android操作系统中软件老化的研究却很少有人去认真探讨。Grottke、Matias和Bovenzi等人通过考虑Android之外的应用领域,从Apache中收集了相关资源使用情况,如交换空间,内存消耗,缓存使用率和响应时间,并应用统计技术来进行预测。Araujo等人[4]研究发现软件老化对云计算基础设施的影响,并验证老化是由内存泄漏的累积引起的。 Controneo等人介绍了Linux内核在操作系统中的软件老化问题。 Matias等人[13]使用仪器技术探索Linux Kernel操作系统中软件老化的影响。
还有一些关于android系统中软件老化的研究。 Araujo等人[4]介绍了Android系统中的软件老化问题,并使用Monkey工具在Foursquare(Android中的一个应用程序)中创建一个压力环境来监视内存使用情况,以揭示Android中的软件老化情况。 Guo等人[5]提出,在最佳时间采取回暖措施可以抵御软件老化并最大化的提高Android平均资源性能[11]。
Huang等人[2]提出了软件复兴的概念,并开发了一个具有四种状态(健壮状态,失大概率失效状态,失效状态和复兴状态)的系统模型来实现恢复活力。并且从那时起,许多关于不同系统上的软件老化和复兴的研究就开始进行了。到目前为止,有许多软件恢复方案,例如,应用程序重新启动,OS重新启动,虚拟机监视器(VMM)和虚拟机(VM)重新启动[1]。
然而,目前对于许多操作系统以及软件方面的软件老化研究虽然也有一些,但是有关操作系统的却大多数研究都集中在当下比较热门的Unix和Linux系统上面,对于其他操作系统,像本文所要分析的Android的研究就比较少了,而关于Android系统老化的有效的统一规范性定义也比较。因而,对于不同Android 版本的老化现象分析就显得十分有意义了[8]。而在不同的压力模型下,所产生的老化现象也未必就是一样的,对比不同型号的Android手机的老化现象,可以有助于开发者发现其优劣,便于今后更好的开展老化恢复技术及策略,也为进一步探索提供了一个新的方向[11]。尽管Android已经经历了这么多年的发展,但关于其老化现象的研究在国内外仍然不是很多,我个人觉得这一方面的探索在将来必然会引起广泛的重视。
1.3课题研究内容
本课题的研究内容是主要是模拟Android操作系统在实际使用当中所出现的老化现象,并对所收集到的数据进行分析,反映出一些比较明显的客观事实。随后通过马尔科夫链来构建老化模型,并通过MATLAB等工具来对Android操作系统的老化进行预测。
1.4预期目标
现阶段也有一些论文研究了Android环境下的软件老化问题,由于手头资源有限,因而我的预期目标是收集两个不同版本的Android手机的数据并且加其以分析,看看软件老化现象在不同版本的Android系统下是否会有所不同。能够通过马尔科夫链来构建老化模型,并通过MATLAB等工具来对Android操作系统的老化进行较为精准的预测。
2 实验准备
在设计实验之前,必须先弄清Android内部的一些基本的原理,如想要将内存作为老化现象的评估数据,那么就必须先弄清楚Android内部的内存回收机制以及如何获取系统的可用内存。
2.1 Android内部的内存回收机制
Android 是一款基于Linux内核,面向移动终端的操作系统。为适应其作为移动平台操作系统的特殊需要,Google公司对其做了特别的设计与优化,使得其进程调度与资源管理与其他平台的Linux有明显的区别[13]。许多人在Android手机的使用过程中会在自己关闭应用程序之后清掉后台进程,这是因为这样做可以提高系统流畅度,但弊端是同时会降低应用的响应速度。
之所以这样,是因为Android采用了特殊的资源管理机制。究其原因,Android在其设计之初本就是面向移动终端的,所有可用的内存仅限于系统 RAM,必须针对这种限制设计相应的优化方案。当 Android 应用程序退出时,并不清理其所占用的内存,Linux内核进程也相应的继续存在,所谓“退出但不关闭”。从而使得用户调用程序时能够在第一时间得到响应。当系统内存不足时,系统将激活内存回收过程。为了不因内存回收影响用户体验(如杀死当前的活动进程),Android 基于进程中运行的组件及其状态规定了默认的五个回收优先级:
1、IMPORTANCE_FOREGROUND: