【计算机操作系统】进程与线程的区别是什么呢?
发布日期: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秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章