IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【操作系统 | 进程】 行为模型、描述、控制 -> 正文阅读

[系统运维]【操作系统 | 进程】 行为模型、描述、控制

一、什么是进程?

进程的多种定义:

  • 一个正在执行的程序。
  • 一个正在计算机上执行的程序实例。
  • 能分配给处理器并偶处理器执行的实体。
  • 由一组命令、一个当前状态、一组相关系统资源表征的活动单元。
  • 由一组 “元素” 组成的实体。

二、进程行为模型

进程行为模型用以描述进程所表现出的行为。

1、两态模型

操作系统控制进程的执行,包括确定交替执行方式、给进程分配资源,而我们需要描述进程所表现出的行为。

我们知道,进程要么正在执行、要么未执行,因而构建最简单的两状态模型,进程处于以下两种状态:运行态、非运行态。
两态模型
操作系统创建进程时,该进程以未运行态加入,等待执行机会。时不时中断当前运行进程,分配器将选择一个新进程运行,前一个进程转换为未运行状态,后一个进程转换为运行状态。

① 进程创建

  • 新的任务:任务运行开始
  • 交互登录:终端用户登录
  • 操作系统创建:操作系统创建进程,代表用户程序执行某些功能
  • 现有进程派生:模块化设计,父进程派生子进程

② 进程终止

计算机系统提供表示进程完成的方法,通常批处理作业中包含Halt指令产生一个中断,告诉操作系统进程已经完成。而对于交互式应用程序,何时终止取决于用户行为。在分时系统中,用户退出系统、关闭终端时,终止该用户的进程。

  • 正常完成:任务运行结束
  • 超过时限:运行时间超出限制
  • 无可用内存:无法满足所需内存空间
  • 超出范围:访问不存在的内存单元
  • 保护错误:访问不允许使用的资源 / 访问访问方式不正确(向只读文件中写入)
  • 算术错误:进行被禁止的运算(除0、大于可接纳数字)
  • 时间超出:时间发生时间超过规定最大值
  • I/O失败:输入输出错误(找不到文件、遇到磁盘坏区、从打印机中读)
  • 无效指令:执行不存在的指令(转移到数据区企图执行数据)
  • 特权指令:试图使用为操作系统保留的指令。
  • 数据误用:错误类型 / 未初始化的数据
  • 操作系统干涉:操作系统终止进程(出现死锁)
  • 父进程终止:父进程终止,子进程可能会被自动终止
  • 父进程请求:父进程拥有终止子进程的权利

2、五态模型

队列是 “先进先出(FIFO)” 表,对于可运行进程,处理器以一种轮转(round-robin)方式操作(单纯按时间划分,出队列执行,时限到重新入队列,又称时分复用)。

这种简单的描述方式考虑不够全面:

  • 忽略I/O阻塞、优先级等要素,故将非运行态划分为:就绪态(Ready)、阻塞态(Blocked)。
  • 部分进程已创建控制块而未入内存,故引入:新建态(New)。
  • 进程结束后,为便于操作系统回收、处理相关信息,故引入:退出态(Exit)。
进程状态描述
新建态新创建进程,因进程控制块创建但未加载至内存,而未被加入可执行组
就绪态进程做好准备,有机会就执行。
运行态进程正在执行
阻塞态(等待态)进程因事件无法执行(如I/O操作)
推出态从可执行组释放:自身停止 / 被取消

五态模型
状态转换:

状态转换相关事件
空 → 新建创建一个执行程序的新进程
新建 → 就绪表示操作系统准备好接纳新进程(基于当前进程数限制虚存, 防止性能下降)
就绪 → 运行调度器 / 分派器选择处于就绪态的新进程进入运行态
运行 → 退出进程自身已完成 / 取消
运行→ 就绪① 正在运行进程到达“允许不中断执行”的最大时间段
② 高优先级进程B等待事件发生就绪 → 低优先级进程A被进程B抢占(preempted)中断进入就绪态
运行 → 阻塞进程请求必须等待事件,对操作系统的请求通常以系统服务调用的形式发出。
阻塞 → 就绪进程等待事件发生
就绪 → 退出
阻塞 → 退出
① 父进程可终止子进程
② 父进程终止 → 子进程同时终止

就绪队列 & 阻塞队列:

3、七态模型

引入“交换”:
前面介绍了三个基本状态:就绪态运行态阻塞态,很多系统都围绕这三种状态具体构建。

但 I/0 活动原慢于CPU,使得后者大多数时间处于空闲状态,队列的改善也为完全解决此问题,可能出现内存中所有进程都在等待 I/0 的现象,所以出现了两种解决方法:

  • 扩充内存: 容纳进程数更多,但带来两个问题:①内存大小增加过大价格随之增加。 ② 需求速度快于价格下降速度 。
  • 交换: 将进程部分 / 全部转移到磁盘中,内存中不存在就绪进程,将被阻塞进程换出至磁盘中的挂起队列(suspend queue),操作系统要么从挂起队列中取出一个进程,要么接受新进程放入内存运行,由于磁盘 I/0 速度很快 ,因此 交换 通常情况下会提升性能。

为更好的描述交换,进程行为模型必须增加一个状态:挂起态

  • 当内存中所有进程处于阻塞态,可将一个进程置为挂起态,并调入另一个进程(内存空间的交换)。

由于将被阻塞的挂起进程取回内存没有意义,事件仍未发生,所以应考虑两个因素:

  • 阻塞与否
  • 挂起与否

容纳 2 × 2组合所需的 4个状态:

