操作系统 二(进程管理)

news2024/11/17 14:46:33

一、进程的定义及特征

  1. 进程的定义

由程序、数据、进程控制块三部分组成

为了使程序可以并发执行,且可以对并发执行的程序加以描述和控制。

不同角度的定义:

进程是程序的一次执行

进程是一个程序及其数据在处理机上顺序执行时所发生的活动;

进程是系统进行资源分配和调度的一个独立单位

传统OS中的进程定义为:

进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位。

为使参与并发执行的每个程序(含数据)都能独立地运行,在OS中为之配置一个专门的数据结构,称之为 进程控制块(PCB)

  1. 进程的特征

具有程序没有的PCB

动态性(最基本)

并发性:多个进程共存于内存中,能在一段时间内同时执行。

独立性:是一个能够独立执行、独立获得资源、独立接受调度的基本单位。

异步性:按各自独立、不可预知的速度向前推进。

二、进程三态及转换、五态和七态图

(一)三态及转换

三态:

运行态:进程占有CPU,并在CPU上运行

就绪态:一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当

调度给其CPU时,立即可以运行)

等待态:进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行)

  1. 进程状态转换:

在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换

就绪-->运行:

调度程序选择一个新的进程运行

运行-->就绪:

运行进程用完了时间片

运行进程被中断,因为一高优先级进程处于就绪状态

运行-->等待:

当一个进程必须等待时:

操作系统尚未完成服务

对一资源的访问尚不能进行

初始化I/O 且必须等待结果

等待某一进程提供输入 (IPC)

等待-->就绪:

当所等待的事件发生时

  1. 五态模型

  1. 进程挂起:

(1)由于进程的不断创建,系统的资源已经不能满足进程运行的要求,这个时候就必须把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参与进程调度,起到平滑系统操作负荷的目的。

挂起进程被换出内存,不参与进程调度直到它们被对换进主存。

(2)挂起进程具有如下特征:

该进程不能立即被执行

进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行

结束进程挂起状态的命令只能通过操作系统或父进程发出

(3)引起进程挂起的原因有:

①操作系统中的进程均处于等待状态,处理器空闲,此时需要把一些进程对换出去,以腾出②足够的内存装入就绪进程运行

③进程竞争资源,导致系统资源不足,负荷过重,此时需要挂起部分进程以调整系统负荷

④把一些定期执行的进程(如审计程序、监控程序、记账程序)对换出去,以减轻系统负荷

用户要求挂起自己的进程,以根据中间执行情况和中间结果进行某些调试、检查和改正

  1. 七态图

三、PCB

一 .PCB的定义、作用

  1. 定义

系统为了管理进程设置的一个专门的数据结构,记录进程的外部特征,描述进程的运动变化过程

系统利用PCB来控制和管理进程

PCB是系统感知进程存在的唯一标志

进程与PCB是一一对应的

  1. 作用

PCB是OS中最重要的记录型数据结构

①作为独立运行基本单位的标志

②实现间断性运行方式

③提供进程管理所需要的信息

④提供进程调度所需要的信息

⑤实现与其他进程的同步与通信

二.PCB结构体包含的内容

  1. 进程描述信息

进程标识符,唯一,通常是一个整数

进程名,通常基于可执行文件名(不唯一)

用户标识符

进程组关系

  1. 进程控制信息

当前状态;优先级;代码执行入口地址;程序的外存地址;

运行统计信息(执行时间、页面调度);进程间同步和通信;阻塞原因

进程的队列指针;进程的消息队列指针

  1. 所拥有的资源和使用情况

虚拟地址空间的现状;打开文件列表

  1. CPU现场保护信息

寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)

指向赋予该进程的段/页表的指针

三. PCB的组织方式

  1. 线性方式

所有PCB组织在一个连续的表中

  1. 索引方式

对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址

  1. 链接方式

同一状态进程的PCB组成一个链表,不同状态对应多个不同的链表

就绪链表、阻塞链表

四、进程的创建与终止

一 创建

  1. 申请空白PCB

  1. 为新进程分配其运行所需资源

  1. 初始化PCB,分配一个唯一的进程标识符,初始化PSW

  1. 新进程插入就绪队列

  1. 通知OS的某些模块

二.终止

  1. 根据进程标识符,找到它的PCB

  1. 将该进程拥有的资源归还给父进程或OS

  1. 该进程拥有子进程,先撤销所有子孙进程

  1. 被撤销的进程出队,归还PCB

五、同步、互斥

  1. 同步

直接相互制约。一个进程运行到某一点时要求另一进程为它提供消息,未获得消息则一直等待,获得消息被唤醒进入就绪。

  1. 互斥

间接相互制约。各进程要求共享资源,有些资源需要互斥使用,各进程竞争使用这些资源。

