进程调度

    proj13/13.1/13.2概述

    project13是lab4的第一个项目,它基于lab3的最后一个项目proj12。主要参考了Linux-2.6.23设计了一个简化的进程调度类框架,能够在此框架下实现不同的调度算法,并在此框架下实现了一个简单的FIFO调度算法。接下来的proj13.1在此调度框架下实现了轮转(Round Robin,简称RR)调度算法,proj13.2在此调度框架下实现了多级反馈队列(Multi-Level Feed Back,简称MLFB)调度算法。

    • schedule/sched.[ch]:增加进程调度类的定义和相关进程调度类的共性函数。
    • schedule/sched_FCFS.[ch]:基于进程调度类的FCFS调度算法实例的设计实现;
    • user/matrix.c:矩阵乘用户测试程序

    编译并运行proj13的命令如下:

    这其实是在采用简单的FCFS调度方法来执行matrix用户进程,这个matrix进程将创建20个进程来各自执行二维矩阵乘的工作。Ucore将按照FCFS的调度方法,一个一个地按创建顺序执行每个子进程。一个子进程结束后,再调度另外一个子进程运行。这实际上看不出ucore是如何具体实现进程调度类框架和FCFS调度算法的。下面我们首先介绍一下进程调度的基本原理,然后再分析ucore的调度框架和调度算法的实现。