操作系统学习:进程管理

知识总览

在这里插入图片描述

进程的定义

在这里插入图片描述
单道程序:在计算机当中,同一时间段内只能有一个程序在运行,系统的各个资源都为其这唯一一个程序服务。在内存当中会记录该程序的程序段以及数据段,以方便该程序的进行。
在这里插入图片描述
在引入多道程序技术之后,同一时刻计算机当中将会有多个程序在并发运行。同样在内存当中也会存储各个并发运行的程序的程序代码,那么操作系统如何找到这些程序相关的信息呢?依靠的是进程控制块。
在这里插入图片描述

进程的组成

进程(进程实体)由程序段、数据段、PCB三部分组成。
在这里插入图片描述
在这里插入图片描述

PCB详解

在这里插入图片描述

进程的组织

在这里插入图片描述

进程的组织方式—链接方式

在这里插入图片描述

进程的组织—索引方式

索引方式和链接方式很相似,反正我感觉差不多都是一样的。
在这里插入图片描述

进程的特征

在这里插入图片描述

回顾

在这里插入图片描述

进程的状态和转换

在这里插入图片描述

进程的五种状态

在这里插入图片描述
在这里插入图片描述

进程状态的转换

在这里插入图片描述
在这里插入图片描述

进程控制

在这里插入图片描述

什么是进程控制

在这里插入图片描述

如何实现进程控制

