进程管理(三态模型,PV操作详细讲解,经典例题)

2023-11-21 19:51

本文主要是介绍进程管理(三态模型,PV操作详细讲解,经典例题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

个人博客

文章目录

    • 进程的概念
      • 定义
      • 进程与程序的区别
    • 进程的状态及变换
    • 进程的同步和互斥
    • P,V操作
      • 互斥模型
      • 同步模型
      • 经典例题
      • pv操作的前驱图

进程的概念

定义

进程是程序在一个数据集合上运行的过程,它是学习通进行资源分配和调度的一个独立单位。它由程序块,进程控制块PCB和数据块三部分组成

进程与程序的区别

进程与程序的区别:进程是程序的一次执行过程,没有程序就没有进程。

程序是完成某个特定功能的一系列程序语句的集合,只要不被破话,程序就会永远存在。程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡,进程是系统进行资源分配和调度的独立单位,而程序不是

进程的状态及变换

进程有就绪态,运行态和阻塞态(等待态)
在这里插入图片描述
如何转换:

  1. 就绪态转换运行态:进程在就绪态时,唯一欠缺的是cpu的资源。当cpu调度这个进程时,进程就会从就绪态转变为运行态。
  2. 运行态转变为阻塞态:当进程是运行态时,需要等待某些io设备的处理或者其他事情的发生或提供的数据,进程就会运行态变为阻塞态。
  3. 阻塞态变为就绪态:当等待的资源或者事情发生时,则转变
  4. 运行态转变为就绪态:cpu的时间片用完了,有更高优先级的进程替代此进程时

进程的同步和互斥

同步的定义:

进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。

同步相当于跑得快的等跑的慢的一起到终点

互斥的定义:

进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。

互斥相当于多个人过独木桥 ,这里的独木桥就是临界资源

P,V操作

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机,磁带机等
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量
操作作用
p操作申请资源,可以理解为等待资源
v操作释放资源

在这里插入图片描述
上图的s是信号量,进行以下p操作,信号量就会减一。s的时候,进程就会被挂起,因为没有资源分配了。v操作释放资源,如果s<=0时说明阻塞队列里面还有队列再等待,会阻塞

互斥模型

多个进程共享一台打印机
pv操作是成对出现的
在这里插入图片描述
打印机就是一个资源

同步模型

在这里插入图片描述
下面的单缓冲区的意思是一次只能有一个执行操作
生产者生产产品,消费者消费产品,市场的个数只有一个。s1代表生产中的产品,s2代表市场中的产品。

经典例题

在这里插入图片描述
解题过程

  1. 这种题先确定是什么模型,由收银员一次只能服务一个购书者得,是同步模型
  2. 从简单的一方出发,由于收银员只有一个,逻辑肯定要简单,所以最好先做第二空
  3. 由于收银员需要等待第一个购书者来缴费,所以b1 为 p(s1),当收费成功后肯定是释放资源,叫下一个购书者来,所以b2 为V(S2).
  4. 再看第一空,当第一个购书者缴费时,需要呼叫收银员,所以a1为V(s1),第二个购物者来之后只能排队等

pv操作的前驱图

在这里插入图片描述
由前驱图写p,v操作:这里应该是只要正确理解了pv操作的含义了,是绝对好写的,这中题目的关键是:注意箭头的指向,比如d进程需要等待前面三个A,B,C都释放资源了才可以得到执行,所以前面有p(Sa),p(Sb),p(Sc).

这篇关于进程管理(三态模型,PV操作详细讲解,经典例题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指