进程与线程的区别

相同点:

       进程和线程都有ID/寄存器组、状态和优先权、信息块,创建后都可更改自己的属性,都可与父进程共享资源、都不鞥直接访问其他无关进程或线程的资源。

不同点:

1、定义

进程:进程是程序的一次执行,是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位,是系统中的并发执行的单位。

线程:在⼀个程序⾥的⼀个执⾏路线就叫做线程(thread)。更准确的定义是:线程是“⼀个进程内部的控制序列”。⼀切进程⾄少都有⼀个执⾏线程,线程是进程中执行运算的最小单位。

线程的优点

       创建⼀个新线程的代价要⽐创建⼀个新进程⼩得多

       与进程之间的切换相⽐,线程之间的切换需要操作系统做的⼯作要少很多

       线程占⽤的资源要⽐进程少很多

       能充分利⽤多处理器的可并⾏数量

       在等待慢速I/O操作结束的同时,程序可执⾏其他的计算任务

       计算密集型应⽤,为了能在多处理器系统上运⾏,将计算分解到多个线程中实现

       I/O密集型应⽤,为了提⾼性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。

线程的缺点

 性能损失

       ⼀个很少被外部事件阻塞的计算密集型线程往往⽆法与共它线程共享同⼀个处理器。如果计算密集型线程的数量⽐可⽤的处理器多,那么可能会有较⼤的性能损失,这⾥的性能损失指的是增加了额外的同步和调度开销,⽽可⽤的资源不变。

健壮性降低

       编写多线程需要更全⾯更深⼊的考虑,在⼀个多线程程序⾥,因时间分配上的细微偏差或者因共享了不该共享的变量⽽造成不良影响的可能性是很⼤的,换句话说线程之间是缺乏保护的。

缺乏访问控制

       进程是访问控制的基本粒度,在⼀个线程中调⽤某些OS函数会对整个进程造成影响。

编程难度提⾼

       编写与调试⼀个多线程程序⽐单线程程序困难得多。 

2、调度的基本单位

在传统的OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位。在每次调度时,都需要进行上下文切换,开销较大。而在引入线程的OS中,已把线程作为调度分派的基本单位,因而线程是能独立运行的基本单位。当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程。在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,必然就会引起进程的切换。

3、并发性

在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行,甚至还允许在一个进程中的所有线程都能并发执行。同样,不同进程中的线程也可以并发执行。这使得OS具有更好的并发性,从而能更加有效的提高系统资源的利用率和系统的吞吐量。

4、拥有资源

进程可以拥有资源,并作为系统中拥有资源的一个基本单位。然而,线程本身并不拥有系统资源,而是仅有一点必不可少的、能独立运行的资源。线程除了拥有自己的少量资源外,还允许多个线程共享该进程所拥有的资源,这首先表现在:属于同一进程的所有线程都具有相同的地址空间,这意味着,线程可以访问该地址空间中的每一个虚拟地址,此外还可以访问进程所拥有的资源

5、独立性

在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。这是因为,为防止进程之间彼此干扰和破坏,每个进程都拥有一个独立的地址空间和其他资源,除了共享全局变量外,不允许其他进程的访问。但是同一进程中的不同线程往往是为了提高并发性以及进行相互之间的合作而创建的,他们共享进程的内存地址空间和资源,如每个线程都可以访问它们所属进程地址空间中的所有地址,如一个线程的堆栈可以被其它线程读、写,甚至完全清除。

6、系统开销

在创建或撤销进程时,系统都要为之分配和回收进程控制块、分配或回收其它资源。OS为此所付出的开销,明显大于线程创建或撤销时所付出的开销。

7、支持多处理机系统

在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就可以将一个进程中的多个线程分配到多个处理机上,使它们并行执行,这无疑将加速进程的完成。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值