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

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

一.进程的状态

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

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. 通信方面。进程间通信需要进程同步和互斥手段的辅助,以保证数据一致性,而线程间可以直接读写进程数据段来进行通信。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode讲解篇之39. 组合总和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 首先排序数组,然后开始选择数字,当选择数字num后,在去选择大于等于num的合法数字,计算过程中的数字和,直到选数字和等于target, 加入结果集,若数字和…

爬虫案例—表情党图片data-src抓取

爬虫案例—表情党图片data-src抓取 表情党网址:https://qq.yh31.com 抓取心情板块的图片data-src 由于此页面采用的是懒加载技术,为了节省网络带宽和减轻服务器压力。不浏览的图片,页面不加载,统一显示LOADING…。如下图&#x…

tkinter控件中文显示为unicode编码的解决办法

一、背景 最近使用python tkinter编写界面应用时,发现按钮的中文名称在windows上显示正常,但是在linux上显示为中文的unicode编码;文本输入框也是,输入中文输时,text控件上也显示为unicode编码,如下图所示…

【Python数据可视化】matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

02-Dapper

1.2:Dapper 1.2.1:设计要求 1、无处不在的部署: 任何服务都应该被监控到,任何服务出问题都要做到有据可查。2、持续的监控:做到7*24小时全天候监控,任何时候出了问题都要基于监控数据追踪问题根源。1.2.2…

基于SSM+JSP的订餐管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

WordPress企业模板

首页大图wordpress外贸企业模板 橙色的wordpress企业模板 演示 https://www.zhanyes.com/waimao/6250.html

如何领取腾讯云免费服务器?腾讯云服务器免费领取教程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

SAP SQVI制作报表及SE93创建事务代码

在平时的项目中,财务想查询所有的凭证明细,SAP的查询凭证FB03不能满足需求,所以用SQVI制作一个简易的查询报表。 1、打开SQVI,填写自开发报表的名称“ZFB03”,点击“创建”,输入自开发报表的名称“凭证明细…

79LXX 三端负电源电压调节器,具有一系列固定电压输出,适用于小于100mA电源供给的场合

79LXX系列三端负电源电压调节器是单片双极型线性集成电路,采用TO92、SOT89-3的封装形式封装,有一系列固定的电压输出,适用于小于100mA电源供给的场合。 主要特点: 最大输出电流为100mA 固定输出电压分别为-5V、-6V、-8V、-9V、-1…

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SO-GRU蛇群算法优化门控循环单元的数…

7.11、Kali Linux中文版虚拟机安装运行教程

目录 一、资源下载准备工作 二、安装教程 三、kali linux换源 四、apt-get update 报错 一、资源下载准备工作 linux 中文版镜像历史版本下载:http://old.kali.org/kali-images/ 大家可以自行选择版本下载,本人下载的是2021版本 二、安装教程 打开vmvare wokst…

Canopen学习笔记——sync同步报文增加数据域(同步计数器)

1.Canfestival同步报文sync的设置 在OD表中的配置如下: 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文,这里要注意的就是,上面第一张图也提到了,时间单位是us。第二张图,我的0x1006就设置为0xF4240,也就…

docker compose安装gitlab

环境 查看GitLab镜像 docker search gitlab 拉取GitLab镜像 docker pull gitlab/gitlab-ce 准备gitlab-docker.yml文件 version: 3.1 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwaysenvironment:GITLAB_OMNIBUS_CONFIG: |external_url…

HarmonyOS开发FA应用模型下多个页面的声明方式

目录 方式1 方式2 HarmonyOS配套的IDE是DevEco Studio,目前的版本是3.1。官网可以直接下载 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 ​ 方式1 ​在DevEco Studio如果是在pages目录通过右键New->ArkTS File生成的文件,需要注意&…

PHP如何拆分中文名字(包括少数民族名字)

/*** param string|null $name* return array|null*/ function splitName($name) {if (empty($name) || empty(trim($name))) {return null;}//该正则是用来提取$name参数里面的中文字符的。preg_match_all(/[\x{4e00}-\x{9fff}]/u, $name, $matchers);$matchersCount isset($…

互联网医院系统|北京线上问诊|线上问诊系统功能解析

随着科技的不断发展,线上问诊系统作为一种快速、便捷的医疗服务方式在近年来越来越受欢迎。本文将重点介绍线上问诊系统的开发功能及其优势,帮助读者更好地了解这一医疗服务方式的价值和好处。 一、线上问诊系统的开发功能: 1、患者注册与登…

Ovtio不同版本下载

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…

企业如何做到安全又极速的分发传输大文件

在当代企业运营中,文件的传输和分发是至关重要的任务。然而,随着文件体积的增大和信息敏感性的凸显,企业需要找到一种既安全又能够高效传输大文件的方法。本文将深入探讨如何在企业环境中实现安全又高效的大文件传输。 一、分发大文件时需要注…

2023 我的编程之旅——路人贾‘ω‘

哈喽!大家好,我是路人贾😁~今天不读论文也不讲算法,来聊点有意思的! 这是我第100篇博文,我翻了几遍草稿箱的库存,正纠结选哪篇时,一抬头看见了这个活动,眼前瞬间一亮——…