3、处理机调度和死锁

处理机调度层次和调度算法的目标:

1、处理机调度层次:

1)高级调度:又称作业调度,高级调度是决定将外存中后备队列中的哪些作业调度进入内存,为它们创建进程、分配资源,并加入就绪队列。又称为长程调度。(几分钟一次)

2)低级调度:决定处理机就绪队列中的哪个进程获得处理机时间。又称为短程调度,调度算法不能太复杂。(10~100ms一次)

3)中级调度:中级调度就是将某些暂时不执行的进程挂起,将它们先调出内存。需要的时候再调入内存,压入就绪队列。又称中级调度。

2、处理机调度算法的共同目标:

1)提高资源利用率,尤其是cpu利用率,使cpu闲置时间尽可能短。

2)公平性:根据优先级尽可能使得所有的进程获得合理的CPU时间。

3)平衡性:尽可能使得cpu和外部设备保持忙碌状态。

4)策略强制执行:为保证系统执行流程的安全性,某些策略必须强制执行。

3、批处理系统调度算法目标:

1)平均周转时间短,即作业(由程序代码段、数据和指令集组成)从提交到批处理系统到完成的时间短。包括四部分时间:作业在后备队列上的等待时间;进程在就绪队列上等待进程调度的时间;进程在CPU上执行的时间;进程等待I/O操作的时间。

2)系统吞吐量高,单位时间内系统所完成的作业数多。

3)处理机利用率高。

4、分时系统目标:1)响应时间快,响应时间分为三个部分:从信息开始键入到信息传到处理机;处理机对请求信息处理;将响应信息回传到终端。2)均衡性:根据用户任务复杂性,适配对应的响应时间。

5、实时系统目标:1)保证截止时间。保证开始执行的最迟时间或者完成的最迟时间。2)可预测性,在视频播放系统中,预测下一帧数据。

作业与作业调度

1、多道批系统中,操作系统把用户的作业通过输入输出设备存储在磁盘的作业队列中,再由作业调度程序从外存调入内存。

2、作业包含程序、数据和作业说明书。系统根据说明书来控制程序执行。作业执行过程中一般需要分为几个相对独立且相互关联的顺序步骤来完成作业。例如:编译-》链接-》运行。

3、作业控制块:每个作业设置一个作业控制块(JCB)。包括:作业标识、用户信息、作业类型(CPU繁忙型、IO繁忙型、批量型和终端型)、作业状态、调度信息(优先级和作业运行时间)、资源需求(预计运行时间和要求内存大小)和资源使用情况。

4、作业运行三个阶段:后备阶段、运行阶段和完成阶段。

5、作业调度的主要任务是根据JCB信息确定调度哪些作业进入内存,为其创建线程和分配资源。

6、常见调度算法:先来先服务算法、短作业优先算法、优先级调度算法和高响应比调度算法(优先级随等待时间变长而变长)。

进程调度

1、进程调度任务:1)保存处理机状态信息。2)选取进程。3)将进程相关信息配置到处理机对应的寄存器中,将处理机的控制权给进程。

2、进程调度机制:

1)排队器:将就绪的进程排到一个或者多个队列中。

2)分配器:从就绪队列中选取合适进程分配给处理机。

3)上下文切换器:将旧进程的相关状态信息保存到该进程PCB中,将处理器寄存器指针(该指针指向旧进程的寄存器信息)保存到旧进程的PCB中。从新进程的PCB中加载新进程的状态信息,将处理器寄存器指针指向新进程寄存器指针,开始运行新进程。

3、进程调度方式:1)非抢占式,只要进程不因为自己的原因停止,处理器就会一直将cpu时间给它;2)抢占式包括优先级抢占、短进程优先抢占和时间片轮转。

4、进程调度算法

1)时间片轮转调度算法。

2)优先级调度算法,分为抢占式和非抢占式,静态优先级和动态优先级。

3)多队列调度算法:将进程按照类型分发到多个队列中,多个队列设置不同的优先级,每个队列也可以采用不同的调度算法。

4)多级队列算法:设置n个优先级队列,优先级从上到下依次降低;每个队列的时间片依次增加;进程先进入第一个队列,如果在时间片内没有执行完,就放入第二个队列,依次类推。

5)基于公平原则的调度算法,包括:进程平分处理器时间和用户平分处理器时间。

6)保证调度算法:实际占cpu率 = 进程实际占用cpu时间/理论占用cpu时间,占cpu率越低,优先级越高。

实时调度

1、实时调度必要条件:截止时间、资源要求、优先级、强系统处理能力、抢占式调度、快速切换。

2、实时调度算法:

1)非抢占调度算法。

2)抢占调度算法。

3)最早截止时间优先算法,截止时间越早,优先级越高。

4)最低松弛度优先算法,最晚开始时间越早,优先级越高。

5)优先级继承算法,当低优先级进程和高优先级进程共享一块资源时,如果高优先级进程因为被低优先级进程占据资源而导致无法执行,则将低优先级进程的优先级提高到高于优先级的进程。

死锁概述

1、资源包括可重用资源和消耗性资源。又可分为可抢占资源和不可抢占资源。

2、如果一组中所有进程都在等待其他进程释放资源,则称死锁。

3、死锁必要条件:互斥、请求并保持、不可抢占、循环等待。

4、死锁处理方法:

1)预防死锁:通过避免死锁必要条件,预防死锁。避免请求和保持:规定一,进程开始之前需要一次性申请整个运行过程中所有资源,否则不能开始,但是容易导致长时间占用大量资源;规定二,按照进程步,逐步申请资源,执行完当前进程步后释放所有已用完的资源,再进行下一个进程步。避免不可抢占条件:如果一个进程申请一个新资源没有成功后就需要放弃之前申请的所有资源。避免循环等待条件:按照资源需求类型,将进程按顺序分配在不同的队列中,队列中进程顺序执行,申请资源。

2)避免死锁:银行家算法,基本思想是在每次资源分配前系统都会进行安全性检查,以确保资源分配后系统能够进入安全状态。主要检查以下参数:最大需求矩阵、已分配矩阵、需求矩阵、资源总量和资源可用量。

3)死锁的检测:资源分配图,将进程(圆圈)和资源(方框)用有箭头的图形连接起来。按进程执行顺序依次消除资源分配图中的连线,如果不能完全消除,则有可能引起死锁。

4)死锁解除:1)满足死锁进程所需要的全部资源。2)中止死锁进程。包括:中止所有死锁进程和安装优先级逐个中止死锁进程。

5、互斥锁:获取锁资源失败时,切换到其他线程执行。

      自旋锁:获取锁资源失败时,占用资源忙等待,直到锁释放。

       读写锁:可以把读锁同时分配给多个读线程,只对写线程进行锁互斥。

        乐观锁:先操作,后上锁,如果有冲突,再解决冲突。

        悲观锁:先上锁,后操作。

6、sleep()会释放CPU资源,但是不会释放锁资源,如果其他线程也需要这个锁资源,则会等待,直到sleep结束。wait不占有锁资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值