当前位置: 首页 > news >正文

数据结构:2.1 .1进程与线程——进程

进程

  • 1. 进程的概念和特征
  • 2.进程的状态与转换
    • 2.1 状态
    • 2.2 转换
  • 3.进程的组织
    • 3.1 PCB(进程控制块)
  • 4. 进程控制
  • 5.进程通信
  • 参考资料

首先来一个问题: 为什么要引入进程?

在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process)的概念,(进程引入目的:)以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性(最基本的两个特性)

1. 进程的概念和特征

1.1 概念

  • 进程和程序的区别和联系
    在这里插入图片描述

    • 程序就是个存放在磁盘里的可执行文件,如:QQ.exe

    • 进程就是程序的一次执行过程,如:可同时启动多次QQ程序

  • 进程的概念: (不同角度有不同定义、下面是比较典型的定义)

    • 1) 进程是程序的一次执行过程。
    • 2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
    • 3) 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
    • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。(传统操作系统的定义)
  • 进程实体: 又称进程映像程序段、相关数据段和PCB(进程控制块)三部分构成。

    • PCB是进程存在的唯一标志
    • 在这里插入图片描述
  • 进程是动态的,进程映像则是静态的。

1.2 特征(理解即可)
在这里插入图片描述

下面的叙述中,正确的是()。
A. 进程获得处理器运行是通过调度得到的
B. 优先级是进程调度的重要依据,一旦确定不能改动
C. 在单处理器系统中,任何时刻都只有一个进程处于运行态
D. 进程申请处理器而得不到满足时,其状态变为阻塞态
  
  
答案:A
解析:选项B错在优先级分静态和动态两种,动态优先级是根据运行情况而随时调整的。选项C错在系统发生死锁时有可能进程全部都处于阻塞态,或无进程任务,CPU空闲。选项D错在进程申请处理器得不到满足时就处于就绪态,等待处理器的调度。

2.进程的状态与转换

2.1 状态

请添加图片描述

2.2 转换

在这里插入图片描述

  • 运行态——>阻塞态: 等待资源、I/O、信号
  • 阻塞态——>就绪态: 资源满足、I/O结束、信号完成
  • 就绪态——>运行态: 处理器空闲时选择更高优先权进程抢占
  • 运行态——>就绪态: 运行时间片到、有更高优先权进程
  • 阻塞态不可能直接变成运行态
  • 一个进程从运行态变成阻塞态是主动的行为,而从阻塞态变成就绪态是被动的行为,需要其他相关进程的协助。

在任何时刻,一个进程的状态变化()引起另一个进程的状态变化。
A.必定  B. 一定不  C.不一定  D.不可能
  
  
答案:C
解析:一个进程的状态变化可能会引起另一个进程的状态变化。例如,一个进程时间片用完,可能会引起另一个就绪进程的运行。同时,一个进程的状态变化也可能不会引起另一个进程的状态变化。例如,一个进程由阻塞态转变为就绪态就不会引起其他进程的状态变化

一个进程释放了 一台打印机,它可能会改变()的状态。
A.自身进程  B.输入/输出进程  C.另一个等待打印机的进程  D.所有等待打印机的进程
  
  
答案:C
解析:由于打印机是独占资源,当一个进程释放打印机后,另一个等待打印机的进程就可能从阻塞态转到就绪态。当然,也存在一个进程执行完毕后由运行态转为结束态时释放打印机的情况,但这并不是由于释放打印机引起的,相反是因为运行完成才释放了打·印机。

3.进程的组织

进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位。它由以下三部分组成,其中最核心的是进程控制块(PCB)。

3.1 PCB(进程控制块)

  • PCB主要包括:进程描述信息、进程控制和管理信息、资源分配清单和处理机相关信息等
    在这里插入图片描述

  • 常用的组织方式:

    • 链式方式:
      在这里插入图片描述
    • 索引方式:
      在这里插入图片描述

3.2 程序段和数据段

  • 程序段:能被进程调度程序调度到CPU执行的程序代码段

  • 数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果

4. 进程控制

4.1 进程控制概念

  1. 什么是进程控制?
    进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单来说:进程控制就是要实现进程状态的转换

  2. 怎样实现进程控制?用原语实现。
    原语:一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位

  3. 为什么要用原语实现进程控制?
    在这里插入图片描述

    假如刚执行完步骤①来了一个中断信号,若没有用“原语”,那么程序就会立即执行中断程序。此时,PCB2的state=1(就绪态),但PCB2仍在阻塞队列,出现了矛盾

    若使用“原语”,由于原语具有原子性那么程序会继续执行步骤②,让PCB2进入就绪队列,在执行中断程序

