第二章-进程(2)

news2024/12/27 3:19:42

进程

    • 一、进程的引入
    • 二、进程的状态及组成
    • 三、进程控制

一、进程的引入

(1)程序的顺序执行:
P1:a=x+y
P2:b=a-5
P3:c=b+1
程序总是按照P1→P2→P3的顺序执行。
特点:

  • 顺序性:处理机的操作严格按规定顺序执行。
  • 封闭性:程序执行时,独占系统资源。
  • 可再现性:当初始条件相同时,程序多次执行的结果相同。

(2)程序的并发执行
P1:a=5
P2:b=6
P3:c=a+b
P4:d=c+1
程序按照P1/P2→P3→P4的顺序执行。
特点:

  • 间断性:程序在并发执行时,形成了相互制约关系。相互制约将导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。
  • 失去封闭性:系统中的资源供多个程序共享,致使程序的运行失去了封闭性。
  • 失去可再现性。

(3)程序并发执行的条件Bernstein
Bernstein条件:
读集:R(Pi)={a1,a2,…,am} 程序Pi执行期间参考的变量集合。
写集:W(Pi)={b1,b2,…,bm} 程序Pi执行期间改变的变量集合。
两个进程P1,P2若满足:R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}则P1,P2并发执行,且具有可再现性。

例如:
P1:a=5
P2:b=6
P3:c=a+b
P4:d=c+1
P1、P2可以并发执行吗?P3、P4可以并发执行呢?
解:
P1:a=5
P2:b=6
R(P1)={}   W(P1)={a}    → R读取右边的变量;W读取左边的变量,没有变量则为空集
R(P2)={}   W(P2)={b}
R(P1) ∩W(P2)={}   R(P2) ∩W(P1)={}  W(P1) ∩W(P2)={}
R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}
P1、P2可以并发执行。

P3:c=a+b
P4:d=c+1
R(P3)={a,b}   W(P3)={c}
R(P4)={c}    W(P4)={d}
R(P3) ∩W(P4)={}
R(P4) ∩W(P3)={c}
R(P3) ∩W(P4) ∪R(P4) ∩W(P3)∪W(P3)∩W(P4) ={c}
P3、P4不能并发执行。
(4)进程的定义
进程:可并发执行的程序在一个数据集合上的执行过程(实质)。
进程与程序的关系:

进程程序
动态的静态的
并发的顺序的
暂时的永久的

数据结构=程序+数据+PCB
程序与进程不是一一对应关系。

二、进程的状态及组成

(1)三种基本状态

  • 运行态:进程正在处理机上运行的状态。
  • 就绪态:进程已获得了除处理机之外的所有必要资源,只要获得处理机就可以运行的状态。
  • 阻塞状态:进程由于等待输入输出操作或某个同步事件而暂停运行时,就处于阻塞状态。
    在这里插入图片描述
状态转化说明
就绪态→运行态处于就绪态的进程具备了运行条件,但未能获得处理机而没有运行
运行态→就绪态正在运行的进程由于规定的时间片用完而暂停执行
运行态→阻塞态正在运行的进程可能需要等待某些资源(例如进程请求I/O、等待某个事件或请求访问某个临界资源)
阻塞态→就绪态获得所等待的条件和资源,具备了运行条件

注意:没有阻塞态→运行态就绪态→阻塞态

(2)五种状态的状态转换图
在这里插入图片描述
(3)进程的挂起状态
挂起状态的作用:

  • 内外存对换的需要:为了缓解内存的紧张,我们可以将处于阻塞状态的作业调到外存。
  • 用户调试程序的需要:用户需要调试修改自己的程序时,需要把进程调入到挂起状态。
  • 实时系统中调节负载的需要
    在这里插入图片描述
    (4)进程控制块(PCB)
    进程通常有程序段、数据段、栈栈和PCB四部分构成,进程控制块是进程存在的唯一的标识。
    PCB的作用:就是使程序能成为独立运行的单位,并可和其他进程并发执行。
    进程控制块PCB的内容:
