软考学习笔记--操作系统-进程管理

news2024/9/20 14:38:54

进程管理是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,是系统进行资源分配和调度的基本单位。相对于程序,进程是动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,需要一定的资源来完成任务。在大多数操作系统中,进程是进行资源分配和调度的基本单位。

一.进程的状态

一个进程从创建产生到销毁的整个生命期间,有时候占有处理器执行,有时候虽然可以运行,但是分配不到处理器,有时候虽然有空闲的处理器,但是因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,它是活动的且有状态变化的。

1.1三态模型

进程具有三种最基本的状态,分别是运行、就绪和阻塞,如下图所示:

 

  1. 运行状态。运行状态是进程占用处理机正在执行其程序的状态。在单机处理机系统中,某个时刻只能有一个进程处于运行状态;在多处理机系统中,可能有多个进程同时处于运行状态。
  2. 阻塞状态。阻塞状态也称为等待状态或者睡眠状态,是进程由于等待某个事件的发生而处于暂停执行的状态。例如,进程因等待I/O 的完成或等待缓冲空间等。
  3. 就绪状态。就绪状态是进程已分配到除处理机以外的所有必要资源,具备了执行的条件,等待处理机调度的状态。在系统中,同一时刻可能会有多个进程处于就绪状态,排成就绪队列。

 

1.2五态模型

由于进程的不断创建,系统资源特别是内存资源已不能满足所有进程运行的要求。这时就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以均衡负载。进程挂起的原因可能是系统出现故障,或者是用户调试程序,也可能是需要检查问题。

活跃就绪是指进程在内存并且可被调度的状态。静止就绪是指进程被对换到外存时的就绪状态,是不能被直接调度的状态,只有当内存中没有活跃就绪态进程,或者挂起就绪态进程具有更高的优先级,系统才能把挂起就绪态进程调回内存,并转换为活跃就绪。活跃阻塞状态是指进程已在内存,一旦所等待的事件发生,便进入活跃就绪状态。静止阻塞状态是指进程对换到外存时的阻塞状态,一旦所等待的事件发生,便进入静止就绪状态。

 二.信号量与PV操作

在多道程序系统中,由于资源共享与进程合作,使各进程之间可能产生两种形式的制约关系,一种是间接相互制约,例如,在仅有一台打印机的系统,同一时刻只能有一个进程分配到到打印机,其他进程必须阻塞;另一种是直接相互制约,例如进程A通过单缓冲去向进程B提供数据,当改缓冲区为空时,进程B不能获取所需的数据而阻塞,一旦进程A将数据送入缓冲区,进程B就被唤醒,反之,当缓冲区满时,进程A被阻塞,仅当进程B取走缓冲区的数据时,才唤醒进程A。

进程同步主要源于进程合作,是进程之间共同完成一项任务时直接发生相互作用的关系,为进程之间的直接制约关系。

进程互斥主要源于资源共享是进程之间的间接制约关系。在多道程序系统中,每次只允许一个进程访问的资源称为临界资源,进程互斥要求保证每次只有一个进程使用临界资源。在每个进程中访问临界资源的程序段称为临界区,进程进入临界区要满足一定的条件,以保证临界资源的安全使用和系统的正常运行。

(1)信号量

信号量是一个二元组(S,Q) , 其中S 是一个整形变量,初值为非负数为一个初始状态为空的等待队列。在多道程序系统中,信号量机制是一种有效的实现进程同步与互斥的工具。信号量的值通常表示系统中某类资源的数目,若它大于 0 , 则表示系统中当前可用资源的数量;若它小于 0 , 则表示系统中等待使用该资源的进程数目,即在该信号量队列上排队的P C B 的个数。信号量的值甚可变的,由PV操作来改变。

PV操作是对信号量进行处理的操作过程,而且信号量只能由PV操作来改变。P操作是对信号量减去1,意味着请求系统分配一个单位资源,若系统无可用资源,则进程变为阻塞状态;V操作是对信号量加1,意味着释放一个资源,加1后若信号量小于等于0,则从就绪队列中唤醒一个进程,执行V操作的进程继续执行。

(2)实现互斥模型

使用信号量机制实现进程互斥时,需要为临界资源设置一个互斥信号量S,其初始值通常为1。在每个进程中将临界区代码至于P(S)和V(S)之间。必须成对使用PV原语。PV原语不能次序颠倒,重复或者遗漏。

(3)实现同步模型

使用信号量机制实现进程同步时,需要为进程设置一个同步信号量S,其初始值通常为0。在进程需要同步的地方分别插入P(S)和V(S)。一个进程使用P原语的时候,另一个进程往往使用V原语与之对应。

三.死锁问题

