操作系统(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)终止。

相关推荐
有谁看见我的剑了?2 小时前
linux 添加硬盘后系统识别不到硬盘处理
linux·运维·服务器
yc_12244 小时前
用 Visual Studio 远程调试 Linux:从零到流畅的完整指南
linux·ide·visual studio
计算机安禾4 小时前
【Linux从入门到精通】第31篇:防火墙漫谈——iptables与firewalld防护指南
linux·运维·php
下一页盛夏花开4 小时前
ubuntu 20中安装QT以后出现红色空心断点
linux·运维·ubuntu
sanshanjianke5 小时前
Thunderobot 911ME 笔记本 Linux 风扇控制研究
linux
fengyehongWorld8 小时前
TeraTerm ttl脚本登录wsl
linux·teraterm
乌托邦的逃亡者8 小时前
Linux中如何检测IP冲突
linux·运维·tcp/ip
一曦的后花园8 小时前
linux搭建promethes并对接node-exporter指标
linux·运维·服务器
乌托邦的逃亡者9 小时前
CentOS/Openeuler主机中,为一个网卡设置多个IP地址
linux·运维·网络·tcp/ip·centos
拾贰_C9 小时前
【OpenClaw | openai | QQ】 配置QQ qot机器人
运维·人工智能·ubuntu·面试·prompt