进程和线程之间的区别,内附比较表

2020.05.23 -

   

一个进程可以称为活动程序。它是一个正在执行的程序。它包括进程堆栈,寄存器,程序代码,程序计数器等。另一方面,相对轻量级的进程,线程可以在调度程序的帮助下独立进行管理。它与其他线程共享与数据段,文件,代码段等有关的信息,同时展示其自己的计数器,寄存器,堆栈等。尽管进程和线程这两个术语可以互换使用,但它们在含义和属性上却大不相同。本文将帮助您理解线程和进程为何不同的原因。

进程

进程与线程

差异基础进程线程
系统调用一个过程涉及系统调用。线程中不涉及任何系统调用。
上下文切换在过程中需要上下文切换。线程中无法进行上下文切换。
数据和代码共享不同的过程具有不同的数据和代码副本。在不同的线程之间共享数据和代码的相同副本变得可能。
操作系统处理操作系统在不同进程上的工作方式不同。用户级别的线程被操作系统视为单个任务。
堵塞万一任何进程被阻塞,其余进程将继续其工作。如果用户级别的线程遇到阻塞,则其余线程也会受到限制,因为操作系统将其视为单个任务。内核级线程可以避免这种阻塞。
相互依存一个过程本质上是独立的。线程作为给定进程的子集存在,并依赖于它。
记忆空间进程在与线程不同的内存空间中运行。线程与其所属的进程在相同的内存空间中运行。
共享性进程拥有其各自的程序计数器(PC),堆栈空间和寄存器集。一个线程与其他线程共享代码段,地址空间,数据段等。
消耗的时间进程之间进行的通信需要一些时间。线程之间进行的通信所需的时间少于进程。
内存空间分配进程无法与其他进程共享其内存空间。线程可以与属于同一进程的其他线程共享其内存空间。
开销一个过程包含开销。线程没有任何开销。

什么是进程?

每个进程都提供执行特定程序所需的资源。进程展示了一个虚拟地址空间,并包含链接到系统对象,安全上下文,环境变量,可执行代码,唯一进程标识符,优先级类,工作集大小(最小和最大),最小一个执行线程等的开放句柄。每个进程都在单个线程(称为主线程)的帮助下启动。可以从特定进程中的任何给定线程创建更多线程。

  • 任何特定程序的执行实例都称为进程。
  • 在某些操作系统中,单词task被分配给正在执行的程序。
  • 进程保存在系统的随机存取存储器或主存储器中。
  • 它是一个活动实体,万一重启计算机,该实体就会消失。
  • 单个程序可能具有多个进程。多个进程能够在多处理器系统上并行执行。
  • 即使不能在单处理器系统上实现真正的并行性,也可以应用进程调度算法,其中可以调度进程以描述并发错觉的方式执行。

什么是线程?

线程是指位于流程中的实体。可以安排执行时间。任何给定进程中存在的线程都能够共享其系统资源和虚拟地址空间。每个线程都维护异常处理程序,以及调度优先级,唯一线程标识符,线程本地存储,异常处理程序,以及用于保存线程上下文直到被调度的一组结构。

线程的上下文包含线程的机器寄存器,线程环境块,内核堆栈以及存在于属于该线程进程的地址空间中的用户堆栈。在某些情况下,线程描述了能够模拟客户端的各自的安全上下文。

  • 线程是从进程派生的,并且是其子集。
  • 由于线程与实际进程完全相同,因此线程在进程的上下文中执行,共享内核分配给进程的所有资源,等等。线程只是“轻量级进程”。
  • 通常,进程包含单个控制线程,其中可以一次执行一组机器指令。
  • 一个进程能够包含多个执行线程,这些线程可以同时执行指令。
  • 设计了多个控制线程以利用在多个处理器系统上可能出现的并行性。
  • 线程调度算法可以应用于单处理器系统,其中可以在任何给定的时间点调度进程以运行单个线程。
  • 在进程内运行的线程具有相同的地址空间,堆栈,文件描述符以及其他进程链接的属性。
  • 由于进程线程使用相同的内存,因此访问包含在进程中的共享数据的同步变得尤为重要。

线程与进程之间的关键区别

  • 线程对于小型任务很有用,进程用于更“重量级”的任务。–主要用于执行不同的应用程序。
  • 另外,可以在相同的地址空间中找到属于任何给定进程的线程。相反,不同的进程不能共享相同的地址空间。
本站文章禁止转载,违者必究
阅 151
0

一个进程可以称为活动程序。它是一个正在执行的程序。它包括进程堆栈,寄存器,程序代码,程序计数器等。另一方面,相 […]

湘公网安备 43011102001693号

    湘ICP备19003021号-1