一、 进程三态模型

进程在生命周期中会经历以下三种基本状态:

状态 含义 转换条件
就绪(Ready) 已获得除CPU外的所有资源,等待CPU调度 创建后、时间片用完、被抢占
运行(Running) 正在CPU上执行 被调度器选中
阻塞(Waiting/Blocked) 等待某事件(如I/O完成) 请求资源/事件未满足

状态转换图:

  • 就绪 → 运行:进程被调度。
  • 运行 → 就绪:时间片用完或被更高优先级抢占。
  • 运行 → 阻塞:请求I/O或等待事件。
  • 阻塞 → 就绪:等待的事件完成。
    进程三态模型状态转换图

二、 进程五态模型(引入挂起)

为适应虚拟内存和资源管理,增加:

  • 挂起就绪:进程在外存中,但可被调度。
  • 挂起阻塞:在外存中等待事件。

在这里插入图片描述

三、 进程控制块(PCB)

PCB是进程存在的唯一标志,也是操作系统管理和调度进程的核心数据结构。

  • 每个进程有一个PCB,包含:

    • 进程标识符(PID)
    • 程序计数器、寄存器
    • 进程状态
    • 优先级
    • 内存指针、I/O状态等
  • PCB 的组织方式
    操作系统如何管理成千上万个PCB?主要有两种方式:
    链接方式:将具有同一状态的PCB链接成一个队列。例如:就绪队列、阻塞队列。
    索引方式:建立索引表(就绪索引表、阻塞索引表),记录PCB在内存中的地址。

四、 练习

题目1 :某进程在运行过程中请求等待I/O操作,则该进程的状态变化是( )。

A. 运行 → 就绪
B. 运行 → 阻塞
C. 就绪 → 运行
D. 阻塞 → 就绪

答案:B

解析:进程在运行时请求I/O,若I/O不能立即完成,则进入阻塞状态。

题目2:下列关于进程状态的叙述中,正确的是( )。

A. 进程从阻塞状态只能转换为运行状态
B. 进程从运行状态只能转换为阻塞状态
C. 进程从就绪状态只能转换为运行状态
D. 进程从阻塞状态只能转换为就绪状态

答案:D

解析:阻塞状态只能先转换为就绪状态,再被调度为运行状态。运行状态可以转为就绪(时间片完)或阻塞(I/O)。就绪状态只能转为运行。

题目3:下列哪种情况会导致进程从运行状态变为就绪状态( )。

A. 进程执行了I/O操作
B. 进程的时间片用完
C. 进程等待信号量
D. 进程创建子进程

答案:B

解析:时间片用完时,操作系统剥夺当前进程CPU,将其放回就绪队列。I/O操作和等待信号量会导致运行→阻塞,创建子进程通常不影响当前进程状态。

题目4:下列关于进程状态的叙述中,错误的是( )。
A. 进程从阻塞状态只能转换为就绪状态
B. 进程从运行状态只能转换为阻塞状态或就绪状态
C. 进程从就绪状态只能转换为运行状态
D. 进程从运行状态可以直接转换为终止状态

答案:B

解析:运行状态可以转换为:
就绪(时间片用完/抢占)
阻塞(请求资源/事件)
终止(进程执行结束/异常退出)。
因此,B选项“只能转换为阻塞或就绪”是错误的,忽略了终止状态。

题目5:进程在挂起阻塞状态时,其所等待的I/O事件已完成。操作系统应将该进程转换为( )。
A. 运行
B. 就绪
C. 挂起就绪
D. 阻塞

答案:C

解析:挂起阻塞状态的进程位于外存。当等待的事件发生时,进程不能直接进入就绪(因为还在外存),而是先变为挂起就绪。只有被激活(解挂)后,才会进入真正的就绪队列。

题目6:下列选项中,不可能导致进程从运行状态直接转换到挂起就绪状态的是( )。
A. 操作系统内存紧张,将当前进程换出
B. 用户请求暂停该进程
C. 进程执行了I/O操作且I/O设备忙
D. 父进程主动挂起子进程

答案:C

解析:A、B、D 都可以直接让运行态进程被挂起(先剥夺CPU,再换出内存)。
C 执行I/O且设备忙,会进入阻塞态,而不是直接挂起。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