0201-2-进程的描述与控制

2024-02-01 21:52
文章标签 进程 控制 描述 0201

本文主要是介绍0201-2-进程的描述与控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第二章进程的描述与控制

在这里插入图片描述

前驱图和程序执行

程序并发执行

程序的并发执行

程序并发执行时的特征

  • 间断性
  • 失去封闭性
  • 不可再现性

进程的描述

进程的定义

  • 进程是程序的一次执行
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

进程的特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性

从操作系统角度分类

  • 系统进程
  • 用户进程

进程和程序的区别

  • 进程是动态概念,而程序则是静态概念
  • 程序是指令的有序集合,永远存在;进程强调是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
  • 进程具有并发性,而程序没有
  • 进程可创建其他进程,而程序并不能形成新的程序
  • 进程是竞争计算机资源的基本单位,程序不是

进程和程序的联系

  • 进程是程序在数据集上的一次执行
  • 程序是构成进程的组成部分,一个程序可对应多个进程,一个进程可包括多个程序
  • 进程的运行目标是执行所对应的程序
  • 从静态看,进程由程序、数据和进程控制块(PCB)组成

进程的基本状态及转换

  • 进程的三种基本状态
    • 就绪状态ready
    • 执行状态running
    • 阻塞状态block
  • 三种基本状态的转换
  • 创建状态和终止状态
    • 五状态进程模型
  • 注意
    • 阻塞态->运行态和就绪态->阻塞态这二种状态转换不可能发生

挂起操作和进程状态的转换

  • 挂起和阻塞的区别
  • 挂起操作的目的
    • 终端用户的需要: 修改、检查进程
    • 父进程的需要:修改、协调子进程
    • 对换的需要:缓和内存
    • 负荷调节的需要:保证实时任务的执行
  • 关键图

进程管理中的数据结构

  • 进程控制块PCB的作用
    • 作为独立运行基本单位的标志
    • 能实现间断性运行方式
    • 提供进程管理所需要的信息
    • 提供进程调度所需要的信息
    • 实现与其他进程的同步与通信
  • 进程控制块的信息
    • 进程标识符
      • 外部标识符PID
      • 内部标识符(端口)
    • 处理机状态
      • 通用寄存器
      • 指令计数器
      • 程序状态字PSW
      • 用户栈指针
    • 进程调度信息
      • 进程状态
      • 进程优先级
      • 进程调度所需的其他信息
      • 事件
    • 进程控制信息
      • 程序和数据的地址
      • 进程同步和通信机制
      • 资源清单
      • 链接指针
    • 进程控制块的组织方式
      • 线性方式
      • 链接方式
      • 索引方式

进程控制

操作系统内核

  • 两大功能
    • 支撑功能
      • 中断管理
      • 时钟管理
      • 原语操作
        • 进程的管理,由若干原语(primitive)来执行
    • 资源管理功能
      • 进程管理
      • 存储器管理
      • 设备管理
  • 状态
    • 系统态,管态,内核态
    • 用户态,目态

进程的创建

  • 进程的层次结构
    • 父进程
    • 子进程
  • 引起创建进程的事件
    • 用户登录
    • 作业调度
    • 提供服务
    • 应用请求
  • 进程的创建过程
    • 1.申请空白PCB
    • 2.为新进程分配其运行所需的资源
    • 3.初始化进程块PCB
    • 4.如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
  • 进程的终止
    • 引起进程终止的事件
      • 1.正常结束
      • 2.异常结束
      • 3.外界干预
    • 进程的终止过程
      • 1.根据被终止进程的标识符
  • 进程的阻塞与唤醒
    • 引起进程阻塞和唤醒的事件
      • 请求系统服务而未满足
      • 启动某种操作而阻塞当前进程
      • 新数据尚未到达
      • 无新工作可做:系统进程
    • 进程阻塞过程(自己阻塞自己)
    • 进程唤醒过程(系统或其他进程唤醒自己)
  • 进程的挂起与激活
    • suspend
    • active