临界资源:某些资源一次只允许一个进程使用。

临界区:在进程中涉及到临界资源的程序段

使用临界资源的原则:用空让进、无空等待、多中择一、有限等待、让权等待

六、信号量及物理意义、P V操作

(生产者-消费者、读者-写者)

一 .信号量

一个数据结构,值仅能由P、V原语改变

structsemaphore 
{ 
int value; 
pointer_PCBqueue; 
}

物理意义:

S>0:表示有|S|个资源可用

S=0:无资源可用

S<0:S等待队列中的进程个数

P(S):申请一个资源

V(S):释放一个资源

信号量初值大于0

二.P、V

  1. P操作:

P(S){
S = S - 1;
if ( S < 0){
该进程状态置为等待状态;
将该进程的PCB插入相应的等待队列末尾;
}
}
  1. V操作

V(S){
S = S + 1;
if (S < =0){
唤醒相应等待队列中等待的一个进程;
改变其状态为就绪态,并将其插入就绪队列;
}
}
  1. P,V操作必须成对出现

互斥时,它们处于同一进程中

同步时,它们不在同一进程中

同步的P操作在互斥P操作前

七、生产者-消费者问题

两个信号量(表示缓冲区状态):empty(初值为n)、full(0)

一个(保障互斥):mutex(1)

n个缓冲区、m个生产者、k个消费者

八、读者-写者问题

互斥的思想解决同步问题。读写互斥,写者之间互斥

读者:

while (true) {

P(mutex);

readcount =readcount +1;

if(readcount==1)//如果是第一个读者

P (write); //锁住临界区,write初值为1

V(mutex);

P(mutex); //互斥访问

readcount =readcount -1;

if (readcount==0)//最后一个读者

V(write);

V(mutex);

};

如果写者进程先进,第一个读者会等待在write信号量上,第二个及以后的读者会等待在mutex上,因为mutex计数器未释放。

九、高级通讯原语

共享内存、消息传递、管道通信

十、线程

线程的定义:

线程是操作系统进程中能够独立执行的指令序列 (控制流),是处理器调度和分派的基本单位。线程是进 程的组成部分,每个进程内允许包含多个并发执行的 指令序列(控制流) 。

共享同一个私有内存地址空间 l 共享所有外设资源 l 线程之间没有保护机

线程实现方式(论述分析)

  1. 内核支持线程KST

优点:

①多cpu,内核可以调度同一进程中的多个线程并行运行。

②若进程中一个线程被阻塞,内核可以调度进程中的其他线程占用处理机运行,也可运行其他进程中的线程。

③切换开销小

④内核也可采用多线程技术,提高系统执行速度和效率

缺点:

①对对用户的线程切换开销较大

②同一进程中,从一个线程切换到另一线程需要从用户态转到内核态进行。

  1. 用户级线程ULT(功能无须内核支持)

优点:

①线程切换不需要切到内核

②调度算法可以是进程专用

③实现与OS平台无关

缺点:

①线程执行一个系统调用时,进程内所有线程均会被阻塞。

②进程中仅有一个线程能执行

  1. 混合方式

ULT与KST的连接方式不同,分为 多对一模型、一对一模型、多对多模型

十一、进程调度

一 .三级调度

二. 调度与进程状态转换关系(论述分析)

三 .评价调度算法性能的指标

  1. 资源利用率

  1. 响应时间

  1. 周转时间

  1. 吞吐率

  1. 公平性

四.调度算法(综合应用、论述分析)

  1. FCFS (先来先服务)

按照作业进入系统的先后次序来挑选作业,先进 入系统的作业优先被挑选。 算法容易实现,效率不高,只顾及作业等候时间 ,没考虑作业要求服务时间的长短

有利于长作业,不利于短作业

FCFS调度算法的平均作业周转时间与作业提交的 顺序有关。

  1. SJF(短作业优先)

SJF算法以进入系统的作业所要求的CPU时间为标准 ,总选取估计计算时间最短的作业投入运行。 算法易于实现,效率不高,主要弱点是忽视了作业 等待时间 。会出现饥饿现象。

有利于短作业,不利于长作业

实现SJF调度算法需要知道作业所需运行时间, 否则调度就没有依据

  1. HRRN(最高相应比优先)

作业进入系统后的等待时间与估计运 行时间之比称作响应比

响应比=1+已等待时间/估计运行时间

短作业容易得到较高响应比, •长作业等待时间足够长后,也将获得足 够高的响应比 不会发生饥饿现象

  1. RR(时间片轮转)

十二、死锁

  1. 定义:如果在一个进程集合中的每个进程都在等待只能由该集合中的其他一个进程才能引发的事件,则称一组进程或系统此时发生了死锁。

  1. 四个必要条件

①互斥