4.2 进程的创建

  1. 父进程和子进程

    允许一个进程创建另一个进程,此时创建者称为父进程,被创建的进程称为子进程

    子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。此外,在撤销父进程时,通常也会同时撤销其所有的子进程。

  2. 进程创建过程:

    1. 申请一个空白PCB 。若PCB申请失败,则创建失败。
    2. 为进程分配其运行所需的资源,这些资源或从操作系统获得,或仅从其父进程获得。如果资源不足(如内存),则并不是创建失败,而是处于创建态,等待内存资源。
    3. 初始化PCB。
    4. 将新进程插入就绪队列,等待被调度运行。创建态到就绪态
  3. 引起进程创建的事件:
    终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等。

4.2 进程的终止

  1. 进程终止过程:(就绪态/阻塞态/运行态/----->终止态----->无)
    1. 根据被终止进程的标识符,检索出该进程的PCB,从中读出该进程的状态。
    2. 若被终止进程处于执行状态,立即剥夺CPU,将CPU分配给其他进程。
    3. 将其所有子孙进程终止。
    4. 将该进程所拥有的全部资源,或归还给其父进程,或归还给操作系统。
    5. 将该PCB从所在队列(链表)中删除。
  2. 引起进程终止的事件:
    1. 正常结束,表示进程的任务已完成并准备退岀运行。
    2. 异常结束,表示进程在运行时,发生了某种异常事件,使程序无法继续运行,如存储区越界、保护错、非法指令、特权指令错、运行超时、算术运算错、I/O故障等。
    3. 外界干预,指进程应外界的请求而终止运行,如操作员或操作系统干预、父进程请求和父进程终止。

4.3 进程的唤醒和阻塞
在这里插入图片描述
4.4 进程的切换
在这里插入图片描述

5.进程通信

  • 进程通信是指进程之间的信息交换。

    • 例如:将一条新闻从微博转发到微信。
  • PV操作是低级通信方式,高级通信包括:共享存储、消息传递、管道通信

  • 高级通信方式是指以较高的效率传输大量数据的通信方式

5.1 共享存储
在这里插入图片描述

  • 共享方式分为两种:
    • 低级分享方式:基于数据结构的共享
    • 高级分享方式:基于存储区的共享
      在这里插入图片描述
  • 操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成。

5.2 消息传递

  • 在消息传递系统中,进程间的数据交换以格式化的消息(Message)为单位。
  • 隐藏了通信实现细节,使通信过程对用户透明,简化了通信程序的设计,是当前应用最广泛的进程间通信机制
  • 通信方式
    • 直接通信方式
      在这里插入图片描述

    • 间接通信方式
      在这里插入图片描述

5.3 管道通信

  • 管道通信是消息传递的一种特殊方式。所谓“管道”,是指用于连接一个读进程和一个写进程以实
    现它们之间的通信的一个共享文件,又名pipe文件

  • 管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在
    在这里插入图片描述

参考资料

《王道:23操作系统考研复习指导》

相关文章:

  • (附源码)springboot助农电商系统 毕业设计 081919
  • Idea debug 调试运行慢
  • PostgreSQL修炼之道笔记之基础篇(六)
  • Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第12章 Vue3.X新特性解析 12.9 Refs 模板
  • 有序矩阵中第K小元素[优先队列PriorityQueue]
  • 闲谈JVM(一):浅析JVM Heap参数配置
  • 商城小程序系统,商城源码
  • 元宇宙电商-NFG系统带你布局数字藏品领域
  • statsD学习笔记
  • 坠落的蚂蚁(暑假每日一题 40)
  • TV蓝牙无法被搜索问题解决记录:REQUEST_DISCOVERABLE ActivityNotFoundException
  • 【JavaScript 逆向】猿人学 web 第六题:回溯
  • 最牛逼的 Java 日志框架,性能无敌,横扫所有对手
  • CREO:CREO软件之装配设计界面的简介、装配图设计流程、案例应用(图文教程)之详细攻略
  • 【赛码网刷题】动态规划之上台阶
  • [译] 怎样写一个基础的编译器
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • codis proxy处理流程
  • create-react-app做的留言板
  • docker python 配置
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript 奇技淫巧
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS实现简单的MVC模式开发小游戏
  • k8s如何管理Pod
  • laravel5.5 视图共享数据
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mac修复ab及siege安装
  • node学习系列之简单文件上传
  • Odoo domain写法及运用
  • oldjun 检测网站的经验
  • PAT A1092
  • Python学习之路16-使用API
  • SpingCloudBus整合RabbitMQ
  • 分布式熔断降级平台aegis
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 离散点最小(凸)包围边界查找
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​比特币大跌的 2 个原因
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C)一些题4
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (篇九)MySQL常用内置函数
  • (七)理解angular中的module和injector,即依赖注入
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (原創) 未来三学期想要修的课 (日記)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 中 GetProcess 相关方法的性能