Skip to content

进程

字数
2479 字
阅读时间
10 分钟

一、进程的概念

  • 程序:是静态的,是存放在硬盘中的可执行文件,是一系列指令集合
  • 进程:是动态的,是程序的一次执行过程
    • 同一个程序执行多次会产生多个不同的进程
  • 进程 = 进程控制块PCB+程序段+数据段

二、进程的组成 --- PCB

为了区分同一程序多次执行产生的多个不同进程,提出了`PCB`这一概念
  • 当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号” --- PID( process ID,进程ID)

  • 操作系统需要记录如下数据:

  • 而这些操作系统所记录的数据都被保存在一个数据结构PCB(Process Control Block)中,即:进程控制块

  • 🌟总而言之,操作系统需要对各个并发运行的进程进行管理,但凡管理进程时所需要的信息,都会被放到PCB中[1]

  • PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,操作系统会回收其PCB

  • 进程控制块PCB存储如下信息:

三、进程的组织方式

1. 链接方式

  • 按照进程的状态将PCB分为多个队列,操作系统持有指向各个队列的指针
    • 队列分类:
      1. 就绪队列
      2. 运行队列
      3. 阻塞队列

2. 索引方式

  • 根据进程的状态不同,建立几张索引表,操作系统持有指向各个索引表的指针
    • 同样也有就绪索引表、运行索引表和阻塞索引表,每个索引表中存有相应状态的各个进程的进程的索引指针

四、进程的特征

注意区分进程和程序

1. 动态性

  • 进程最基本的特征,进程是程序的一次执行过程,是动态的产生、变化与消亡

2. 并发性

  • 内存中存在多个进程实体,各个进程可以并发执行

3. 独立性

  • 进程是能够独立运行、独立获取资源、独立接受调度的基本单位

4. 异步性

  • 多个进程并发执行,各自按照独立的不可预知的速度进行

5. 结构性

  • 每个进程都有一个对应的PCB,结构上来看,每个进程都含有PCB、程序段和数据段

五、进程的状态和转换

1. 进程的状态

定义
  • 一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程,进程状态体现了一个进程的生命状态。一般来说,进程有五个状态:创建状态、就绪状态、运行状态、阻塞状态、终止状态。
    • 创建态:进程在创建时需要申请一个空白的PCB,用于记录控制和进程管理的信息,并完成资源分配。如果创建工作无法完成,例如:资源无法满足,就无法被调度运行,那么就说此时的进程处于创建态
    • ⭐运行态:进程占用CPU,并在CPU上运行
      • 注意:同一时刻,单核CPU上只能有1个进程在CPU上运行,而双核CPU上可以有2个进程在CPU上运行
    • ⭐就绪态:进程已经具备运行的条件,但CPU无法分配给它(无空闲资源)
      • 即:进程已经获取到了除CPU以外的所有资源
    • ⭐阻塞态/等待态:进程因等待某件事(如:I/O设备的输入输出操作等)发生而暂时无法运行
      • 运行态 阻塞态
      • 等待事件完成后,进程又由阻塞态 就绪态
    • 终止态/撤销态:进程结束或出现错误,或被系统终止,进入终止状态,无法执行。终止态过程中,系统将会收回分配的资源

2. 状态的转换

  • 图例说明:

  • 解释说明:

    • 如果进程得到系统许可后,完成PCB的创建,就从创建态转换为就绪态
    • 进程被调度/处于运行态的CPU的时间片用完了,就调用就绪队列的进程:就绪态 执行态/运行态
    • 时间片用完、更高级的进程抢占了CPU(抢占式CPU调度算法):执行态/运行态 就绪态
    • 处于运行态的进程向系统请求资源调度:运行态/执行态 阻塞态
    • I/O请求、资源分配完成:阻塞态 就绪态
    • 程序运行完成、出现错误、被系统终止:运行态 终止态

六、进程通信

  • 进程通信是指:进程之间的信息交换
    • PV操作是最低级的通信,高级通信方式是指以较高的效率传输大量数据的通信方式。
  • 高级通信分类:
    1. 共享存储:在各自拥有独立的数据存储区后,建立一个存储共享信息的共享存储区,如果要访问其他进程的信息,就到共享存储区中去查看,值得注意的是:对共享存储区域的访问是互斥的,同一时刻不能有两个进程访问共享存储区
      1. 基于共享数据结构的通信方式 共享区中的数据结构格式是固定的,属于低级的通信共享方式
      2. 基于共享存储区的通信方式 不固定共享区数据的结构及存储位置
    2. 消息传递:以格式化的消息为单位,利用原语传递消息,分为直接通信间接通信
      • 原语:发送原语、接收原语
      • 格式化消息:分为消息头(发送消息的ID等)和消息体(发送消息的内容和数据)
      • 直接通信:将消息放在消息发送缓冲队列的队尾,而进程通过接收发送原语来从头到尾发送队列中的消息
      • 间接通信:先将消息发送到一个中间实体(信箱)中,当进程需要消息传递时,只需要从信箱中取即可,为防止消息传递出错,在消息头中存储该信息的来源进程ID、目的进程ID等信息
    3. 管道通信:是一种特殊的消息传递方式
      • 用于连接一个读进程和一个写进程以实现它们之间的一个共享文件,称为Pipe文件
      • 一个管道只能实现半双工通信 ---- 同一时间段内只能允许单方向的通信
      • 管道通信中,各进程对于共享文件的访问也是互斥的,如:A进程在共享文件中进行读操作时,B进程不能进行写操作

七、线程

  • 线程是进程中执行运算的最小单位,是进程的一个实体,是被系统独立调度和分派的基本单位以小的开销来提高进程内的并发程度
  • 线程不拥有系统资源,但它可以与同属一个进程的其他线程共享进程拥有的所有资源
  • 一个线程可以创建和撤销另一个线程,同一进程中的不同线程是可以并发执行的

线程与进程的区别

  • 基本单位:在引入线程后,线程就成为调度和分派的基本单位进程拥有资源(资源分配)的基本单位
  • 并发性:不仅进程之间可以并发执行,同一进程的不同线程也可以并发执行
  • 资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以调用其隶属的进程的所有系统资源
  • 系统开销:在创建或撤销进程时,系统都需要分配或收回资源,系统开销明显大于创建或撤销线程的开销

线程与进程的联系

  • 一个线程只能属于一个进程,但一个进程可以拥有多个线程
  • 系统资源分配给进程,同一进程上的所有线程共享该进程的所有资源
  • 处理机分配给线程,即:真正在处理机上运行的是线程
  • 线程同样具有异步性,为了执行的准确性,也需要协作同步,不同进程之间的线程需要利用消息通信实现同步
  • 线程是进程的可调度实体,也是进程内的一个执行单元

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史


  1. 重点记忆,PCB的存储地位 ↩︎

撰写