②请求和保持条件:进程已经占有了一个资源,但又提出新的资源请求,该资源被其他进程占用,请求进程被阻塞,对自己已占有的资源不释放。

③不可抢占条件:进程已获得的资源在未使用完前不能被抢占。

④循环等待:形成等待环路

!!如何打破?

①打破“请求与保持”:

1、 一次性申请运行过程中所需全部资源

2、进程只获得运行初期所需的资源后,便开始运行。运行过程中逐步释放已分配给自己的、已用完的全部资源。

②打破“不可抢占”:

一个已经有了一些不可抢占资源的进程提出新的资源请求而不能得到满足时,必须释放已经保持的所有资源,以后需要时再申请。

③打破“循环等待”:

对系统所有资源类型进行线性排序,赋予它们不同的序号。

银行家算法(综合应用、论述分析)

避免死锁

缺点:对资源分配过于保守,计算太多,缺乏实用价值;

若所有客户都申请希望得到最大贷款额,而银行家无法满足任何一个要求则发生死锁。

死锁的检测与解锁(论述分析)

  1. 检测

①进程-资源分配图无环路,没发生死锁

②有环路,每个资源类中仅有一个资源,则死锁,环路是充要条件。

③资源类中有多个资源,环路是必要条件。

  1. 解锁

①结束所有进程的执行,重新启动操作系统。

②撤销死锁的所有进程。

③逐个撤销陷于死锁的进程,回收资源,直至死锁解除。

④剥夺死锁进程占用的资源,但不撤销,直至死锁解除。

⑤让所有进程回退,直至死锁解除。

⑥将未卷入死锁的进程建立一些新的抑制进程执行到结束。

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

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

相关文章

IDEA Maven Helper插件(详细使用教程)

一、引言 在写Java代码的时候&#xff0c;我们可能会出现Jar包的冲突的问题&#xff0c;这时候就需要我们去解决依赖冲突了&#xff0c;而解决依赖冲突就需要先找到是那些依赖发生了冲突&#xff0c;当项目比较小的时候&#xff0c;还比较依靠IEDA的【Diagrams】查看依赖关系&…

dom基本操作

1、style修改样式 基本语法&#xff1a; 元素.style.样式’值‘ 注意: 1.修改样式通过style属性引出 2.如果属性有-连接符&#xff0c;需要转换为小驼峰命名法 3.赋值的时候&#xff0c;需要的时候不要忘记加css单位 4.后面的值必须是字符串 <div></div> // 1、…

《Hadoop篇》------HDFS与MapReduce

目录 一、HDFS角色职责总结 二、CheckPoint机制 三、Mapreduce序列化 四、Mapper 4.1、官方介绍 4.2、Split计算 4.3、Split和block对应关系 4.4、启发式算法 五、MapTask整体的流程 六、压缩算法 6.1、压缩算法适用场景 6.2、压缩算法选择 6.2.1、Gzip压缩 6.2…

独家 | ChatGPT提高你日常工作的五个特点以及如何使用它来提高代码质量

翻译&#xff1a;陈超 校对&#xff1a;赵茹萱本文约3200字&#xff0c;建议阅读8分钟 本文介绍了ChatGPT提高日常工作的五个特点。ChatGPT已经完全改变了代码开发模式。然而&#xff0c;大多数软件开发者和数据专家们仍然不使用ChatGPT来完善——并简化他们的工作。这就是我们…

【Python】缺失值可视化工具库:missingno

文章目录一、前言二、下载二、使用介绍2.1 绘制缺失值条形图2.2 绘制缺失值热力图2.3 缺失值树状图三、参考资料一、前言 在我们进行机器学习或者深度学习的时候&#xff0c;我们经常会遇到需要处理数据集缺失值的情况&#xff0c;那么如何可视化数据集的缺失情况呢&#xff1…

MSR寄存器访问

1.介绍 MSR是CPU的一组64位寄存器&#xff0c;每个MSR都有它的地址值&#xff08;如下图所示&#xff09;&#xff0c;可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作。 如图中为8个P-state寄存器&#xff0c;地址分别为0xC001 0064 ~ 0xC001 006B&#xff0c;每个寄存…

FyListen 在 MVP 架构中的内存优化表现

FyListen 在 MVP 中的内存优化表现 本文只是分享个人开源框架的内存优化测试&#xff0c;你可以直接跳到最后&#xff0c;参考内存泄漏的分析过程&#xff01; 项目地址&#xff1a; https://github.com/StudyNoteOfTu/fylisten2-alpha1 由于使用到 AOP&#xff0c;所以直接…

【嵌入式开发】microcom安装与使用

microcom安装与使用1.安装2.使用3.用法4.测试三级目录1.安装 sudo apt-get install microcom -yQ&#xff1a;报错E: 在更改保留软件包的同时使用了 -y 选项&#xff0c;但没有搭配 --allow-change-held-packages. A&#xff1a;sudo apt-get install microcom -y --allow-cha…

