【计算机操作系统】进程与线程的区别是什么呢?
发布日期:2021-06-29 15:36:31
浏览次数:3
分类:技术文章
本文共 943 字,大约阅读时间需要 3 分钟。
1.进程与线程的区别是什么(高频高频)?
a.拥有资源
进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。
b.调度
线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程的切换,从一个进程的线程切换到另一个进程中线程时,会引起进程切换。
c.系统开销
由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备,所付出的开销远大于创建或撤销线程时的开销。 在进程进程切换时,涉及当前执行进程CPU环境的保存以及新调度进程CPU环境的设置,而线程切换时只需保存和设置少量寄存器内存,开销很小;
d.通信方法
线程间可以通过直接读写同一进程中的数据进行通信,但是进程间通信需要借助IPC。
a.最大区别:
- 进程是系统资源分配的最小单位;
- 线程是cpu操作和调度的最小单位;
b.从创建成本、切换以及通信成本来说:
线程的创建成本远远低于进程:
- 创建进程需要为进程划分出一块完整的内存空间,有大量的初始化操作,比如要把内存分段(代码段、数据段、堆区、文件映射区、栈区和内核态;)
- 创建线程则简单的多,只需要确定PC指针和寄存器的值,并且给线程分配一个栈用于执行程序,同一个进程的多个线程间可以服用堆栈;
- 因此,创建进程比创建线程慢,而且进程的内存开销更大。
上下文切换
- 进程上下文切换
当一个进程 在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。
当内核需要切换到另一个进程时,它就需要保存当前进程的所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够必得到切换时的状态执行下去。
- 线程上下文切换
当进程只有一个线程时,可以认为进程就等于线程;
当进程拥有多个线程时,这些线程共享相同的虚拟内存和全局变量等资源,这些资源在上下文切换时并不需要修改。
那么根据上面的描述,线程的上下文切换就存在两种情况:
- 前后切换的两个线程是属于同一个进程,两个线程的资源基本是共享的,切换上下文共享的资源无需变动,只有当线程有私有数据时,切换这些不共享的数据即可。
- 前后切换的两个进程不属于同一个进程,跟切换进程的上下文时是一样的;
所以切换同一进程的线程比切换进程消耗更少的系统资源,这就是多线程比多进程的优势。
转载地址:https://codingchaozhang.blog.csdn.net/article/details/116722304 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月25日 23时53分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Django实战---商城购物车的增删改、显示和合并购物车
2019-04-29
Django项目实战----添加支付宝支付
2019-04-29
DRF框架---前言(简单使用)
2019-04-29
字符串外面是b“ “的转换 -亲测有效
2019-04-29
单通道和多通道卷积
2019-04-29
npy文件和pkl文件的保存和读取
2019-04-29
买卖股票的最佳时机
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
JavaScript 的addEventListener() 事件监听详解!
2019-04-29
上传图片到阿里云OSS和获取上传图片的url的详解 !
2019-04-29
Kafka为什么这么快?
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29
Java 父线程与子线程相互通信的方法
2019-04-29
Redis 六种淘汰策略和三种删除策略
2019-04-29