进程和线程的区别
从发展的角度看,一个操作系统常常会需要同时进行多项工作,即使是在单用户操作系统,用户也可能会同时开启浏览器、word文档处理、电子词典等等应用,因为这些应用彼此之间关联比较小,相互之间又比较相识(他们需要占用I/O、file、data等等资源),为了便于管理,于是就有了进程(process)的概念。
在传统的操作系统中,一个进程只有一个线程(thread)。这就带来了一些麻烦,比如在使用word文档的时候,用户的输入的时候,word程序无法同时检查用户拼写时候正确。线程的出现,就解决了这个问题。一个进程(比如word程序)内,同时有多个线程(进行输入处理的线程、进行拼写检查的线程),这样就使得并发性(parallelism)、吞吐量(throughput)提高了。
从逻辑的角度看,因为线程是属于进程的,这样必然导致有进程必有线程,有线程必有进程,另外,线程比进程要轻量一些。进程和线程的区别可以总结为下面两点。
(1)线程是轻量级的进程。这就导致了,线程之间的上下文切换(context switch)耗费的资源比进程少很多。
(2)线程之间有共同的地址空间,进程之间地址空间不同。每一个进程拥有它自己的地址空间。在单个进程之中,可以由多个线程,线程之间共享地址空间。这同样是线程上下文切换存在优势的原因。但是,记住,线程不共享栈(stack)。阮一峰的《进程与线程的一个简单解释》中,比喻道,每个进程就像是工厂的一个车间,而线程是车间里的工人,工人们共享车间的空间等资源。
最后,最好的理解方法还是在实作中,通过代码来理解。
2013-05-03
posted on 2013-05-03 12:04 ZenLearner 阅读(127) 评论(0) 收藏 举报
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号