Font Size: a A A

Optimizing Utilization Of Hardware Resources Toward Uncrashable Software Application

Posted on:2018-01-12Degree:DoctorType:Dissertation
Country:ChinaCandidate:Full Text:PDF
GTID:1368330590955269Subject:Computer software and theory
Abstract/Summary:PDF Full Text Request
With the recent advances in the electronic devices and related software,quality control is a big challenge for developers.The complexity of software coding is growing with the fast and complicated hardware structure and compatible highly functional software.The increase in lines of code increases bugs in some sense.A small bug in critical systems can be the main cause of severe devastation of thousands of lives.Hence,developers are sincerely focused on testing and debugging bugs to develop uncrashable applications.The research and developments of uncrashable software application can be elaborated in terms of programming language and its compiler,behavior of applications on operating system(OS),and behavior of OS itself followed by testing,verification and validation of the software application.The quality of the software plays a major role for the reliability of a complete system.However,the reliability of the complete system is yet weak due to the presence of weak link,i.e.,the high-availability of the software application.Toward obtaining an uncrashable software application,we research on the bugs existing on the various phases of software development process including code analysis,compilation,and verification in addition to the bugs on the final application using a RUSH framework.It focuses research on analyzing(1)before compilation of final code,(2)during final compilation,and(3)after the compilation and the release of the final software application.The first direction of RUSH framework is before the compilation.Code analysis,testing,and verification are major stages before the final release of software.We focus study on code analyzing and verification techniques with the optimized utilization of cores and other hardware resources to enhance the performance of exhaustive code analyzing technique(symbolic execution)and verification technique(model checking)to obtain crash free software.We analyze the source code of symbolic execution engine KLEE and Cloud9(parallel KLEE)to check probable space to enhance the process.Based on the results,we identify three bottlenecks hindering the performance of Cloud9: the communication time gap among cores,the job transfer policy by the load balancer,and the cache management policy of the solved constraints in KLEE(so in Cloud9).To handle these bottlenecks,we(1)tune the communication time gap with better parameters to detect idle cores earlier;(2)modify job distribution algorithm to only distribute the jobs to the idle cores;and(3)add an option to tune the size of solved constraints cache list to reduce time spent on searching solved constraints cache.Our evaluation of benchmarks(self-written & real-world Coreutils)show tuned Cloud9 unleashes 140%~150% more than original Cloud9 and the performance,in some cases,shows more than 500% improvement in terms of execution time with the change in the value of the size of the cache list of solved constraints,and behavior of the program under test.To deeply understand state-of-the-art on model checkers and techniques adapted during various software development phases,we survey its role in software engineering.We observe its implementation for software debugging,constraint solving,and malware detection.It is implemented to verify different applications(e.g.,object-,aspect-,and service-oriented;web-and database-based;and GUI)and systems(e.g.,biological & chemical;avionics;and other safety-and mission-critical system).Our study helps deciding the model checking technique(s)and tool(s)to be applicable for verifying real software to generate uncrashable applications.Model checking is facing a severe state-explosion problem due to which developers hesitate to use it.Many solutions are proposed to solve this issue.We analyze the source code of Spin tool for possible enhancement of the verification process and to check the solution to the problem.We develop a limited depth-first breadth search(LDBS)algorithm(a merge of DFS and BFS algorithm)to automate the existing manual solution.It successfully finds counterexample on most of the programs which encounter state-explosion using the latest Spin tool.The second direction of RUSH framework is during final compilation of the code.The compiler's quality plays significant role on generating robust binaries and their performance.Although many works have been conducted on compilers,little is done on their impact on generating robust binaries.It is often hard to decide a better compiler to use in developing software.We conduct a cross-comparison study on popular C compilers: GCC,Intel,Sun,PGI,LLVM,and Visual Studio on popular OSs.Our results show that on average,GCC C compiler is the best for the GNU/Linux platform,and PGI C compiler is superior to Intel on UNIX based OSs.However,Intel shows its superiority and VS shows its higher efficiency on Windows OS.The third direction of RUSH framework is after the compilation of exhaustively analyzed and verified code by the robust compiler.Despite many efforts have been expended on each phase,bug still exists and may lead to application or system crash.Although bugs can be addressed by different tools,it is yet irritating experience for end users until patched.We develop an Anticrasher which continuously analyze the utilization of hardware resources and some other basic processes of the OS and forbid the impeding crash to occur.It prevents impeding crashes on most of the popular OSs at user end.In short,the RUSH framework targets the research in the direction of obtaining an uncrashable software application before,during,and after the compilation of the final software application.It enhances the code analyzing tools,checks the role of verification tool,analyzes the reliable C compiler for robust binaries generation,and creates an Anticrasher tool for OSs.It also makes a USB hard-disk as various OSs installation resources.
Keywords/Search Tags:Crash, program analysis, symbolic execution, model checking, compilers, testing, debugging, verification
PDF Full Text Request
Related items