【计算机操作系统】进程与线程的区别是什么呢?
发布日期:2021-06-29 15:36:31
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月13日 11时41分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android HTTP 设置UA(User-Agent)及自定义
2019-04-29
安卓学习笔记——文件存储读写
2019-04-29
【泛微ecology】做好系统备份及各项安全工作
2019-04-29
【泛微E9功能点】日志中心-项目日志
2019-04-29
【泛微E9功能点】日志中心-系统日志
2019-04-29
Oracle TIPS查数据库名 创建临时表空间 创建表空间 新增数据库文件 创建用户
2019-04-29
【泛微】ecology9附件不能为空判断
2019-04-29
【泛微ecology】从数据库导出人员信息,部门取机构全路径
2019-04-29
DB2数据库 截取日期 yyyy-mm-dd
2019-04-29
解决Office组件调用时未找到“AxImp.exe”问题
2019-04-29
Element中使用el-form-item内部el-input为textarea时由于自生成的.el-form-item__content导致无法设置textarea百分比宽度问题解决
2019-04-29
vue-cli3.0(@vue/cli)设置网站标题时找不到index.html问题解决
2019-04-29
UGUI Auto Layout自动布局功能详解
2019-04-29
Unity设置环境的RenderSetting类的使用
2019-04-29
Unity系统函数的执行顺序
2019-04-29
Unity的Inspector面板显示自建类和事件
2019-04-29
关于“时间复杂度”
2019-04-29
Unity关闭项目运行
2019-04-29