软件测试面试复述,想知道你面试不过的原因吗?

最近有机会做一些面试工作&#xff0c;主要负责面试软件测试人员招聘的技术面试。 之前一直是应聘者的角色&#xff0c;经历了不少次的面试之后&#xff0c;多少也积累一点面试的经验&#xff0c;现在发生了角色转变。初次的面试就碰到个工作年限比我长的&#xff0c;也没有时…

PowerShell Install Office 2021 Pro Plus Viso Professional

前言 微软Office在很长一段时间内都是最常用和最受欢迎的软件。从小型创业公司到大公司,它的使用比例相当。它可以很容易地从微软的官方网站下载。但是,微软只提供安装程序,而不提供完整的软件供下载。这些安装文件通常比较小。下载并运行后,安装的文件将从后端服务器安装M…

5.1配置IBGP和EBGP

5.2.1实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 实验拓扑如图5-1所示&#xff1a; 图5-1&#xff1a;配置IBGP和EBGP 实验步骤 IP地址的配置 R1的配置 <Huawei>system-view Enter system view, return …

Python每日一练(20230218)

目录​​​​​​​ 1. 旋转图像 2. 解码方法 3. 二叉树最大路径和 1. 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像…

[LeetCode 1237]找出给定方程的正整数解

题目描述 题目链接&#xff1a;[LeetCode 1237]找出给定方程的正整数解 给你一个函数 f(x, y) 和一个目标结果 z&#xff0c;函数公式未知&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满足条件的结果数对可以按任意顺序返回。 尽管函数的具体式子未知…

Vue:@font-face引入外部字体

在项目开发中&#xff0c;我们经常会遇到想要优化字体font-family的问题&#xff0c;如下为默认字体样式&#xff0c;在大屏项目中看起来似乎有些呆板。 默认字体效果默认font属性尽管我们可以使用web安全字体&#xff0c;但是大多数场景下&#xff0c;例如&#xff1a;对于电子…

IOT2.5|第1章嵌入式系统概论|操作系统概述|嵌入式操作系统

目录 第1章&#xff1a; 嵌入式系统概论 1.嵌入式系统发展史 2.嵌入式系统定义* 3.嵌入式系统特点* 4.嵌入式处理器的特点 5.嵌入式处理分类 6.嵌入式系统的应用领域及嵌入式系统的发展趋势 第8章&#xff1a;Linux内核配置 1.内核概述 2.内核代码结构 第1章&#xf…

Linux内核CPU可运行进程队列的负载均衡

前面主要是学习进程的调度管理&#xff0c;默认都是在单CPU上的调度策略&#xff0c;在O(1)调度后&#xff0c;为了减小CPU之间的干扰&#xff0c;就会为每个CPU上分配一个任务队列&#xff0c;运行的时候可能会出现有的CPU很忙&#xff0c;有的CPU很闲&#xff0c;为了避免这个…

Vue:filters过滤器

日期、时间格式化是Vue前端项目中较为常遇到的一个需求点&#xff0c;此处&#xff0c;围绕Vue的过滤器来介绍如何更为优雅的解决此类需求。 过滤器filters使用注意点 Vue允许开发者自定义过滤器&#xff0c;可以实现一些常见的文本格式化等需求。 使用时要注意的点在于&#…

[软件工程导论(第六版)]第1章 软件工程学概述(复习笔记)

文章目录1.1 软件危机1.1.1 软件危机的介绍1.1.2 产生软件危机的原因1.1.3 消除软件危机的途径1.2 软件工程1.2.1 软件工程的介绍1.2.2 软件工程的基本原理1.2.3 软件工程方法学1.3 软件生命周期组成1.4 软件过程概念1.4.1 瀑布模型1.4.2 快速原型模型1.4.3 增量模型1.4.4 螺旋…

Windows系统扩充C盘空间系列方法总结

目录前言方法一 使用自带的Windows的DiskPart扩充C盘1. 打开cmd2.三步命令方法二&#xff1a;使用Windows系统内置磁盘管理扩展C盘方法三. 使用专业磁盘分区工具总结前言 本教程是总结Windows系统进行C盘&#xff08;系统盘&#xff09;扩充空间的系列方法&#xff0c;一般来讲…

VSCode远程调试Linux代码,python解释器配置

安装插件并配置 安装后找到插件图标&#xff0c;点击 点击SSH上的 号 在弹出框中输入命令&#xff1a;ssh usernameip -p port username: 远程服务器的用户名 ip&#xff1a; 远程ip port&#xff1a;端口号&#xff0c;没有可以不用 输入完毕后点击enter 选择ssh配置文件保存…