计算机操作系统是管理和控制计算机硬件与软件资源的程序,它的核心组成部分之一是处理机调度,它决定了如何有效地分配CPU时间给各个进程。本篇主要探讨处理机调度的基本概念、调度算法,以及与死锁相关的主题。
处理机调度分为高级调度、中级调度和低级调度三个层次。高级调度(High Scheduling)关注于作业的接纳,决定接纳多少作业以及接纳哪些作业,以优化系统资源的使用。低级调度(Low Level Scheduling),又分为非抢占式和抢占式,前者在进程执行结束、发生I/O请求或执行特定原语操作时触发,后者则基于优先级、短作业优先或时间片原则,允许当前进程被更高优先级的进程中断。中级调度(Intermediate-Level Scheduling)是为了提高内存利用率和系统吞吐量,将无法运行的进程挂起在外存,待条件成熟后再调入内存。
调度队列模型有三种常见类型:仅有进程调度的模型、具有高级和低级调度的模型以及具有三级调度的模型。不同的模型可以根据系统需求调整就绪队列和阻塞队列的数量及管理方式。
调度算法的选择依据面向用户和面向系统的准则,如周转时间短、响应时间快、截止时间保障、优先权原则、系统吞吐量高、处理器利用率好以及资源平衡利用等。常见的调度算法包括先来先服务(FCFS)和短作业(进程)优先(SJF/SFP)。FCFS算法简单公平,但可能导致长作业等待时间过长;SJF/SFP算法可以减少平均周转时间,但可能让长作业长时间等待,甚至可能导致饥饿现象。
死锁是操作系统中一种重要的并发问题,它发生在两个或更多进程互相等待对方释放资源而形成的一种僵局。死锁产生的必要条件包括互斥条件、占有并等待条件、无剥夺条件和循环等待条件。预防死锁的方法通常涉及避免这些条件的发生,如资源预分配、避免环路等待、设置资源有序分配策略等。此外,死锁的检测和解除策略,如银行家算法和资源预留,旨在确保系统的安全性,防止死锁的发生或在出现时及时解决。
处理机调度是操作系统中至关重要的功能,通过合理的调度策略和算法,可以提高系统效率,保证用户需求得到满足,同时避免死锁等并发问题,确保系统稳定运行。