当若干个进程竞争使用资源时,如果每个进程都占了一定的资源,又申请使用了已被另一个进程占用,且不能争夺的资源,则所有这些进程都进入阻塞状态,不能继续运行了,即系统有两个或者两个以上的进程无限期的等待,系统处于停滞状态,这种现象就称为死锁。产生死锁的4个必要条件如下:

(1)互斥条件 任意时刻只允许一个进程使用资源

(2)不剥夺条件。进程已经占用的资源,不会被剥夺。

(3)请求与保持条件。进程在请求其余资源时,不主动释放已经占有的资源。

(4)环路条件。环路中每一条边是进程在请求另一个进程已经占有的资源。

对死锁的处理,常用的方法有死锁的预防,避免和检测与解除等方法。

死锁预防:就是采用某种策略,限制并发进程对资源的请求,使系统在任何时候都不满足产生死锁的条件。

死锁避免:就是将限制条件弱化,允许死锁的存在,但不让它发生,设置一种安全状态,进程按照某种顺序来为期分配资源。

死锁检测与解除:死锁检测是指系统保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。

四.线程管理

线程是进程的活动成分,是处理器分配资源的最小单位,它可以共享进程的资源与地址空间,通过线程的活动,进程可以提供多种服务或者实现子任务并行。每个进程创建时只有一个线程,根据需要在运行的时候创建更多的线程。

4.1 线程的实现方式

线程基本上不拥有系统资源,只拥有在运行中必不可少的资源。一个线程可以创建和撤销另一个线程;同个进程中的多个线程可以并发执行。线程的实现方式主要有三种:

  1. 内核线程。内核线程依赖操作系统内核,由内核的内部需求进行创建和销毁。
  2. 用户线程。用户线程不依赖于操作系统内核,进程利用线程库提供创建。
  3. 轻权进程。轻权进程是操作系统内核支持的用户线程。一个线程可以有一个或多个轻权进程,每个轻权进程由一个单独的内核线程来支持。

4.2线程与进程的比较

通常一个进程有多个线程,至少有一个。进程与线程的区别主要有以下五个方面:

  1. 调度。在引入线程的操作系统中,线程作为调度和分配的基本单位,将进程作为资源拥有的基本单位。
  2. 并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程的多个线程也可以并发执行。
  3. 拥有资源。一般来说,线程除了拥有一点必不可少的资源外,它本身不拥有系统资源,但是它可以访问进程的资源。
  4. 系统开销。进程切换的开销大于线程切换的开销。在进程切换时,涉及整个当前进程CPU环境的保存和新被调度执行进程的环境的设置、裸机地址空间的切换;而现场的切换只需要保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。
  5. 通信方面。进程间通信需要进程同步和互斥手段的辅助,以保证数据一致性,而线程间可以直接读写进程数据段来进行通信。

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

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

相关文章

SwiftUI之深入解析如何使用SwiftUI Charts创建折线图

一、简单折线图 苹果在 WWWDC 2022 上推出了 SwiftUI 图表,这使得在 SwiftUI 视图中创建图表变得异常简单。图表是以丰富的格式呈现可视化数据的一种很好的方式,而且易于理解。本文展示了如何用比以前从头开始创建同样的折线图少得多的代码轻松创建折线…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包:"/apex/com.android.wifi/javalib…