进程同步

  • 基本概念
    • 两种形式的制约关系
      • 间接相互制约关系
        • 互斥——竞争
      • 直接相互制约关系
        • 同步——协作
    • 临界资源
    • 分区
      • 进入区enter section
      • 临界区critical section
      • 退出区exit section
      • 剩余区remainder section
    • 同步机制应遵循的规则
      • 1.空闲让进
      • 2.忙则等待
      • 3.有限等待
      • 4.让权等待
  • 进程同步机制
    • 软件同步机制:都没有解决让权等待,而且部分方法还会产生死锁的情况
    • 硬件同步机制
      • 关中断
      • 利用Test-and-Set指令实现互斥
      • 利用swap指令实现进程互斥
    • 信号量机制
      • 整型信号量
      • 记录型信号量
        • 由于整型信号量没有遵循让权等待原则,记录型允许负数,即阻塞链表
      • AND型信号量
      • 信号量集
        • 理解:AND型号量的wait和signal仅能对信号施以加1或减1操作,意味着每次只能对某类临界资源进行一个单位的申请或释放。当一次需要N个单位时,便要进行N次wait操作,这显然是低效的,甚至会增加死锁的概率。此外,在有些情况下,为确保系统的安全性,当所申请的资源数量低于某一下限值时,还必须进行管制,不予以分配。因此,当进程申请某类临界资源时,在每次分配前,都必须测试资源数量,判断是否大于可分配的下限值,决定是否予以分配
        • 操作
          • Swait(S1,t1,d1…Sn,tn,dn)
          • Ssignal(S1,d1…Sn,dn)
        • 特殊情况
  • 经典进程的同步问题
    • 生产者–消费者问题
    • 哲学家进餐问题
    • 读者–写者问题

进程通信

进程通信是指进程之间的信息交换,又称低级进程通信

进程通信的类型

  • 共享存储器系统
    • 基于共享数据结构的通信方式
      • 生产者和消费者
    • 基于共享存储区的通信方式
      • 高级通信
  • 管道通信系统(pipe)
    • 高级通信
  • 消息传递系统
    • 高级通信
    • 方式分类
      • 直接通信
      • 间接通信
  • 客服机–服务器系统

消息传递通信的实现方式

  • 直接消息传递系统
  • 信箱通信

线程的基本概念

线程的引入

  • 线程的引入正是为了简化线程间的通信,以小的开销来提高进程内的并发程度
  • 多线程并发的不足
    • 进程的两个基本属性
      • 一个拥有资源的独立单位,可独立分配系统资源
      • 一个可独立调度和分派的基本单位,PCB
    • 程序并发执行所需付出的时空开销
      • 创建进程
      • 撤销进程
      • 进程切换
    • 进程间通信效率低
    • 将分配资源和调度两个属性分开
  • 线程——作为调度和分派的基本单位
    • 进程是系统资源分配的单位,线程是处理器调度的单位
    • 线程表示进程的一个控制点,可以执行一系列的指令。通常,和应用程序的一个函数相对应
    • 进程分解为线程还可以有效利用多处理器和多核计算机

线程与进程的比较

  • 不同点
    • 调度的基本单位
    • 并发性
  • 相似点
    • 状态:运行、阻塞、就绪
    • 线程具有一定的生命期
    • 进程可创建线程,一个线程可创建另一个子线程
    • 多个线程并发执行时仍然存在互斥与同步

线程的实现

  • 线程的实现方式
    • 内核支持线程KST
    • 用户级线程ULT
    • 组合方式
  • 多线程OS中的进程属性
    • 进程是一个可拥有资源的基本单位
    • 多个线程可并发执行
    • 进程已不是可执行的实体
  • 线程的状态和线程控制块
    • 线程运行的三个状态
      • 执行状态
      • 就绪状态
      • 阻塞状态
    • 线程控制块TCB

XMind: ZEN - Trial Version

这篇关于0201-2-进程的描述与控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668597

相关文章

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务