- 操作系统教程
- 操作系统 - 首页
- 操作系统 - 需求
- 操作系统 - 概述
- 操作系统 - 历史
- 操作系统 - 组成部分
- 操作系统 - 结构
- 操作系统 - 架构
- 操作系统 - 服务
- 操作系统 - 属性
- 操作系统 - 周转时间 & 调度等待时间
- 操作系统进程
- 操作系统 - 进程
- 操作系统 - 进程调度
- 操作系统 - 调度算法
- 先来先服务 (FCFS) 调度算法
- 最短作业优先 (SJF) 调度算法
- 轮转 (Round Robin) 调度算法
- 最高响应比优先 (HRRN) 调度算法
- 优先级调度算法
- 多级队列调度
- 上下文切换
- 进程操作
- 彩票进程调度
- 预测 SJF 调度的突发时间
- 竞争条件漏洞
- 临界区同步
- 互斥同步
- 进程控制块 (PCB)
- 进程间通信 (IPC)
- 抢占式和非抢占式调度
- 操作系统同步
- 进程同步
- 操作系统内存管理
- 操作系统 - 内存管理
- 操作系统 - 虚拟内存
- 操作系统存储管理
- 操作系统 - 文件系统
- 操作系统类型
- 操作系统 - 类型
- 操作系统杂项
- 操作系统 - 多线程
- 操作系统 - I/O 硬件
- 操作系统 - I/O 软件
- 操作系统 - 安全
- 操作系统 - Linux
- 考试题库及答案
- 考试题库及答案
- 操作系统有用资源
- 操作系统 - 快速指南
- 操作系统 - 有用资源
- 操作系统 - 讨论
操作系统 - 进程操作
什么是操作系统中的进程?
进程是正在执行的程序,在其生命周期中会经历多个状态。在每个状态下,进程都会经历某些操作,这些操作使进程能够执行到完成。
进程的状态
进程的不同状态如下:
- 新建 - 进程被创建。
- 就绪 - 进程已准备好所有资源分配,并等待 CPU 分配。
- 运行 - 进程中的指令正在 CPU 中执行。
- 等待 - 进程正在等待输入/输出或任何其他事件的完成。
- 终止 - 进程完成执行并退出系统。
下图描述了进程状态:
操作系统中的不同进程操作
当进程处于特定状态时,或者当进程从一个状态转换到另一个状态时,就会发生进程操作。进程主要有四种操作:
- 进程创建
- 进程调度
- 进程抢占
- 进程阻塞
- 进程终止
进程创建
进程进入系统时经历的第一个操作是进程创建。它涉及进程的形成,并与进程的“新建”状态相关联。进程创建是由于以下任何事件引起的:
- 系统初始化 - 当计算机启动时,会创建许多系统进程和后台进程。
- 用户请求 - 用户可以启动程序的执行,从而创建进程。
- 子进程系统调用 - 运行中的进程可以通过进程创建系统调用创建子进程。
- 批处理系统 - 批处理系统可以启动批处理作业。
进程可以使用 fork() 函数由另一个进程创建。创建进程称为父进程,创建的进程称为子进程。子进程只有一个父进程,但父进程可以有多个子进程。父进程和子进程具有相同的内存映像、打开的文件和环境字符串。但是,它们具有不同的地址空间。
下图演示了使用 fork() 创建进程:
进程调度
当处于就绪状态的进程被调度程序选中执行时,就会发生进程调度操作。进程调度是根据使用的调度算法启动的。当 CPU 空闲且就绪队列中有进程时,为正在运行的进程分配的时间片到期时,高优先级进程进入系统或发生硬件中断时,可能会发生这种情况。当新的进程被分配到 CPU 时,其状态将从其进程控制块 (PCB) 中加载。
进程抢占
进程抢占是一种操作,通过该操作,正在运行的进程的执行被挂起,并且 CPU 选择另一个进程执行。当正在运行的进程的时间片到期时,高优先级进程进入就绪队列或发生硬件中断时,可能会发生进程抢占。
CPU 中正在执行的进程的抢占会导致称为上下文切换的现象。在这里,即将离开进程的上下文或状态存储在其 PCB 中,以便在需要时可以重新加载它,并且可以从与之前相同的点恢复执行。
下图演示了进程调度和进程抢占:
进程阻塞
如果正在运行的进程需要发生某些事件才能继续执行,则该进程将被阻塞并置于“等待”状态,并从 CPU 中交换出来。此事件可能是输入/输出系统调用,因为 I/O 事件在主内存中执行,不需要处理器。
在这里,当进程本身需要时,操作系统会阻塞进程。事件完成后,进程再次进入就绪状态。
下图演示了进程阻塞:
进程终止
进程终止是结束进程并释放进程已持有的所有资源的操作。进程终止后将不复存在。
与进程创建类似,进程终止可能有多个原因,如下所示:
- 进程已完成其最后一条指令的执行,因此操作系统将其终止。
- 如果其任务不再相关,则父进程可以终止子进程。子进程在其终止之前将其状态信息发送给父进程。此外,当父进程终止时,其子进程也会终止,并且如果父进程终止,则子进程无法运行。
- 如果存在服务错误,则操作系统可以终止进程。
- 硬件故障也可能导致进程终止。
在大多数情况下,进程终止发生在进程执行完成时。所涉及的步骤如下:
- 父进程向子进程发出 SIGTERM 消息作为启动终止的信号。
- 接收到此信号后,子进程将执行清理过程,例如释放已分配的资源、关闭共享文件、放弃对共享变量和表的访问等。
- 然后子进程退出,控制权返回给父进程或操作系统。