操作系统(11)进程描述与控制--5种IO状态(1)

11.1进程定义

进程给出以下定义:

一个正在运行的程序。

一个正在计算机上执行的程序实例。

能分配给处理器并由处理器执行的实体。

也可以把进程当成由一组元素组成的实体,进程的两个基本元素是程序代码(可能被执行相同程序的其他进程共享)与和代码相关联的数据集。假设处理器开始执行该程序代码,且我们把这个执行实体称为进程。在进程执行时,任意给定一个时间,进程都可以惟一地被表征为以下元素:

  • 标识符:跟这个进程相关的惟一标识符,用来区别其他进程。

  • 状态:如果进程正在执行,那么进程处于执行态。

  • 优先级:相对于其他进程的优先级。

  • 程序计数器:程序中即将被执行的下一条指令的地址。

  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享内存块的指针。

  • 上下文数据:进程执行时处理器的寄存器中的数据。

  • I/O 状态信息:包括显式的 I/O 请求、分配给进程的 I/O 设备(例如磁带驱动器)和被进程使用的文件列表等。

  • 审计信息:可包括处理器时间总和、使用的时钟数总和、时间限制、审计号等。

引用的被称为一个进程控制块,该控制块由操作系统创健和管理。

11.2进程状态

1. 运行态(Running)

  • 定义:进程正在占用 CPU,执行程序指令(对应你提到的 "执行态")。

  • 关键特征:同一时刻,单 CPU 系统中只有一个进程处于该状态;多 CPU 系统中,运行态进程数不超过 CPU 核心数。

  • 示例:打开的浏览器正在加载网页、视频播放器正在解码视频。

2. 就绪态(Ready)

  • 定义:进程已具备所有执行条件(如资源已分配、代码已加载),等待 CPU 调度。

  • 关键特征:进程排队等待 CPU,一旦获得 CPU,立即转为运行态。

  • 示例:同时打开的多个文档编辑器,除当前正在操作的一个(运行态),其余均处于就绪态。

3. 阻塞态(Blocked/Waiting)

  • 定义:进程因等待某类事件(如 I/O 完成、资源分配、信号)而暂停执行,即使有 CPU 也无法运行。

  • 关键特征:进程主动放弃 CPU,事件满足后需先转为就绪态,再等待调度。

  • 示例:进程发起磁盘文件读取请求后,等待数据传输完成的状态;进程等待键盘输入的状态。

4. 新建态(New)

  • 定义:进程刚被创建,操作系统尚未完成资源分配(如内存分配、标识符分配)的初始状态。

  • 关键特征:完成资源分配后,直接转为就绪态,等待 CPU 调度。

  • 示例:双击软件图标后,操作系统开始创建进程但未完成初始化的短暂状态。

5. 终止态(Terminated)

  • 定义:进程完成执行(正常退出)或因错误 / 信号终止(异常退出),操作系统回收其资源的状态。

  • 关键特征:进程不再参与调度,资源(内存、CPU、I/O 设备)被完全释放。

  • 示例:关闭文档编辑器后,进程执行完收尾操作(保存配置、释放内存)后的状态。

状态转换逻辑(核心流转路径)

  1. 新建态 → 就绪态:操作系统为新进程分配完内存、标识符等资源,进程具备执行条件。

  2. 就绪态 → 运行态:CPU 空闲时,调度器选择优先级最高(或按调度算法)的就绪进程,分配 CPU。

  3. 运行态 → 就绪态:时间片用完(如 CPU 分配给该进程的时间结束),或有更高优先级进程进入就绪态,当前进程被抢占 CPU。

  4. 运行态 → 阻塞态:进程执行过程中需要等待事件(如调用read函数读取文件、等待信号量),主动放弃 CPU。

  5. 阻塞态 → 就绪态:进程等待的事件完成(如文件读取成功、信号到达),由操作系统唤醒,转为就绪态等待调度。

  6. 运行态 → 终止态:进程执行完main函数(正常退出),或因错误(如段错误)、信号(如kill -9)终止。

相关推荐
。7 分钟前
【无标题】
linux·服务器·负载均衡·lvs
weixin_4166679610 分钟前
linux ping命令详解
linux·运维·php
硅基手札20 分钟前
【Linux 内核专栏 17】进程间通信 IPC(上)— 管道·信号·System V IPC·mmap·文件锁
linux·运维·服务器·stm32·单片机·mcu
小能喵21 分钟前
kismet -h 帮助信息 中文版
linux·服务器·网络
AR-26710-26 分钟前
Linux Day21——systemctl操作
linux·运维
额额额对了1 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_activate调用流程与实战(七十九)
linux·运维·服务器·gstreamer音视频·gstreamer音视频进阶
Escalating_xu2 小时前
【Linux 网络编程】网络命令加餐:用 ping、netstat、watch 和 pidof 排查服务问题
linux·运维·网络
mounter6252 小时前
现代 Linux 内核在异构内存与硬件演进下的架构变革:压缩 RAM、CXL 与分布式内存
linux·linux kernel·kernel
cccccc语言我来了3 小时前
Linux (11) 进程控制
linux·运维·数据库