在这里插入图片描述
详细过程如下:
初始机器状态如下:
在这里插入图片描述
现在我们创建一个进程:
在这里插入图片描述
创建完成之后,进程就由创建态转化为就绪态,修改PCB当中的内容和相应队列(将该进程调入就绪队列中:
在这里插入图片描述
然后等到时机成熟(所需要的系统资源拿到了或者处理机的时间片轮到该进程了),该进程则会被调入CPU处理机中进行运行:
在这里插入图片描述
为什么需要恢复进程运行环境?

这是很自然的,因为该进程可能之前已经被CPU工作过,出于某种原因暂时中止了,所以当再次轮到该进程使用CPU时就需要根据PCB当中的状态信息恢复该进程当时中止运行时的运行环境。

然后是运行态转化为阻塞态,该进程将会进入对应发生的事件的阻塞队列当中去:
在这里插入图片描述
阻塞态转化为运行态:

在这里插入图片描述
完整版本如下:
在这里插入图片描述
上述过程存在一个问题:
如果一个进程从某个队列转移向另一个队列,然而我们并没有把PCB中对应的状态标志给改变,这种情况就是非常危险的,会导致严重的系统错误。
为了防止这个问题,我们使用了原语来实现进程的控制:
在这里插入图片描述

进程控制相关的原语

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回顾

在这里插入图片描述

进程通信

总览

在这里插入图片描述

进程通信概念

在这里插入图片描述

共享存储

共享存储方式下,操作系统会在内存空间中开辟一块共享的空间,这个空间就可供两个进程之间进行信息交换。
在这里插入图片描述

管道通信

在这里插入图片描述

那么管道通信中数据传输是怎么实现的呢?
首先进程1会往管道中写入数据:在这里插入图片描述
当管道中的数据写满了之后,进程2从会开始从这个管道中读数据:
在这里插入图片描述
当进程2将管道中的数据全部读出后,进程1又才能开始往管道中写入数据。
在这里插入图片描述

消息传递

在这里插入图片描述

回顾

在这里插入图片描述

线程概念和多线程模型

总览

在这里插入图片描述

什么是线程,为什么要引入线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引入线程机制所带来的变化

在这里插入图片描述

线程的属性

在这里插入图片描述

线程的实现方式

用户级线程:
在这里插入图片描述
内核级线程:
在这里插入图片描述
二者组合方式中的线程实现方式:
在这里插入图片描述

多线程模型

在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题。

多对一模型

在这里插入图片描述

一对一模型

在这里插入图片描述

多对多模型

在这里插入图片描述

回顾

在这里插入图片描述

处理机调度的概念、层次

总览

在这里插入图片描述

调度的基本概念

以生活中的例子举例:
在这里插入图片描述

调度的三个层次–高级调度

在这里插入图片描述

调度的三个层次–中级调度

在这里插入图片描述
补充知识:进程的挂起态与七状态模型(408不考)
在这里插入图片描述

调度的三个层次–低级调度

在这里插入图片描述

三层调度的联系和对比

在这里插入图片描述

回顾

在这里插入图片描述

进程调度的时机、切换与过程、方式

总览在这里插入图片描述

进程调度的时机

在这里插入图片描述

下面这种情况是不允许进程在处于内核程序临界区时进行处理机调度以及切换的:
在这里插入图片描述
而有些时候处于普通临界区的临界区时又是可以进行进程切换的,比如打印机这台设备被进程使用的情况:
在这里插入图片描述
在这里插入图片描述

进程调度的方式

在这里插入图片描述

进程的切换与过程

在这里插入图片描述

回顾

在这里插入图片描述

调度算法的评价指标

总览

在这里插入图片描述

CPU利用率

在这里插入图片描述

系统吞吐量

在这里插入图片描述

周转时间

在这里插入图片描述
在这里插入图片描述

等待时间

在这里插入图片描述

响应时间

在这里插入图片描述

回顾

在这里插入图片描述

调度算法

总览

在这里插入图片描述

先来先服务算法(First come First serve,FCFS)

在这里插入图片描述

以一个简单的例子为例:
在这里插入图片描述

短作业优先算法(SJF,Shortest Job First)

在这里插入图片描述

以一个例题为例,注意是非抢占式的:
在这里插入图片描述

为什么调度顺序是P1->P3->P2->P4?

因为在0时刻,显而易见此时就绪队列中只有P1进程到达了,其他都还没到达,所以P1先被处理机服务,因为其需要7个时刻的服务时间,当P1进程运行结束时,P2、P3、P4进程都已经到达,因为短作业优先算法是每次选择当前已经到达且运行时间最少的作业优先,所以三个进程中P3的运行时间是最少的,所以P1运行完之后就到P3,P2和P4的运行时间相同,可是P2先到达,所以P2比P3先被服务。

下面是抢占式的短作业优先例题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

高响应比优先算法(HRRN,Highest Response Ratio Next)

高响应比优先算法由来:
在这里插入图片描述
主要就是综合了先来先服务算法和短作业优先算法的优点而产生的算法。
在这里插入图片描述

还是以刚刚的题目为例:
在这里插入图片描述

回顾

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

适合现代交互式系统的调度算法

总览

在这里插入图片描述

时间片轮转调度算法(RR,Round-Robin)

在这里插入图片描述

例子,假设时间片大小为2的情况:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
下面是时间片大小为5的情况:
在这里插入图片描述
如果时间片分配太大,则时间片轮转算法就会退化成先来先服务算法:
在这里插入图片描述
但是时间片设置太小,则会导致进程切换过于频繁:
在这里插入图片描述
一般来说,设计时间片时要让切换进程的开销占比不超过百分之一。

优先级调度算法

在这里插入图片描述

例子,非抢占式优先级调度算法:
在这里插入图片描述
抢占式优先级调度算法:
在这里插入图片描述

在这里插入图片描述

多级反馈队列调度算法

其实就是集上述所有算法之所长于一身的最终算法:

例子:
在这里插入图片描述
这个最好还是结合王道的视频课中的动态PPT的演示动画会更好理解。

回顾

在这里插入图片描述

进程同步、进程互斥

总览

在这里插入图片描述

什么是进程同步

首先要记得,进程具有异步性的特征。异步性是指各个并发执行的进程以各自独立的、不可预知的速度向前推进。
为什么需要进程同步?下面以进程通信中的管道通信方式为例:
在这里插入图片描述
在这里插入图片描述

什么是进程互斥

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

回顾

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在地球迷路的怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值