操作系统(进程管理)

news2024/11/17 4:29:24

一、进程的定义及特征

  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计数器未释放。

九、高级通讯原语

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

十、线程

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

  1. 内核支持线程KST

优点:

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

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

③切换开销小

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

缺点:

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

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

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

优点:

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

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

③实现与OS平台无关

缺点:

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

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

  1. 混合方式

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

十一、进程调度

一 .三级调度

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

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

  1. 资源利用率

  1. 响应时间

  1. 周转时间

  1. 吞吐率

  1. 公平性

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

  1. FCFS (先来先服务)有利于长作业,不利于短作业

  1. SJF(短作业优先)有利于短作业,不利于长作业

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

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

不会发生饥饿现象

  1. RR(时间片轮转)

十二、死锁

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

  1. 四个必要条件

①互斥

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

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

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

!!如何打破?

①打破“请求与保持”:

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

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

②打破“不可抢占”:

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

③打破“循环等待”:

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

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

避免死锁

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

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

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

  1. 检测

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

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

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

  1. 解锁

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

②撤销死锁的所有进程。

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

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

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

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

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

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

相关文章

js实现元素样式切换的基本功能

需求&#xff1a;用户第一次点击某些元素&#xff0c;改变元素的某些样式&#xff0c;比如背景颜色&#xff0c;字体颜色。用户第二次点击某些元素&#xff0c;恢复之前的样式。.....思路&#xff1a;准备一定量的div盒子&#xff0c;并取相同的类名<div class"box&quo…

2022年襄阳中级工程师职称水平能力测试成绩出来了吗?

2022年下半年襄阳水平能力测试考试在2月初举行的&#xff0c;目前襄阳水测成绩已出&#xff0c;合格标准已出&#xff0c;襄阳水测今年合格标准是50分及格&#xff0c;以前是30多分及格&#xff0c;今年合格标准突然上涨蛮多&#xff0c;不过大家考的还是不错&#xff0c;分享一…

STC单片机 VS/HX1838红外接收和发送实验

STC单片机 VS/HX1838红外接收和发送实验 📌相关篇《STC单片机获取红外解码从串口输出》🔨所使用的红外接收头VS1838 📋VS1838引脚定义🌿5MM发射头,940nm红外发射二极管 红外遥控发射头。(外观看起来和普通的发光二极管没有什么差异,购买时需要注意确认)。 🔰采用的…

XXL-JOB分布式任务调度框架(二)-路由策略

文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例7.分片广播任务1.引言 本篇文章承接上文《XXL-JOB分布式任务调度框架(一)-基础入门》&#xff0c;上一次和大家简单介绍了下 xxl-job 的由来以及使用方法&…

【Node.js】全局可用变量、函数和对象

