当程序员遇到问题时,一个常见的策略是从头开始重新来过。从头重做一遍,可以使我们能够避免可能先前未被注意到的失误,并且能更好地了解问题发生的方式和原因。
在技术领域,这一策略也适用——你的电脑是否运行缓慢或没有响应? 尝试重启计算机;无法运行那个程序? 结束任务然后再重新运行一遍......
让我们来谈谈为什么重新启动计算机是一个如此有效的解决方案吧。
首先,计算机有两种不同类型的存储:
非易失性存储器允许用户长期存储数据,即使关闭计算机也不会造成数据丢失,但是这种类型的存储器速度相对较慢。比如说硬盘、光盘(CD、DVD或蓝光)或USB。
易丢失性存储器速度非常快,但它需要极高的性能来维持运行。由于其速度快,易失性存储器常被用作计算机的工作存储器。这种工作内存由操作系统管理,操作系统控制正在运行的进程并为每个进程分配空间。每个进程在此空间中存储它此时正在操作的数据,并从操作系统请求资源(例如更多内存、访问CPU或访问外围设备),当进程不再需要这些资源时必须将其释放。
程序员代码中可能会出现错误,导致计算机以不稳定的方式运行:
例如,编程中的错误可能导致程序进入死循环,只是在消耗CPU而不做任何事情,并减慢其余进程的速度。
其他编程错误集中在资源使用不当上:一个进程请求大量资源,或者随着时间的推移不断发出少量资源的请求但不释放先前获得的资源。最终的结果是其余的进程只有很少的可用资源,必须等到这些资源被释放。尤其,内存管理可能是一个问题频出的领域。除了在不释放内存的情况下囤积内存,进程可能会尝试访问未经请求的或之前已释放的内存。这种错误的访问可以以意想不到的方式修改进程的数据,或者在更极端的情况下,修改其他进程的二进制代码。
操作系统本身也可能有自己的缺陷,导致资源被永久阻碍而无法被使用或进程已经结束但仍然占用资源。
重新启动计算机是一种“以强制方式”修复工作内存的方法:消除它并从头开始。使用这种方法,没有必要担心问题产生的原因:我们返回到工作内存“正确”的状态,如果导致错误的情境不再发生,那么错误也将不再发生。
因此,重启计算机非常有效,原因有三:因为它可以同时解决不同类型的问题:因为它可以同时解决不同类型的问题:资源积累、僵尸进程、死循环的程序、内存损坏等。还有不需要花时间来诊断问题出现的原因。最后是如果错误是由于多个异常情况同时出现才产生,那么重启之后通常这个错误不会再次出现,并且看起来我们已经“修复”了这个问题。
但是,必须记住,重新启动不是解决所有问题的方法。例如,它不能解决硬件问题或消除恶意软件。如果我们的计算机性能不够强大,要么是我们在启动计算机时运行了太多程序,要么是我们想要使用的程序需要的资源比我们拥有的资源多,这样的话重启也无法消除错误。
领取专属 10元无门槛券
私享最新 技术干货