进程状态描述
就绪态进程在内存 可执行
阻塞态进程在内存 等待事件
就绪 / 挂起态进程在外存 只要载入内存就可执行
阻塞 / 挂起态程在内存 等待事件

在这里插入图片描述
新增状态转换:

状态转换相关事件
阻塞 → 阻塞 / 挂起
阻塞 / 挂起 → 就绪 / 挂起
就绪 / 挂起 → 就绪
就绪 → 就绪 / 挂起
新建→ 就绪 / 挂起
新建→ 就绪
阻塞 / 挂起 → 阻塞
运行 → 就绪 / 挂起
各种状态 → 退出

挂起态进程特点:

  1. 不能立即执行
  2. 阻塞、挂起分离考虑(阻塞事件的发生不会立即换入内存)
  3. 为阻止进程运行,可通过代理(进程自身、操作系统)将其置于挂起态。
  4. 除非代理显式地命令状态转换,否则此状态无法转移。

进程挂起原因:

事件说明
交换操作系统需要释放内存空间
其他OS原因挂起后台进程、工具进程、可能导致问题的进程
交互式用户请求用户请求,便于进行调试、关联资源使用
定时周期性执行进程(记账、系统监视进程)
父进程请求① 父进程检查、修改被挂起进程
② 父进程协调后台进程间的行为

三、进程描述

操作系统分派、调度进程,并为其分配资源,相应基本服务请求。要控制进程并管理资源,需要哪些信息?

1、操作系统控制结构

操作系统为管理进程、资源,掌握状态,构建并维护其每个管理实体的信息表,共有以下四种:
控制表通用结构

① 内存表(memory table)

跟踪内存(实存)、外存(虚存),内存部分为操作系统保留,其余部分供进程使用,包含信息如下:

  • 分配给进程的内存、外存。
  • 内存块、虚存块的任何保护属性(哪些进程访问某些共享内存区域)
  • 管理虚存所需要的任何信息

② I/O 表(I/O table)

操作系统使用 I/0 表管理计算机中的 I/0 设备、通道,进行 I/0 操作时,操作系统知道 I/0 操作状态、I/0 传送的源头、目标内存单元。

③ 文件表(file table)

包含信息如下:

  • 文件存在与否
  • 文件在外存中的位置、当前状态、其他属性信息

④ 进程表(process table)

操作系统为方便管理进程,维护进程表。

这 4种表 可以某种方式链接 / 交叉使用,内存、I/0、文件代表进程被管理,所以进程表中有这些资源 直接 / 间接 的引用。

2、进程控制结构

操作系统管理进程需要获得的信息:进程位置、进程属性(进程ID、进程状态)

① 进程位置

进程映像: 程序、数据、栈、属性 的 集合

项目说明
用户程序待执行的程序
用户数据用户空间可修改部分(程序数据、用户栈区域、可修改的程序)
每个进程都有 一 / 多 个 (LIFO) 栈
用以保存参数、过程调用地址、系统调用地址
进程控制块控制进程所需数据

② 进程属性

进程标识符(process identification)

为每个进程分配唯一的数字标识符,可以简单的标识为主进程表中的一个索引;否则必须有一个映射,方便定位相应的表。

处理器状态信息(processor statement information)

由处理器寄存器的内容组成,运行要给进程时,进程信息一定在寄存器中。中断进程时,必须保存该寄存器所有信息,以便进程恢复时可以恢复所有这些信息。

进程控制信息(process control information)

操作系统控制、协调各种活动线程的额外信息。

③ 进程控制块

进程控制块信息分为三类:

  • 进程 标识 信息
  • 进程 状态 信息
  • 进程 控制 信息

处理器状态信息
虚存中的用户进程
进程控制块中的经典元素:

标识符、用户可见状态寄存器、控制和状态寄存器、栈指针、调度和状态信息、数据结构、进程间通信、进程特权、存储管理、资源所有权及使用情况。

四、进程控制

1、执行模式

  • 用户模式(非特权模式): 用户程序通常在该模式下运行
  • 内核模式(特权模式、系统模式、控制模式): 操作系统的内核,包含重要系统功能的部分(程序状态字控制、原始 I/0 指令、内存管理、进程管理、中断处理、记账监视)

2、进程创建

进程创建步骤:

  1. 为新进程分配唯一进程标识符。
  2. 为进程分配空间。
  3. 初始化进程控制块。
  4. 设置正确链接。
  5. 创建 / 扩充其他数据结构。

3、进程切换

进程切换可在任何时刻发生,操作系统区分两种系统中断:中断、陷阱。
进程执行的中断机制:

机制原因用途
中断来自当前执行指令的外部对异步外部事件的反应
陷阱与当前执行指令相关处理一个错误 / 异常条件
系统调用显式请求调用操作系统函数

普通中断(interrupt):

  • 时钟中断: 当前执行进程达最大允许执行时间 [时间片],进程置为就绪态。
  • I/O中断: 操作系统确认是否已发生 I/0 活动。并决定是否继续执行当前处于运行态的进程,还是让高优先级进程抢占该进程。
  • 内存失效: 操作系统遇到引用不在内存的虚存地址,需将内存块从外存调入内存,调如内存 I/0 致使进程置于阻塞态,进程切换。

陷阱(trap):

操作系统确认 错误 / 异常 是否致命:

  • 致命: 进程置为退出态,切换进程。
  • 不致命: 尝试恢复程序,切换进程 / 继续当前进程。

系统调用(supervisor call):

如用户进程执行 I/0 请求指令,I/0 代码属于操作系统的一部分,此时用户进程转为阻塞态,进程切换。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:50:23  更:2021-08-11 12:50:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:26:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码