操作系统——进程的调度、同步和互斥

一、调度基本概念?

任务的数量很多,由于资源的数量有限,按照一定的规则来决定处理这些事情的先后顺序。

二、调度的分类

2.1 高级调度:

从后备队列中选择合适的作业将其调入内存中,并为其创建线程。外存——》内存中,进程由无——》创建态——》就绪态

2.2 中级调度:

从挂起队列中选择合适的进程将其数据调回内存。外存——》内存,挂起态——》就绪态

2.3 低级调度:

从就绪队列中按照一定的算法选择一个进程为其分配处理机。内存——》CPU,就绪态——》运行态。

三、when:进程调度

3.1 进程的主动调度:

进程的正常停止、运行的过程中发生异常终止、进程主动请求阻塞;

3.2 进程的被动掉度:

分给进程的时间片走完、有更紧急的事情要处理、有更高优先级的进程进入就绪队列;

临界资源:

一个时间段只允许一个进程使用资源。各进程需要互斥的访问临界资源。

四、进程调度的方式

4.1 非抢占式:

只允许进程主动放弃处理机。在进程中有更紧急的任务到达,当前进程依然使用处理机,直到该进程进行终止或主动要求进入阻塞状态。无法及时处理紧急任务。

4.2 抢占式:

当一个进程正在处理机上执行时,如果有一个更重要的任务过来时,会立即终止当前进程。可以让各个进程按照时间片轮流执行的功能。适用于分时操作系统和实时操作系统。

进程切换

是指进程让出处理机,另一个进程占用处理机的过程。进程切换主要完成了对数据的保存和对于新进程的数据的恢复。

五、进程调度的算法

5.1 先来先服务:

思想:主要从公平的角度进行型考虑;
规则:按照作业、进程先到达的先后顺序进行服务;
是否时抢占式:非抢占式;
优缺点:公平算法实现简单 排在长作业后面的作业需要等待很长时间,带权周转时间大。
在这里插入图片描述

5.3 短作业优先

思想:追求最少平均等待时间、最少平均周转时间;
规则:最短的作业、进程优先得到服务;
是否可抢占:SJF和SPF是非强占式的算法,但也有抢占式的版本:最短剩余时间优先算法。
优缺点:最短的平均等待时间、平均周转时间。不公平,对于长作业不利、对于短作业有利。作业的运行时间是由用户提供的,并不一定真实。
是否导致饥饿:会
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.3 高相应比优先

思想:要考虑作业、进程的等待时间和要求服务时间
算法规则:响应时间比=等待时间+要求服务时间/要求服务时间
是否可抢占式:非抢占式,只有当前运行的作业、进程主动放弃处理机时才需要调度;
是否会饥饿:不会
在这里插入图片描述

六、进程互斥

do{
entry section; 进入区 :负责检查是否能进入临界区;
critical section; 临界区 :访问临界资源的代码
exit section; 退出区 :负责解除正在访问临界资源的标志
reminder section; 其他处理 
}while(true)

6.1 进程互斥遵循的原则:

1、空闲等待:临界区空闲时,允许一个进程进入临界区;
2、忙则等待:当临界区已经有一个进程在执行,其他进程需要在临界区外进行等待
3、有限等待:当请求访问的进程,应该保证在有限时间内进入到临界区;
4、让权等待 :当进程不能进入到临界区时,应立即释放处理机,防止忙等待。

6.2 进程互斥的算法:

6.2.1 单标志法:

每个进程访问临界区的权限只能由另一个进程进行赋予;
在这里插入图片描述
**问题:**如果此时允许进入临界区的进程是P0,而P0一直不访问临界区,虽然此时临界区空闲,但是并不允许P1进行访问。

6.2.2 双标志前检查法

在这里插入图片描述

6.2.3 双标志后检查法

在这里插入图片描述

6.2.4 PeterSon算法

在这里插入图片描述

七、信号量机制

7.1 信号量的定义:

信号量就是一个变量,可以用一个信号量来表示某种资源的数量。比如某个系统有一个打印机,就可以设置为初值为1的信号量;

7.2 整型信号量

在这里插入图片描述

7.3 记录型信号量

在这里插入图片描述

八、信号量实现互斥和同步

8.1 信号量实现进程同步

在这里插入图片描述

8.2 信号量实现进进程互斥

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值