进程和线程的区别


前言

在正式开始本文之前,我们通过一个例子给大家简答的说下进程和线程。QQ聊天大家应该都用过吧,在我们小时候,为了QQ等级的提升,我们一台电脑会挂好几个账号,此时,每登录的一个账号,就是一个进程;那我们在聊天的过程中,打开和某个好友的聊天窗口时,这个对应的就是线程。通过这个小例子,大家也能简单的了解进程和线程的形式。
在这里插入图片描述


一、线程被引入的原因是什么?

如果使用进程进行调度和分派,我们来看程序并发执行需要付出的时空开销:
在这里插入图片描述
在创建、撤销和切换进程中,系统必须为之付出较大的时空开销,这也就限制了操作系统中所设置的进程的数目,而进程的切换也不宜过于频繁,从而限制了并发程度的进一步提高

讲到这里,线程被引入的原因是不是呼之欲出了,目的就是为了减少程序在并发执行时所付出。


二、线程

引出了线程的概念后,传统的操作系统就演变成了现代操作系统。在现代操作系统中我们来看下线程的定义:作为调度和分派的基本单位。

也就是说现代操作系统把进程的功能给拆分了,进程作为资源分配的单位,而将独立调度和分派的功能分给了线程,因此线程也被称为轻型进程。

这样操作系统就可以分开的处理(资源分配和调度分派),对于拥有资源的基本单位(进程),不对之施以频繁的切换,对于只拥有少量必要资源的线程来实施调度和分派。


三、例子讲解

下面通过对本文开始时的QQ聊天的例子的讲解,来说明进程和线程执行的特点:

1.在上面的例子中,每个账号登录后,OS会创建一个对应的进程,会为之分配资源,我们登录的账号越多,创建的进程也就越多,最直观的感受就是,我们的电脑会变得有些卡顿(在当时,电脑的性能并不高,所以比较明显),这是因为创建进程、进程的调度时空开销较大,也就导致OS中的内存、CPU等资源的紧张。​

2.另一个情况,只登陆一个QQ,你打开了多个聊天窗口,是不是对你的电脑流畅度没有可以感知到的影响,这是因为线程的创建和调度所付出的时空开销很低,没有对OS形成较大的负担;

3.还有一种情况,可能大家没有注意到,就是只登陆一个账号,对应着OS中创建了一个进程,打开多个聊天窗口,OS中创建多个线程,这里进程和线程的关系是一对多的关系,一个进程可以创建多个线程。


四、进程和线程的区别

1.进程作为资源分配的单位,线程作为独立调度和分派的基本单位。

2.一个进程可以包含多个线程,一个线程只能属于一个进程,线程不能脱离进程而独立运行;

3.进程作为拥有资源的一个基本单位,线程仅拥有一点必不可少、能保证独立运行的资源(线程控制块TCB、程序计数器、一组寄存器和堆栈)

4.OS为创建、撤销、调度进程耗费的资源明显的大于线程的开销

5.进程之间的独立性高于线程,因为线程共享进程中的地址空间和资源(进程可以看成是一个班级,线程就是里面的学生,学校给班级分配了500元的资金,这个资金相当于分配的系统资源,这些学生共享这些资金。)


总结

线程由于其体量小的特点,操作系统中线程的数量远远大于进程的数量,一个进程中的多个线程可以并发的执行在多个处理机上,从而充分地的利用技术革新带来的便利----多核处理机,又进一步的提高了操作系统的并发性。​ 同时也正因为多处理机的迅速发展,操作系统的发展也得到了大大的促进。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JinziH Never Give Up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值