进程和线程的区别

这个问题是基础面试必问,作为非计算机专业的人,我今天在阅读《CLR via C#》的第25.1节才了解到区别

简单来讲:

进程是应用程序的一个实例要使用的资源的集合。

线程是一个虚拟化的CPU,或者逻辑CPU。

从概念上来讲,进程与线程差别巨大,甚至可以说毫无关系;但是因为现在操作系统都是设计成一个进程默认有一个执行线程,且线程只能使用当前进程内的资源,所以容易把线程理解成轻量级的进程

可以想象一下,如果操作系统有多个进程,但是只有一个CPU,或者说只有一个线程,那必然是这一个CPU去依次顺序切换不同的进程空间并去执行进程中的代码,一旦代码中有BUG,就会带来整个系统的崩溃。以上所说的情景当然是不可能发生的,不过这样的想象有助于帮助理解概念。

区别了两个概念,也就知道了进程和线程的使命完全不同。

 

进程是为了隔离:

1.隔离不同的应用程序实例。使得一个应用程序崩溃不会影响其它的应用程序

2.隔离应用程序和内核代码/资源。使得应用程序不会影响内核的稳定性

线程是为了执行和并发:

1.线程有自己的执行环境,因此为创建这种环境,线程有自己的开销

2.线程需要调度,因此有优先级,前台后台等概念

3.憋不出第三条了……

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值