进程描述信息说明
进程名创建者提供的名字
进程标识符区分每一个进程(系统通常为进程分配一个唯一的整数)
用户名创建该进程用户的名字
处理机状态信息说明
通用寄存器当进程运行时用于暂存信息的
指令计数器存放要访问的下一条指令
程序状态字(PSW)寄存器包括程序执行的状态信息,如执行方式,中断允许位
栈指针每个程序都有一个或多个与之相关的地址栈
进程调度信息说明
进程状态指明该进程所处的状态
进程优先级表示进程的优先级,优先级高的先获得处理机
运行统计信息这些信息与采用的调度算法有关,包括进程执行的时间,等待的时间
进程阻塞的原因记录进程阻塞的原因
进程控制和资源占有量信息说明
程序入口地址进程对应程序和数据的内存地址
程序的外存地址进程被调出使用的地址
进程同步及通信机制进程在执行中,可能与其他进程有同步关系,进程的信号量都有存放在PCB中
资源占有信息列出了除CPU之外进程所需要的全部资源及已经占用的资源情况
链接指针本进程所在队列的下一个进程的PCB的地址

三、进程控制

操作系统的内核:
核心态:具有较高的特权,能执行一切命令,访问所有寄存器和存储区。
用户态:具有较低特权,只能执行规定的命令,访问指定的寄存器和存储区。
内核:

  • 硬件的第一次延伸。
  • 系统将一些与硬件紧密相关的模块放在内核,中断处理,时钟管理
  • 内核在执行某些基本操作时,往往是利用原语操作实现的。

原语:

  • 原语由若干条指令构成、用于完成一定功能的过程。
  • 原语是“原子操作”。即一个操作中的所有动作,要么全做,要么全不做。换言之,原子操作是一个不可分割的操作。

进程创建:
进程创建的事件:用户登录;新作业进入系统;提供服务;应用请求。
创建原语要做的工作:申请空白PCB;为进程分配资源;初始化PCB(初始化进程描述信息,初始化处理机状态信息初,始化进程控制信息);将新进程插入就绪队列。
进程的撤消:
引起进程撤消的事件:进程正常结束;进程异常结束;外界干预。
撤消原语要做的工作:查找撤消进程的PCB若;处于执行状态,终止之,并进行进程调度;若有子孙,予以终止;归还资源;从所在队列移出。
进程的阻塞与唤醒:
引起进程阻塞的事件:请求系统服务;启动某种操作;数据尚未到达;无新工作可做。
阻塞原语要做的工作:停止进程的执行;将进程插入阻塞队列,改变进程在PCB中的状态;重新调度。
唤醒原语要做的工作:将进程从阻塞队列解下;将进程插入就绪队列;改变进程在PCB中的状态。
进程的挂起与激活:
挂起原语要做的工作:检查被挂起进程的状态;如进程处于就绪状态,将进程从就绪状态变为就绪挂起状态;如进程处于阻塞状态,将进程从阻塞状态变为阻塞挂起状态;如进程正在运行,将进程变为就绪挂起状态,并重新调度。
激活原语要做的工作:检查被激活进程的状态;如进程处于就绪挂起状态,将进程从就绪挂起状态变为就绪状态;如进程处于阻塞挂起状态,将进程从阻塞挂起状态变为阻塞状态;若系统为抢占式系统,则进行进程调度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/338082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda

文章目录0. 教训1. 问题:使用conda update更新conda后,anaconda所有环境崩溃1.1 问题描述1.2 我搜索到的全网最相关的问题----也没有解决3 尝试流程记录3.1 重新安装pip3.2 解决anaconda编译问题----没成功0. 教训 (1) 不要轻易使用conda update更新conda----我遇到…

[OpenMMLab]AI实战营第六节课