十三、QPalette的简单使用(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在实际应用中,经常需要改变某个控件的颜色外观,如背景、文字颜色等。Qt提供的调色板类 QPalette 专门用于管理对话框的外观显示。QPalette 类相当于对话框或是控件的调色板&…

1222. 密码脱落(dp划分)

题目&#xff1a; 1222. 密码脱落 - AcWing题库 思路&#xff1a; 代码&#xff1a; #include<cstdio> #include<cstring> using namespace std; const int N1010; int f[N][N];//表示以L和R为两端点的字符串的“最长”回文序列长度 char s[N];//存储输入的字符串…

【Docker篇】使用Docker操作镜像

文章目录 &#x1f6f8;镜像&#x1f33a;基本操作⭐docker --help⭐docker pull [ 参数 ]⭐docker images⭐docker save -- 导出⭐docker rmi -- 删除⭐docker load -- 导入 &#x1f6f8;镜像 镜像是指在计算机领域中&#xff0c;通过复制和创建一个与原始对象相似的副本的过…

js逆向第20例:猿人学第19题乌拉乌拉乌拉

文章目录 一、前言二、定位关键参数1、JA3/TLS指纹怎么查看2、加密值长度对比三、代码实现四、参考文献一、前言 任务十九:抓取这5页的数字,计算加和并提交结果 此题在以前用python写逆向代码是存在缺陷的,直到今年有个大佬开源了curl_cffi库,并且支持 JA3/TLS 和 http2 指…

计算机组成原理 CPU的功能和基本结构和指令执行过程

文章目录 CPU的功能和基本结构CPU的功能CPU的基本结构 指令执行过程指令周期概念指令执行方案指令数据流取周期数据流析指周期数据流执行周期数据流中断周期数据流 数据通路的功能和基本结构数据通路的功能数据通路的结构单总线 CPU的功能和基本结构 #mermaid-svg-jr0QOEyC6Q92…

二分图最大匹配——匈牙利算法详解

文章目录 零、前言一、红娘牵线二、二分图最大匹配2.1概念2.2交替路2.3增广路2.4匈牙利算法2.4.1算法原理2.4.2算法示例2.4.3代码实现 3.OJ练习3.1模板3.2棋盘覆盖3.3車的放置 零、前言 关于二分图的基本知识见&#xff1a;二分图及染色法判定 一、红娘牵线 一位红娘近日遇到一…

leetcode 每日一题 2024年01月14日 删除排序链表中的重复元素

题目 83. 删除排序链表中的重复元素 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&#xff…

通信入门系列——微积分中极限、连续、导数、微分、积分

本节目录 一、极限 1、数列极限 2、函数极限 二、连续 三、导数 四、微分 五、积分本节内容 一、极限 1、数列极限 数列极限&#xff1a;设{xn}为一个实数列&#xff0c;A为一个定数。若对任意给定的ε>0&#xff0c;总存在正整数N,使得当n>N时&#xff0c;有|xn-A|<…

探索商超货架场景目标检测性能,基于YOLOv8【n/s/m/l/x】全系列参数模型开发构建商超货架场景下亨氏米粉食品种类检测识别系统

在前面的系列博文中&#xff0c;我们陆续应用实践开发了很多有趣的项目&#xff0c;但是在密集排布场景下如商超购物场所内货架上货物种类目标检测模型的开发我们则少有涉及&#xff0c;正值周末&#xff0c;本文的主要目的就是想要实践构建这一场景下的目标检测模型&#xff0…

云原⽣组件Nacos新型红队手法研究

组件简介 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快…

canvas设置圆锥形渐变

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

【QT】多层QTreeWidget与QStackedWidget的关联操作

通过点击多层QTreeWidget来控制QStackedWidget中的page页面切换 treeWidget设计 treeWidget设计&#xff1a; // treeWidget设计ui->treeWidget->clear();ui->treeWidget->setColumnCount(1);//第一层QStringList l;l<<"管理系统";QTreeWid…

数据仓库(2)-认识数仓

1、数据仓库是什么 数据仓库 &#xff0c;由数据仓库之父比尔恩门&#xff08;Bill Inmon&#xff09;于1990年提出&#xff0c;主要功能仍是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料&#xff0c;透过数据仓库理论所特有的资料储存架构&#xff0c;做…

DHCP中继【新华三】

理论【DHCP服务器可以对其直连的网段中的pc&#xff0c;分配其IP地址等服务&#xff0c;但是&#xff0c;对于跨网段进行分配IP地址&#xff0c;需要中间有DHCP中继进行传达&#xff0c;由DHCP中继指定DHCP服务器的位置&#xff0c;可以很好的对其跨网段分配IP地址起到指引的作…

第 2 课 ROS 系统安装和环境搭建

第 2 课 ROS 系统安装和环境搭建 1.版本选择 不同的 Ubuntu 安装的 ROS 版本不同&#xff0c;其中 Ubuntu18.04 的 ROS 对应版本为Melodic。 Ubuntu版本ROS版本Ubuntu16.04KineticUbuntu18.04MelodicUbuntu20.04Noetic 2.检查 Ubuntu 的软件和更新源 找到系统中的“软件和…

数据模型/数据建模的含义

我们可以从以下四个方面来了解 &#xff08;1&#xff09;、业务模型 &#xff08;2&#xff09;、构建表关系/表链接 &#xff08;3&#xff09;、数学模型 &#xff08;4&#xff09;、算法模型 业务模型 建立业务模型的重点是懂业务&#xff0c;即了解业务的整个过…

Java项目:07 Springboot的客户管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 springboot客户管理系统 功能模块&#xff1a;登录修改密码客户列表充值列表消费记录客户类型 环境&#xff1a;IDEAjdk1.8Tomcat9MySQL5.7maven3.6…

RK3568笔记八: Display子系统

modetest 是由 libdrm 提供的测试程序&#xff0c;可以查询显示设备的特性&#xff0c;进行基本的显示测试&#xff0c;以及设置显示的模式。 我们可以借助该工具来学习 Linux DRM 应用编程&#xff0c;另外为了深入分析 Rockchip DRM driver&#xff0c;有必要先了解一下这个…