文章目录前言_dirname和_filename变量全局函数setTimeout(cb,ms)clearTimeout(t)setInterval(cb,ms)clearInterval(t)setImmediate(cb)clearImmediate()console对象console.info([data][,...])console.error([data][,...])console.warn([data][,...])console.dir(obj[,options]…

【Linux 多线程互斥】如何保证锁的原子性(互斥的原理)

临界资源:可以被多个执行流&#xff08;线程或者叫轻量级进程&#xff09;同是访问的&#xff08;多个执行流共享的&#xff0c;比如&#xff1a;全局、堆等等&#xff09;&#xff1b;临界区&#xff1a;访问这些临界资源的代码&#xff1b;原子性&#xff1a;没有中间态&…

vue动画

vue动画 1.vue动画&#xff08;transition &#xff09; 使用 组件 组件可以用来添加过渡效果&#xff0c;当一个元素或组件被插入或删除时&#xff0c;它会自动应用过渡效果。 name 属性用于指定具体是那个动画生效&#xff0c;如果不加默认是v-开头的 <!-- 可以添加指定的…

Win10搭建Pyspark2.4.4+Pycharm开发环境(亲测可用)

下载资源hadoop3.0.0spark-2.4.4-bin-without-hadoopwinutils下载(对应hadoop3.0.1的bin目录覆盖本地hadoop的bin目录)jdk1.8(默认已按照配置)conda/anaconda(默认已安装)注意:cdh6.3.2的spark为2.4.0但是使用2.4.0本地pyspark有bug,下载的文件可能在第一次解压缩后,如未出现目…

【数据结构】平衡二叉树

目录 一、平衡二叉树的介绍 二、平衡二叉树的插入 1、平衡二叉树的插入步骤 2、平衡二叉树的旋转 2.1左单旋 2.2右单旋 2.3左右双旋 2.4右左双旋 三、平衡二叉树的删除&#xff08;略&#xff09; 四、个人对平衡二叉树见解 五、平衡二叉树整体代码 一、平衡二叉树的…

mycobot 使用教程

(1) 树莓派4B ubuntu系统调整swap空间与使SD卡快速扩容参考&#xff1a;https://www.bilibili.com/read/cv14825069https://blog.csdn.net/weixin_45824920/article/details/114381292?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edef…

内推|香港外企急招ETL工程师!数据分析师+Python开发+运营专家

2月已过半还在找工作&#xff1f;快来看看有没有适合你的岗位&#xff01;01公司&#xff1a;友邦科技 工作地点&#xff1a;成都市高新区OCG国际中心招聘岗位&#xff1a;ETL工程师 15-18k该岗位为香港项目&#xff0c;需要有数仓或者大数据经验。本科IT或数据相关专业&#…

深度优先搜索(DFS)-蓝桥杯

一、搜索搜索是“暴力法”算法思想的具体实现。搜索是“通用”的方法。一个问题&#xff0c;如果比较难&#xff0c;那么先尝试一下搜索&#xff0c;或许能启发出更好的算法。技巧:竞赛时遇到不会的难题&#xff0c;用搜索提交一下&#xff0c;说不定部分判题数据很弱&#xff…

8 Flutter UI 之 路由

一 基本路由路由就是页面的跳转&#xff0c;通过Navigator组件管理路由导航Flutter 提供了两种方式 基本路由和命名路由Container(child: Center(child: Column(children: [ElevatedButton(onPressed: () {// 跳转到购物车界面Navigator.of(context).push(MaterialPageRoute(bu…

教你快速学会画动漫人物表情

动漫人物表情画法&#xff0c;3分钟教你快速学会画表情&#xff0c;快来跟我一起零成本学板绘吧&#xff01;咱们的免费板绘系列教程又来啦&#xff0c;今天教大家的板绘技能是什么呢&#xff1f;今天的板绘学习教程来教你如何画动漫女生的表情&#xff01; 板绘动漫女生的表情…

Instruction Tuning:无/少样本学习新范式

作者 | 太子长琴 整理 | NewBeeNLP大家好&#xff0c;这里是NewBeeNLP。今天分享一种简单的方法来提升语言模型的 Zero-Shot 能力——指示&#xff08;或指令&#xff09;微调&#xff08;instruction tuning&#xff09; &#xff0c;在一组通过指示描述的数据集上对语言模型微…

Nodejs和JavaScript的区别

ECMAScript 定义了语法&#xff0c;写javascript和nodejs都必须要遵守变量定义&#xff0c;循环、判断、函数原型和原型链、作用域和闭包、异步 可以看阮一峰老师写的ECMAScript 6 入门 即&#xff1a; 不能操作DOM,不能监听click事件&#xff0c;不能发送ajax请求不能处理…

Java LockSupport学习

面试题: 1、LockSupport为什么可以先唤醒线程后阻塞线程? 因为unpark()获得了一个凭证&#xff0c;之后再调用park()方法&#xff0c;就可以名正言顺的消费凭证&#xff0c;故不会阻塞。 2、LockSupport为什么唤醒两次后阻塞两次&#xff0c;但最终结果还会阻塞线程? 因为凭证…

Android 实现沉浸式全屏

前言 本文总结 Android 实现沉浸式全屏的实现方式。 实现沉浸式全屏 在一些需要全屏显示的场景下,比如玩游戏、看横屏视频的时候,内容全屏,占满窗口的体验会让用户更加沉浸到对内容的消费中,带来好的用户体验。 沉浸式显示具体来说就是如状态栏和导航栏部分的显示效果调…

C#:Krypton控件使用方法详解(第五讲) ——kryptonPanel

今天介绍的Krypton控件中的kryptonPanel&#xff0c;下面开始介绍这个控件的属性&#xff1a;首先要介绍的是这个控件的外观属性&#xff1a;Cursor属性&#xff1a;表示鼠标移动过这个控件的时候&#xff0c;鼠标的显示状态。具体属性值有哪些&#xff0c;如下图所示&#xff…

第一批因ChatGPT坐牢的人,已经上路了

大家好&#xff0c;我是 Jack。 ChatGPT 的火爆有目共睹&#xff0c;有人靠着它赚了第一桶金&#xff0c;也有人靠着它即将吃上第一顿牢饭。 任何一件东西的火爆&#xff0c;总会给一些聪明人带来机会。 艾尔登法环火的时候&#xff0c;一堆淘宝卖魂的&#xff1b;羊了个羊火…