操作系统学习-进程的描述与控制

文章目录

  • 前言
  • 前趋图和程序执行
  • 进程的描述
    • 定义和特征
    • 进程的基本状态及转换
      • 三种基本状态(内存中)
      • 创建和终止状态(外存)
    • 挂起操作
    • 进程管理中的数据结构
  • 进程控制
    • 操作系统内核
    • 进程的创建
    • 进程的终止
    • 进程的阻塞与唤醒
    • 进程的挂起与激活
  • 进程同步
    • 进程同步的基本概念
    • 硬件同步机制
      • 优缺点
    • 信号量机制
  • 总结


前言

本博客仅做学习笔记,如有侵权,联系后即刻更改

科普:


前趋图和程序执行

  1. 前趋图

是有向无循环图

  • 前趋关系
    表示一个执行完成之前,另一个不能开始
  1. 程序顺序执行

特征

  1. 顺序性
  2. 封闭性
    程序独占全机资源
  3. 可再现性
    程序重复执行,获得的结果相同
  1. 程序并发执行

前提

  • 并发执行的操作不存在前趋关系

特征

  1. 间断性
  2. 失去封闭性
  3. 不可再现性

进程的描述

定义和特征

  1. 定义

进程控制块(Process Control Block)

  • 程序的一次执行
  • 程序及其数据在数据机上顺序执行的活动
  • 具有独立功能的程序在一个数据集合运行的过程,是系统进行资源分配和调度的一个独立单位
  1. 特征
  1. 多态性
  2. 并发性
  3. 独立性
  4. 异步性

进程的基本状态及转换

三种基本状态(内存中)

  1. 就绪状态
  2. 执行状态
  3. 阻塞状态

三种基本状态的相互转换

操作系统学习-进程的描述与控制_第1张图片

创建和终止状态(外存)

创建步骤:

  1. 申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息
  2. 然后为该进程分配运行时所必须的资源
  3. 把该进程转入就绪状态并插入就绪队列之中

终止步骤:

  1. 等待操作系统进行善后处理
  2. 将其PCB清零,并将PCB空间返还系统

五种基本状态的相互转换

操作系统学习-进程的描述与控制_第2张图片

挂起操作

  1. 引起挂起操作的原因

基于系统和用户的需求

  1. 终端用户的需要
  2. 父进程请求
  3. 负荷调节的需要
  4. 操作系统的需要
  1. 引入挂起原语操作

引入挂起原语Suspend和激活原语Active后,进程的转换类型

  1. 活动就绪→静止就绪
  2. 活动阻塞→静止阻塞
  3. 静止就绪→活动就绪
  4. 静止阻塞→活动阻塞
    操作系统学习-进程的描述与控制_第3张图片

进程管理中的数据结构

  1. 操作系统中用于管理控制的数据结构
  • 内存表
  • 设备表
  • 文件表
  • 用于进程管理的进程表(进程控制块PCB)
  1. 进程控制块PCB的作用

(1) 作为独立运行基本单位的标志
(2) 能实现间断性运行方式
(3) 提供进程管理所需要的信息
(4) 提供进程调度所需要的信息
(5) 实现与其它进程的同步与通信

  1. 进程控制块中的信息

进程标识符

  • 唯一地标识一个进程
  • 外部标识符
    为了方便用户(进程)对进程的访问
  • 内部标识符
    为了系统对进程的访问

处理机状态

  • 也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成的
  • 包括
    ①通用寄存器
    ②指令计数器
    ③程序状态字PSW
    ④用户栈指针

进程调度信息

  • 在OS进行调度时,必须了解进程的状态及有关进程调度的信息
  • 包括
    ① 进程状态
    ② 进程优先级
    ③ 进程调度所需的其它信息
    ④ 事件

