处理机调度
处理机调度是系统对处理机资源进行分配,使处于就绪状态的进程得以执行。使用的处理机调度算法决定了大型系统运行时的性能。
1.处理机调度层次
一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经过多级处理机调度。处理机调度的层次分三层:
- 高级调度,调度对象为作业,又称作业调度或长程调度,主要用于多道批处理系统中。
- 中级调度,又称内存调度,实际上是存储器管理的对换功能。提高内存利用率和系统吞吐量。
- 低级调度,调度对象为进程,又称进程调度或短程调度,是最基本的调度,对系统性能影响也最大,决定就绪队列中哪个进程应该并且获得处理机。
2.作业与作业调度
- 作业是用户提交给系统的一项相对独立的工作。
- 作业调度的主要任务是,根据JCB(作业控制块)中的信息,检查系统中的资源是否满足作业的需求,并按照调度算法,从外存的后备队列中选取某些作业调入内存,并为其创建进程、分配必要的资源,并放入就绪队列。
- 主要的调度算法如下:
- 最简单的先来先服务(FCFS)调度算法,既可用于作业调度,也可用于进程调度。只考虑作业的等待时间,忽视了作业的运行时间。
- 较常用的短作业优先(SJF)调度算法,既可用于作业调度,也可用于进程调度。只考虑作业的运行时间,忽视了作业的等待时间。
- 较常用的优先级调度算法(PSA),基于作业的紧迫程度,既可用于作业调度,也可用于进程调度。
- 比较好的是高响应比优先调度算法(HRRN),考虑了作业的等待时间和运行时间,改善了系统性能,但是每次调度之前先计算响应比(优先级=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间),增加了系统开销。
3.进程调度
- 进程调度的任务是,保存处理机的现场信息,按某种算法选取进程并分配处理机。
- 进程调度方式分为非抢占式和抢占式(广泛采用),抢占的原则有优先级原则、短进程优先原则、时间片原则。
- 常见的调度算法有:
- 基于时间片的轮转(RR)调度算法,采用非常公平的处理机分配方式,让就绪队列上的每个进程每次只运行一个时间片。
- 优先级调度算法
- 多队列调度算法
- 多级反馈队列调度算法
- 基于公平原则的调度算法
4.实时调度
- 实时调度算法有:
- 最早截止时间优先(EDF)算法
- 最低松弛度优先(LLF)算法
- 优先级倒置现象
处理机死锁
假如系统中有一个资源A和一个资源B,有两个进程P1和P2,P1成功请求并获得A,P2成功请求并获得B。此时,P1请求B,因B被分配给P2而阻塞;P2请求A,因A被分配给P1而阻塞。此时两个进程都被阻塞,都得不到资源继续运行,从而无法释放占有的资源,一直僵持下去而产生死锁问题。
1.死锁的产生
主要是多个进程对临界资源的争夺。产生死锁的必要条件:
- 针对资源的互斥条件
- 请求和保持条件
- 不可抢占条件
- 循环等待条件
2.避免死锁
银行家算法
3.死锁的检测与解除
操作系统02_处理机管理
原文:https://www.cnblogs.com/pycrab/p/9522246.html