进程与线程简单理解,待补充。

时间:2022-10-19 18:08:16

为了提高CPU的利用率,计算机采用多道程序工作方式,使得CPU始终在执行某个任务。为了提高交互和某些任务的优先级,采用分时作业。即进行不同任务之间动态的调度。 通俗的讲,进程就是执行中的程序,当然这时一种非正式的说法。

程序不是进程,程序只是被动实体,例如存储在磁盘上的一系列的指令的集合(可执行文件),而进程是一种动态实体,将程序加载入内存中,分配一定的资源,然后可以执行或者等待执行,是一种动态的活动。

定义

《深入理解计算机系统》中定义:进程是对一个正在运行的程序的一种抽象。正在运行的程序可以使正在使用CPU的,也可以是已加载到内存中,等待分配资源或执行的。
一个进程可以有多个执行单元,即多个控制流,每一个执行单元都是一个线程。线程处于进程的上下文中,可以访问进程所拥有的一切资源。

  • 进程就是具有一定独立功能的程序在一个数据集上进行执行的过程。进程是系统进行资源分配和调度的一个独立单位。通常一个进程具有文本段(程序段)、数据段、堆、栈,以及私有的PCB。每个进程都有自己的私有空间。
  • 线程是进程的一个执行单元(控制流),是CPU进行调度和分派的基本单位。一个线程拥有自己独有的TCB(内含线程ID),寄存器,PC,栈。可以访问进程的所有资源。

通俗的讲,进程是可以实现A功能的运行中的程序,它的线程就是实现A功能的各种子功能的运行中的程序。

为什么需要线程

对于系统而言,创建一个进程需要分配系统资源(也可能有外部设备资源),进行进程调度也要进行资源的切换和部署。当进程所拥有资源过多时,进行这种切换消耗过大。而单个线程所占用的资源很少,进行线程间的切换消耗小,U/I效果更好,并发的程度也相应越高,所以有时也成线程为轻量级进程。对于多核处理器,还可以进行线程的并行,提高效率。另一方面,线程之间可通过共享内存进行通信,提高效率,但也带来了同步的问题。

区别与联系

  1. 一个进程可以有一个或多个线程,每个线程共享进程的资源,同时具有自己的私有资源,有进程的共享资源支撑,线程的私有资源可以很少。故线程又可称轻量级进程(LWP)
  2. 分配给线程的资源少,故切换更加迅速,线程间并发性更好。
  3. 线程间通过共享内存通信
  4. 线程相当于进程中的一个执行单元,多线程提高了进程中执行单元间的并行程度,减小了切换执行单元的花销。
  5. 线程没有自己的独立地址空间,线程间可能会互相破坏(例如写坏栈空间),与进程相比安全性差。