进程控制信息

  • 用于进程控制所必须的信息
  • 包括
    ① 程序和数据的地址
    ② 进程同步和通信机制
    ③ 资源清单
    ④ 链接指针
  1. 进程控制块的组织方式
  1. 线性方式
    每次查找时都需要扫描整张表,因此适合进程数目不多的系统
  2. 链接方式
    把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列
  3. 索引方式
    统根据所有进程状态的不同,建立几张索引表,并把各索引表在内存的首地址记录在内存的一些专用单元中、

进程控制

操作系统内核

  1. 支撑功能
  1. 中断处理
  2. 时钟管理
  3. 原语操作
    原子操作是一个不可分割的基本单位
  1. 资源管理功能
  1. 进程管理
  2. 存储器管理
  3. 设备管理

进程的创建

  1. 进程的层次结构

在OS中,允许一个进程创建另一个进程

  • UNIX中,进程与其子孙进程共同组成一个进程家族(组)
  • 在Windows中不存在任何进程层次结构的概念,所有的进程都具有相同的地位
  1. 引起创建进程的事件

为使程序之间能并发运行,应先为它们分别创建进程

  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求
  1. 进程创建
  1. 申请空白PCB
    为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB
  2. 为新进程分配其运行所需的资源
    包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等
  3. 初始化进程控制块(PCB)
  4. 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

进程的终止

  1. 引起进程终止的事件
  1. 正常结束
  2. 异常结束
  3. 外界干预
  1. 进程的终止过程

如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,终止指定的进程

  1. 根据被终止进程的标识符
    从PCB集合中检索出该进程的PCB,从中读出该进程的状态
  2. 若被终止进程正处于执行状态
    应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度
  3. 若该进程还有子孙进程
    还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程
  4. 将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统
  5. 将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息

进程的阻塞与唤醒

  1. 引起的事件
  1. 向系统请求共享资源失败
  2. 等待某种操作的完成
  3. 新数据尚未到达
  4. 等待新任务的到达
  1. 进程阻塞过程

阻塞是进程自身的一种主动行为:进程通过调用阻塞原语block将自己阻塞

  • 先立即停止执行
    把进程控制块中的现行状态由“执行”改为阻塞
  • 并将PCB插入阻塞队列
  1. 进程唤醒过程
  • 首先把被阻塞的进程从等待该事件的阻塞队列中移出
    将其PCB中的现行状态由阻塞改为就绪
  • 然后再将该PCB插入到就绪队列中

进程的挂起与激活

  1. 进程的挂起
  2. 进程的激活过程

进程同步

进程同步

  • 对多个相关进程在执行次序上进行协调、使并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性

进程同步的基本概念

  1. 制约关系
  1. 间接相互制约关系
    临界资源:如打印机、磁带机,必须保证互斥访问
  2. 直接相互制约关系
    源于进程之间的合作
  1. 临界资源

诸进程间应采取互斥方式,实现对这种资源的共享

  • 硬件资源如打印机、 磁带机等
  1. 临界区

在每个进程中访问临界资源的那段代码称为临界区

  • 临界区:进程访问临界资源的代码
  • 进入区:临界区之前检查状态的代码
  • 退出区:将临界区正在被访问的标志恢复为未被访问的标志
  • 可把一个访问临界资源的循环进程描述为
    操作系统学习-进程的描述与控制_第4张图片
  1. 同步机制遵循的规则
  1. 空闲让进
  2. 忙则等待
  3. 有限等待
  4. 让权等待
  1. 常见的同步机制
  1. 软件方法
  2. 硬件方法
  3. 信息量机制
  4. 管程机制

硬件同步机制

  1. 关中断
  2. 利用Test-and-Set指令实现互斥
  3. 利用Swap指令实现进程互斥

优缺点

  1. 优点

适用于任意数目的进程
简单、容易验证其正确性

  1. 缺点

处于“忙等”,未实现“让权等待”,浪费处理机时间
可能产生“饥饿”现象
可能死锁

信号量机制

整形信号量:表示资源数目的整形量S

  • 为正:空闲资源数
  • 为负:等待使用资源的进程量

总结

小小励志

有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》

你可能感兴趣的:(操作系统,学习,服务器,c++)