西西河

主题:【原创】进程的反击 -- zllwy

共:💬48 🌺136 新:
全看分页树展 · 主题
家园 【原创】进程的反击

借用一下Star War里面“帝国的反击”的题目,来聊一下最近进程(process)重新回到系统设计的前台的情况。操作系统的并发计算技术(concurrent computing,不是并行计算 parallel computing。Concurrent computing是个更广的概念,parallel computing是指有可以并行处理的硬件)从multiprogramming,multitasking/multiprocessing到multi-threading,并发的单元从job,task到process,再到thread。最近十几年,multi-threading是最时髦的并发编程技术。进程(process)作为一个并发计算的单元,已经逐渐隐入后台,很少为程序员接触了。还在直接用fork()和IPC编程的可能不多见了。进程和线程的最大区别就在于进程有独立的地址空间,线程则在一个进程内共享地址空间。从系统资源的角度来说,进程比较重,粒度更大,耗用的资源多。随着并发计算越来越重要,尤其是并行的硬件支持越来越丰富,轻量级的线程自然成了时髦的选择。

不过,最近一些新的计算平台的出现,又把进程带到了前台。这里说两个例子。一个是Chrome浏览器,一个是Android操作系统。Chrome改变了以往浏览器用线程运行并发的任务(比如显示一个网页),增加了进程来隔离不同网页的显示。最大的好处自然是提高了浏览器的安全性和可靠性。一个网页进程的崩溃不会导致整个浏览器的崩溃。最多只要把出现故障的页面关掉就可以了。在实际的使用体验中我们也确实感受到了可靠性的提高。另外,一个网页的进程无法访问另外一个网页的进程,使得浏览器的安全漏洞减少了。无独有偶,在Android系统中也使用了进程来隔离不同的应用。每个应用在缺省的情况下单独在一个虚拟机的实例中运行。这样如果一个应用发生问题不会影响到其他的应用。这点我体会也很深。以前我的java me的dumb phone,时不时会死机然后需要重启。Android的手机我到目前为止还没有死机过。最多是某个单独的应用死了,把它杀掉也就是了。从安全性角度来说也一样,不同应用之间无法访问对方的地址,这就大大减少了被攻击的可能。

进程之所以能重新杀到前台来,我觉得跟硬件的进步有很大的关系。硬件资源(尤其是内存)已经可以支持比较多的进程。另外,软件设计上对可靠性和安全性的重视也是使得进程重新受宠的一个重要原因。

通宝推:铁手,
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河