主题:【原创】进程的反击 -- zllwy
以前没有线程的时候,那没什好说的,都得靠进程了。但这是笨办法,问题很多。所以当线程出现的时候,是计算机史的一个飞跃。
线程小名叫做轻量级进程(light-weight process),能干和进程类似的活但开销却小很多,所以当然是很多问题的最佳人选。但是它的scalability是个问题,线程管理不好的话,thread swap in and out的时间可能比干正经活的时间还要大。比如早期的Java,4个以上的CPU就很难利用好。
解决问题的途径有两条:
1)提高线程的scalability,比如Java在1.5以后引入了一真个的concurrent package,另外VM也改进了很多,最大可能的减少thread间的contention,提高多CPU或是多核下的性能。
2)把大的问题break down,多来几个进程,每个进程内的thread在一个合理可控制的范围内,避免thread间的contention。这样就全局来看系统的利用率可能是最优的。
所以现在最流行的不是什么“进程反击”,而是线程+进程的一个hybrid局面。就Google的chrome而言也是这样的,chrome的UI process有20多个thread,就是每个render process也有4个thread。所以进程和线程不是谁取代谁,谁吃掉谁的问题,而是怎么联合作战,共同完成任务的情形。
还有,现在大一点的系统大多是NUMA Architecture(Non-Uniform Memory Access),任务分解到多个进程上,每个进程分配在某个或某些个CPU上,接触某个bank或某几个靠得最近的内存,这可能是一种最合理的运行方式了。
- 相关回复 上下关系8
🙂cpu是多核集成的,可以有专门FPGA核负责调度,硬OS 益者三友 字302 2011-01-19 20:10:46
🙂操作系统进驻CPU 1 大山猫 字40 2011-01-19 19:20:25
🙂或许与cpu的性能提高方式转变有关 3 不是老陈 字279 2011-01-19 01:31:20
🙂倒也不全是那样
🙂说得不错 1 zllwy 字430 2011-01-19 22:56:27
🙂你说的这个是桌面 1 牵着一只大猫 字451 2011-01-18 06:05:55
🙂server端的并发 14 zllwy 字1753 2011-01-18 09:51:22
🙂语言品种太多了,搞的人眼花缭乱 铁手 字246 2011-01-19 16:38:41