授课语音

进程实体五状态模型进程同步


1. 进程实体

进程(Process) 是正在执行的程序的实例。它是操作系统资源分配的基本单位。每个进程都有以下几个重要的属性或实体:

  • 程序计数器(Program Counter, PC):指示当前进程执行到哪个指令。
  • 寄存器:保存进程运行时的临时数据,包括程序计数器、栈指针等。
  • 内存:每个进程拥有自己的独立虚拟地址空间,用于存储代码、数据、栈等。
  • 文件描述符:操作系统分配给进程的与文件或设备的关联标识符。
  • 进程状态:进程的当前执行状态,如就绪、运行、等待等。
  • 进程控制块(Process Control Block, PCB):操作系统为每个进程维护的数据结构,包含了所有关于进程的信息,如进程ID、状态、优先级、程序计数器等。

举例

  • 假设操作系统同时管理多个进程,每个进程的执行状态会被操作系统存储在其PCB中,以便管理和调度。

2. 五状态模型

进程在其生命周期中会经历不同的状态。五状态模型(也称为五阶段进程生命周期模型)是描述进程状态的一个常见模型,具体包括以下五个状态:

1. 就绪(Ready)

  • 定义:进程已加载到内存,并且拥有运行所需的所有资源,等待CPU的分配。此时,进程已经准备好执行,但由于其他进程正在运行,因此不能立即执行。
  • 描述:操作系统的调度程序会从就绪队列中选择一个进程来分配CPU资源。

2. 运行(Running)

  • 定义:进程正在执行指令。只有一个进程能够在同一时刻获得CPU执行的权限。
  • 描述:进程在运行状态下占用CPU,一旦运行完成或被中断,就会进入其他状态。

3. 阻塞(Blocked)

  • 定义:进程由于某种原因(如等待I/O操作完成)而无法继续执行,进入阻塞状态。阻塞的进程无法继续执行,直到所等待的事件发生。
  • 描述:例如,进程请求访问一个文件,但该文件正在被其他进程使用,进程会被阻塞,直到该文件可用。

4. 完成(Terminated)

  • 定义:进程执行完毕或被终止,操作系统回收进程所占用的资源,进程进入完成状态。
  • 描述:进程执行完毕后,会将控制权交还给操作系统,操作系统删除该进程的PCB。

5. 新建(New)

  • 定义:进程在创建时,处于新建状态。此时,操作系统正在为进程分配所需的资源(如内存、文件描述符等)。
  • 描述:操作系统创建一个新进程后,会初始化该进程的资源和PCB,之后将其转移到就绪队列。

五状态模型的过渡

  • 新建 状态,进程进入 就绪 状态;
  • 就绪 状态,进程可以被调度执行,进入 运行 状态;
  • 运行 状态,进程可能由于等待某些资源(如I/O)进入 阻塞 状态;
  • 一旦进程完成任务或被外部终止,它将进入 完成 状态;
  • 进程在不同状态之间的过渡由操作系统的进程调度算法进行管理。

示意图

New -> Ready -> Running -> Blocked -> Ready -> Running -> Terminated

3. 进程同步

进程同步是指多个进程在执行时,由于共享资源的限制,必须协调它们的执行顺序,以避免产生竞争条件(Race Condition)和确保系统的一致性和正确性。

进程同步的目标

  • 避免竞争条件:当多个进程同时访问共享资源时,若不加控制,会导致数据不一致、错误结果等问题。
  • 确保互斥性:只有一个进程可以在同一时间访问共享资源,其他进程必须等待。
  • 保证顺序执行:通过同步机制确保多个进程按照一定的顺序进行操作。

常见的同步机制

  1. 互斥锁(Mutex)

    • 定义:互斥锁是一种用来确保同一时间只有一个进程能够访问共享资源的机制。它是基于锁的原理实现的。
    • 使用场景:当多个进程或线程需要访问共享的资源时,互斥锁可以确保同一时刻只有一个进程能够执行访问操作。

    示例

    • 进程A和进程B都需要访问同一个文件,如果进程A持有锁,进程B就必须等待进程A释放锁。
  2. 信号量(Semaphore)

    • 定义:信号量是一种用于控制对共享资源访问的同步机制,主要有二进制信号量(0或1)和计数信号量(多个值)。
    • 原理:信号量可以用于表示可用资源的数量。信号量的值被用来决定进程是否可以访问共享资源。
    • 操作
      • P操作(等待操作):如果信号量的值大于0,则将信号量减1并继续执行;如果信号量为0,则进程阻塞。
      • V操作(释放操作):将信号量加1,释放资源。

    示例

    • 一个计数信号量可以用来表示一个有固定数量资源的池,进程通过P和V操作来获取和释放资源。
  3. 条件变量(Condition Variable)

    • 定义:条件变量用于进程间的同步,允许一个进程等待某个条件发生后再继续执行。
    • 原理:进程可以在某个条件满足之前进入等待状态,一旦条件满足,其他进程可以通知等待进程继续执行。

    示例

    • 生产者-消费者问题:生产者生产产品,消费者消费产品。当生产者没有产品时,消费者等待;当消费者没有消费产品时,生产者等待。

经典问题

  1. 生产者-消费者问题

    • 在一个有限缓冲区中,生产者生产产品,消费者消费产品,生产者和消费者必须进行同步,以避免缓冲区溢出或空缓冲区。
  2. 哲学家就餐问题

    • 五个哲学家坐在圆桌旁,间隔1根筷子,他们必须使用筷子进餐。问题在于如何避免死锁和确保每个哲学家都能有机会进餐。

总结

  • 进程实体:每个进程都有独立的内存空间和资源,操作系统通过PCB管理它们。
  • 五状态模型:进程从创建到终止会经历新建、就绪、运行、阻塞和完成五个状态,并在这些状态之间转换。
  • 进程同步:为了避免进程间的资源冲突,操作系统使用互斥锁、信号量、条件变量等同步机制,保证进程执行的顺序和正确性。

通过进程管理的有效实现,操作系统能够高效地管理多任务并保证系统的稳定性。

去1:1私密咨询

系列课程: