【OS笔记04】:进程和线程2-进程控制

文章目录

3.3 进程控制

进程控制是进程和处理机管理中的一项重要任务。它指的是操作系统使用特定的程序来创建进程、撤销进程,以及完成进程状态间的转换。

进程控制是操作系统的底层核心功能之一,由内核完成。内核在执行这些操作时,通常是通过执行各种原语来实现的。

进程的状态及其转换

由于系统资源的有限性,进程在运行过程中不能总是获得其所需的全部资源,因此呈现出走走停停的状态。例如,当一个进程因缺少必要的资源而无法继续执行时,它必须等待。一旦获得了所需资源,它就会转变为就绪状态,并可以被CPU调度执行。

进程的三种基本状态

一个进程在任意时刻,都处于以下三种基本状态之一:

  • (1) 运行态 (Running): 进程正在占用处理机(CPU)执行。
  • (2) 就绪态 (Ready): 进程已经具备了运行的所有条件(如获得了必要的资源),只因为处理机正被其他进程占用而处于等待处理机的状态。
  • (3) 等待态 (Waiting/Blocked): 进程因等待某一事件的发生(例如等待I/O操作完成)而暂时不能运行的状态。

随着进程自身的进展和外部条件的变化,进程的状态会在这三个基本状态之间进行转换。这个转换过程由操作系统完成,对用户是透明的。

原语 (Primitive)

如果进程控制程序在执行时被其他并发程序打断,必然会引起系统混乱。为了解决这个问题,操作系统引入了"原语"的概念。

  • 定义: 所谓原语,是机器指令的延伸,是为了完成某些特定功能而编制的一段系统程序。
  • 特性: 为了保证操作的正确性,在许多机器中规定,执行原语操作时要屏蔽中断。原语不能并发执行 ,以保证其操作的不可分割性(原子性)
  • 本质: 原语是由若干条指令构成的"原子操作 (atomic operation)",作为一个整体而不可分割。许多系统调用就是通过原语来实现的。

进程控制原语

1. 进程的创建原语: create

主要功能:

  1. 申请一个空白的PCB (进程控制块),并为新进程指定一个唯一的PID (进程标识符)。
  2. 为新进程分配资源,装入进程的实体:包括程序和数据。
  3. 将新进程的PCB初始化:设置其状态为就绪态,并设定优先级、内存地址等。
  4. 将新进程加入到就绪队列中

两种创建方式:

  • (1) 系统程序模块统一创建(常见于批处理系统)。
  • (2) 父进程创建。
父进程和子进程
  • 进程树: 用于描述进程家族关系的"有向树"。图中的结点代表进程。

  • 父子关系: 在进程A创建了进程B后,称A是B的父进程,B是A的子进程。进程可以由系统创建,也可以由父进程创建。

  • 父子进程关系特点:

    1. 子进程继承父进程的资源。
    2. 父、子进程可以并发执行。
    3. 父进程可以等待子进程执行结束之后再执行。
    4. 父进程撤销,子进程一般也撤销。
2. 进程的撤销原语: kill

撤销的原因:

  • 正常终止。
  • 因错误而非正常终止。
  • 祖先进程要求终止某个子进程。

主要功能:

  1. 从系统的PCB表中找到指定进程的PCB。
  2. 回收该进程所占用的全部资源。
  3. 若该进程还有子孙进程,回收它们所占有的全部资源。
  4. 释放被终止进程的PCB,并从原来所在的队列中摘走。
3. 进程阻塞原语: block

起因:

  • 当一个正在运行的进程,因所需资源无法满足而不能继续运行时,进程会调用阻塞原语,使自己变为等待状态。进程的阻塞是进程自身的一种主动行为

主要功能:

  1. 主动放弃CPU。
  2. 保护现行进程的CPU现场。
  3. 把该进程的现行状态由"运行"改成"等待",并将其插入到具有相同事件的等待队列。
  4. 转到进程调度程序,重新挑选一个合适的就绪进程投入运行。
4. 进程唤醒原语: wakeup

唤醒过程:

  • 被阻塞的进程不能自己唤醒自己。当它所期待的事件出现时(如I/O完成或其所期待的数据已经到达),则由有关进程(比如,用完并释放了该I/O设备的进程,或者是负责事件监测的系统进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。

主要功能:

  1. 把进程从相应的等待队列中摘下。
  2. 将其现行状态改为就绪态,然后把该进程插入到就绪队列中。
  3. 如果被唤醒进程比当前运行进程有更高的优先级,则设置重新调度标志。

相关习题与解析

选择题
  1. 分配到必要的资源并获得处理机时的进程状态是 ______。

    • A. 就绪状态
    • B. 撤销状态
    • C. 执行状态 (✓)
    • D. 阻塞状态

    解析: 题目描述了两个条件:"分配到必要资源"和"获得处理机",同时满足这两个条件的只有执行状态。

  2. 下列进程状态变化中,______ 变化是不可能发生的。

    • A. 等待 → 就绪
    • B. 等待 → 运行 (✓)
    • C. 运行 → 等待
    • D. 运行 → 就绪

    解析: 处于等待态的进程在所等待的事件发生后,会先进入就绪队列,变为就绪态,等待CPU调度,而不能直接跳到运行态。

  3. 当 ______ 时,进程从执行状态转变为就绪状态。

    • A. 等待的事件发生
    • B. 时间片到 (✓)
    • C. 等待某一事件
    • D. 进程被调度程序选中

    解析: 进程从执行态变为就绪态的典型情况是时间片用完,CPU被剥夺。A是等待态到就绪态;C是运行态到等待态;D是就绪态到运行态。

  4. 当一个进程处于 ______ 的状态时,称为等待状态。

    • A. 它正在等着分给它中央处理器
    • B. 它正等着协作进程的一个消息 (✓)
    • C. 它正等着分给它一个时间片
    • D. 它正等着进入内存

    解析: 等待状态(阻塞态)是因等待某一事件而发生,如等待I/O、等待消息等。A和C描述的是就绪态。

  5. 如果系统中有n个进程,则就绪队列中进程的个数最多为 ______。

    • A. n
    • B. 1
    • C. n-1 (✓)
    • D. n+1

    解析: 在单处理机系统中,最多只有一个进程处于运行状态。因此,如果系统总共有n个进程,那么处于就绪态的进程最多是n-1个(此时没有进程处于等待态)。

  6. 设系统中有n (n>2) 个进程,且当前不在执行进程调度程序,试考虑下述4种情况:不可能发生的情况是 ______。

    • A. 有1个运行进程,n-1个就绪进程,没有进程处于等待状态。
    • B. 有1个运行进程,没有就绪进程,n-1个进程处于等待状态。
    • C. 有1个运行进程,有1个就绪进程,n-2个进程处于等待状态。
    • D. 没有运行进程,有2个就绪进程,n个进程处于等待状态 (✓)

    解析: 选项D中,"没有运行进程"和"有2个就绪进程"是矛盾的。只要就绪队列不为空,并且没有执行调度程序,系统就必然会有一个进程处于运行状态。同时,"有2个就绪进程,n个进程处于等待状态"加起来总进程数为n+2,与题目给定的n个进程不符。

  7. 对进程的管理和控制使用 ______。

    • A. 指令
    • B. 信号量
    • C. 原语 (✓)
    • D. 信箱

    解析: 根据课件定义,操作系统通过执行各种原语来完成对进程的控制。

  8. 下述哪一个选项,体现了原语的主要特点 ______。

    • A. 并发性
    • B. 异步性
    • C. 不可分割性 (✓)
    • D. 共享性

    解析: 原语最重要的特性就是原子性或不可分割性,保证其在执行期间不会被中断。

  9. 下面对父进程和子进程的叙述不正确的是 ______。

    • A. 撤销父进程之时,可以同时撤销其子进程
    • B. 父进程和子进程之间可以并发
    • C. 父进程可以等待所有子进程结束后再执行
    • D. 父进程创建了子进程,因此父进程执行完了子进程才能运行 (✓)

    解析: 父子进程可以并发执行,D选项的描述是错误的。

  10. 下面所述步骤中,______ 不是创建进程所必需的。

    • A. 建立一个进程控制块
    • B. 为进程分配内存
    • C. 将进程控制块链入就绪队列
    • D. 由调度程序为进程分配CPU (✓)

    解析: 为进程分配CPU是进程调度 的工作,发生在进程创建完成并进入就绪态之后,而不是创建过程本身的一部分。

填空与简答题
  1. 在一个单处理机系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有 ① 个,最少有 ② 个。

    • 参考答案: ① 4 ② 0

    解析:

    • 最多: 5个进程中,1个正在运行(处于用户态),其余4个都可以处于就绪状态。所以最多为4。
    • 最少: 5个进程中,1个正在运行,其余4个可能都处于等待(阻塞)状态,那么就绪队列就为空。所以最少为0。
  2. 如果系统中有n个进程,则等待队列中进程的个数最多可以为 ______。

    • 参考答案: n

    解析: 理论上,所有n个进程都可能因为等待某个事件而全部处于等待状态。例如,它们都在等待用户的输入。

  3. 下面关于进程的叙述中,不正确的有 _____ 条。

    • ① 进程申请CPU得不到满足时,其状态变为等待状态。
    • ② 在单CPU系统中,任一时刻都有一个进程处于运行状态。
    • ③ 优先级是进行进程调度的重要依据,一旦确定不能改变。
    • ④ 进程获得处理机而运行是通过调度而实现的。
    • 参考答案: 3 (即 ① ② ③)

    解析:

    • 错误 。进程申请CPU得不到满足时,处于就绪态,而不是等待态。等待态是等待CPU以外的资源或事件。
    • 错误。如果所有进程都在等待I/O,或者系统处于空闲状态,就没有进程在运行。
    • 错误。许多调度算法采用动态优先级,进程的优先级是可以改变的。
    • 正确。进程从就绪态到运行态正是由进程调度程序完成的。
相关推荐
悠哉悠哉愿意2 小时前
【ROS2学习笔记】URDF 机器人建模
笔记·学习·机器人·ros2
智者知已应修善业3 小时前
【51单片机32个灯,第一次亮1,2。第二次亮2,3。第三次亮3,4。。。。】2023-2-10
c语言·经验分享·笔记·嵌入式硬件·51单片机
nnerddboy3 小时前
QT(c++)开发自学笔记:1.串口
c++·笔记·qt
岑梓铭4 小时前
计算机网络第四章(10)——网络层《路由算法+路由协议》
网络·笔记·计算机网络·考研·智能路由器·408
YongCheng_Liang5 小时前
网络工程师笔记10-BGP协议
运维·网络·笔记
JJJJ_iii5 小时前
【深度学习04】PyTorch:损失函数、优化器、模型微调、保存与加载
人工智能·pytorch·笔记·python·深度学习·机器学习
lingggggaaaa6 小时前
小迪安全v2023学习笔记(九十七天)—— 云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
java·笔记·学习·安全·网络安全·云原生·kubernetes
十安_数学好题速析6 小时前
系数调整:四项平方和的最小值攻略
笔记·学习·高考
RickyWasYoung7 小时前
【笔记】非线性状态空间方程线性化时为什么要以平衡点为基准?
笔记