线程与进程的区别和联系

为什么引入线程的概念

要回答这个问题,我们首先要明白进程最大的特点:系统资源分配的最小单位

创建一个进程,我们需要为其分配资源(如内存,I/O设备等),同时需要为其创建相应的PCB

销毁一个进程,我们先要对其所分配的资源进行回收,并撤销其PCB

切换一个进程,我们要先保存其在CPU内的上下文信息,并在CPU中设置新选中的进程的环境

当我们需要执行一些较为复杂的任务需要频繁的执行进程 创建/销毁/切换 操作时,系统就产生了极大的时空开销(根本原因。这也就限制了系统创建进程的数目,而且进程的切换也不宜太频繁,从而限制了程序并发执行程度的提高。

总结:在OS中引入线程的概念,是为了减少程序在并发执行时所付出的时空开销,以使OS有更好的并发性。

什么是线程

一个线程就是一个 "执行流",且是“执行流”的最小单位, 每个线程之间都可以按照顺序执行自己的代码.,多个线程之间 "同时" 执行着多份代码.

线程的重要特点:

1:线程是作为独立调度和分派的最小单位,每个线程都可以独立在CPU上调度执行

2:线程几乎不拥有资源,同一个进程的线程共享这个进程所拥有的资源(内存空间和文件资源等)

3:线程是由进程创建的(寄生在进程),具有传统进程所具有的很多特征,因此又称为“轻量进程”,每个进程至少包含一个线程,称之为"主线程"。在未引入线程概念的OS中,进程也被称作‘单线程进程’。

线程和进程的比较

1.调度的基本单位

在没引入线程概念的OS中,进程作为调度的基本单位,在每次对其进行调度时,都会发生进程的切换,前面已经提到过,进程的切换需要进行上下文保存和切换,开销巨大;而线程的切换则只需要保存和设置少量寄存器的内容,代价远低于进程的切换。

2.并发性

在引入线程的OS中,除了进程之间可以实现并发执行,一个进程中的线程也能实现并发执行,这就提高了程序执行的并发性,进而提高了系统的资源利用率和吞吐量。

例如:在多处理机系统上,同一进程只能利用一个处理机资源,而线程则可以在多个处理机上同时运行,这就加速了进程的完成。

3:拥有资源

线程几乎不拥有资源,同一个进程的线程共享所属进程的资源,所以线程的 创建/销毁/创建 切换代价很小

4:独立性

进程之间除了共享全局变量之外,都拥有自己独立的地址空间和其他资源,不允许其它进程进行访问,但线程之间的资源都是共享的,因而线程的独立性要比进程低很多,也就产生了很多安全问题。

5:系统开销

由于线程和进程所拥有的资源的差异,进程比线程的创建,撤销,切换开销大得多。

既然线程依附于进程,那么OS是如何在 创建/销毁 方面节省开销呢?

例如:有些应用程序执行需要执行多个相似的任务,比如一个网络服务器,如果是单线程进程,当多个用户同时访问时·,一个进程同一时间只能服务一个用户,如果要提高效率,我们只能再创建进程,实现多线程之后,我们可以设置一个线程用于检测用户请求,只要用户发出访问请求就再建立一个线程,这就极大节省了系统开销。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值