语义分割算法基础 任务:图像按照物体的类别分隔成不同区域,即将每个像素进行分类 应用:无人驾驶、医疗、人像、智能遥感 思路 基本思路:按照颜色区分 --> 逐像素分类(滑动窗口,用CNN分类&#xff0c…

微搭低代码从入门到精通11-数据模型

学习微搭低代码,先学习基本操作,然后学习组件的基本使用。解决了前端的问题,我们就需要深入学习后端的功能。后端一般包括两部分,第一部分是常规的数据库的操作,包括增删改查。第二部分是业务逻辑的编写,在…

QT基础入门

学习视频:QT开发概述_哔哩哔哩_bilibili 1.QT开发概述 1.什么是QT QT是一个1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架&#…

STC15单片机软串口的使用

STC15软串口的使用📖在没有使用定时器资源的情况下,根据波特率位传输时间,利用STC-ISP工具自动计算出位延时函数。 ✨在官方所提供的库函数中位传输时间函数,仅适用于使用波特率为:9600的串口数据传输: void BitTime(…

Grafana 系列文章(十四):Helm 安装Loki

前言 写或者翻译这么多篇 Loki 相关的文章了, 发现还没写怎么安装 😓 现在开始介绍如何使用 Helm 安装 Loki. 前提 有 Helm, 并且添加 Grafana 的官方源: helm repo add grafana https://grafana.github.io/helm-charts helm repo update 🐾Warning…

nacos的单机模式和集群模式

文章目录 目录 文章目录 前言 一、nacos数据库配置 二、单机模式 三、集群模式 四、使用nginx集群模式的负载均衡 总结 前言 一、nacos数据库配置 在数据库中创建nacos_config 编码格式utf8-mb4的数据库 把上面的数据库文件导入数据库 在 配置文件中添加如下 spring.datasour…

LINUX之链接命令

链接命令学习目标能够说出软链接的创建方式能够说出硬链接的创建方式1. 链接命令的介绍链接命令是创建链接文件,链接文件分为:软链接硬链接命令说明ln -s创建软链接ln创建硬链接2. 软链接类似于Windows下的快捷方式,当一个源文件的目录层级比较深&#x…

Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

目录 1、Apache Shiro简介 2、漏洞原理 关键因素: 漏洞分析: 漏洞特征: 3、影响版本 4、漏洞复现 任意命令执行 GETSHELL 防御措施 1、Apache Shiro简介 Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话…

深入解读.NET MAUI音乐播放器项目(一):概述与架构

系列文章将分步解读音乐播放器核心业务及代码: 深入解读.NET MAUI音乐播放器项目(一):概述与架构深入解读.NET MAUI音乐播放器项目(二):播放内核深入解读.NET MAUI音乐播放器项目(三…

部门新来了个软件测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不…

真正的云原生大数据平台,让Kubernetes又牛了一把

作为一款开源的容器编排引擎,始于2014年的 Kubernetes 一经推出就受到了开发者的喜爱,谁也不曾想到它会取得如此大的成功。如今,在云原生技术发展的浪潮中,Kubernetes 作为容器编排领域的事实标准和云原生领域的关键项目&#xff…

LeetCode-111. 二叉树的最小深度

目录题目分析递归法题目来源111. 二叉树的最小深度题目分析 这道题目容易联想到104题的最大深度,把代码搬过来 class Solution {public int minDepth(TreeNode root) {return dfs(root);}public static int dfs(TreeNode root){if(root null){return 0;}int left…

C++笔记之单例模式

C笔记之单例模式 前言 当一个类在程序的整个生命周期中,只需要一个实例的时候,就可以考虑把这个类设计成单例的方式,提供出去,让全局访问。一般来说比较 “重” 的一些类会设计成单例,比如像“引擎”, “x…

微搭低代码从入门到精通12-网格布局

开发小程序首要的就是考虑布局的问题,我们在以前的版本只能选择普通容器结合图片和文本组件来构建页面。 使用通用组件布局也可以,但有个问题是你要先学习CSS,要懂布局的概念,比如需要知道啥是flex布局,然后还得熟悉每…

分布式事务 | 使用DTM 的Saga 模式

DTM 简介前面章节提及的MassTransit、dotnetcore/CAP都提供了分布式事务的处理能力,但也仅局限于Saga和本地消息表模式的实现。那有没有一个独立的分布式事务解决方案,涵盖多种分布式事务处理模式,如Saga、TCC、XA模式等。有,目前…

【AI数学】相机成像之内参数

计算机视觉偏底层的工作会跟摄像机打交道,最近正好有接触,所以整理总结一下。 相机参数通常分为内参数、外参数,偶尔会有畸变参数等滤镜参数。 申明:本文图例均为原创,借用需附此文链接。 内参数:相机内部的…

[SSD固态硬盘技术 15] FTL映射表的神秘面纱

为什么需要映射表?固态硬盘的存储器件采用的是闪存[5],具有以下几个特点: (1)读写基本单位是以页(Page)为单位,擦除是以块(Block)为单位。

NFC概述摘要

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 原理来说,NFC和Wi-Fi类似,利用无线射频技术来实现设备间通信。NFC的工作频率为13.5…

基于c语言实现的对代码的同源性检测

完整代码:https://download.csdn.net/download/qq_38735017/87382389本次课程设计为了巩固上学期在软件安全课程上所学的安全知识,包括堆栈溢出、整数溢出等等,同时考察了一些课外的新事物,例如字符串匹配与CFG控制流程图的同源性…