作者:Larry Hardesty
编辑:小杨
通常,电脑完全不响应时,程序是进入了一种“无限循环”,它将不断重复执行一段单一的代码。美国麻省理工学院计算机科学和人工智能实验室(CSAIL)的研究人员设计了一款新工具, 它能够自动中断程序的死循环,并跳出无限循环时运行的代码,执行下一行代码。 在测试中,他们的系统能够恢复5种不同的程序至稳定状态,此时数据能够被保存,程序也能安全退出。
(图片来源:pixabay)
一款商业软件通常包含数万个循环,一个微小的代码错误都将导致都将导致其进入死循环,而这时计算机是不知道何时停止的。计算机科学教授马丁·里纳德(Martin Rinard)和他的研究生们研发出了一款名为“Jolt”的软件,它可以通过监测程序所使用的内存来识别出死循环。当程序进入死循环时,“Jolt”可在每次循环迭代后对计算机内存进行一系列的“快照”。
“快照可能不尽相同,它是电脑运算的指示器。如果它始终保持统一状态,那么系统明显进入了死循环。”论文的第一作者迈克尔·卡宾(Michael Carbin)说道。
“Jolt”需要与编译器共同工作,编译器可以将高级语言转换为计算机可识别的基本指令。在应用程序经过编译后,“Jolt”将对源代码中的所有循环的头尾做上标记。如果之后程序进入停滞状态,它只需令程序执行该循环后的首行指令即可。
(图片来源:pixabay)
然而,监视程序中的所有循环将导致程序运行速度下降7-8%,卡宾说道。而且,让商业软件开发人员在写源代码并编译链接为可执行文件时使用“Jolt”可能是件难以完成的任务。所以实验室的研究人员正着手开发新的版本,它可以直接运行在编译完成的程序上(其中的指令完全由定长的二进制序列构成)。研究人员表示这种二进制版本的“Jolt”将被命名为“Bolt”。
排版:小石头
题图来源:pixabay