Live2D

进程和线程的区别

 


进程

概念

进程是操作系统资源分配的最小单元。一个进程拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是⼀个类或一个 PCB(Process Control Block,进程控制块的结构体)。

进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序运行的一次运行过程。

特点

  • 进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。

  • 进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。(虚拟技术的支持,将一个CPU变幻为多个虚拟的CPU)

  • 系统资源(如内存、文件)以进程为单位分配。

  • 操作系统为每个进程分配了独立的地址空间

  • 操作系统通过“调度”把控制权交给进程。

 

 

问题:为什么引入线程?

首先我们引入了进程这个概念,虽然进程有利于资源的管理和保护。然而在实际应用中,进程有这样的问题:

  1. 进程切换的代价、开销比较大;

  2. 在一个进程内也需要并行执行多个程序,实现不同的功能。

  3. 进程有时候性能比较低。

     

引入线程有以下三个方面的考虑

  1. 应用的需要。比如打开一个浏览器,我想一边浏览网页,一边下载文件,一边播放音乐。如果一个浏览器是一个进程,那么这样的需求需要线程机制。

  2. 开销的考虑。在进程内创建、终止线程比创建、终止进程要快。同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。线程之间相互通信无须通过内核(同一进程内的线程共享内存和文件)

  3. 性能的考虑。多个线程中,任务功能不同(有的负责计算,有的负责I/O),如果有多个处理器,一个进程就可以有很多的任务同时在执行。

 

 

线程

概念

线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。

虽然多进程也能实现并发编程,但是线程比进程更轻量

优势

  • 创建线程比创建进程更快

  • 销毁线程比销毁进程更快

  • 调度线程比调度进程更快

 

 

进程与线程的区别

  1. 根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。

  2. 从属关系不同:进程中包含了线程,线程属于进程。

  3. 开销不同:进程的创建、销毁和切换的开销都远大于线程。

  4. 拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。

  5. 控制和影响能力不同:子进程无法影响父进程,而子线程可以影响父线程,如果主线程发生异常会影响其所在进程和子线程。

  6. CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。

  7. 操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。

 

 

转载至

https://blog.csdn.net/qq_42437577/article/details/100766768

https://blog.csdn.net/weixin_48271092/article/details/123649795

posted @   都是朕的江山  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
返回顶端
点击右上角即可分享
微信分享提示