实验二
一、实验目的
深入理解处理机调度算法,了解硬实时概念,掌握周期性实时任务调度算法EDF(Earliest
二、实验原理
EDF为可抢先式调度算法,其调度条件为sum(Ci/Ti)£1;
RMS算法为不可抢先调度算法,其调度条件为sum(Ci/Ti)£n(exp(ln(2)/n)-1)。
三、实验内容
在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。给定一组实时任务,按照EDF算法和RMS算法分别判断是否可调度,在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。为避免图形绘制冲淡算法,Gantt图可用字符表示。
三、实验设计
1、实时任务用task数据结构描述,设计四个函数:select_proc()用于实现调度算法,被选中任务执行proc(),在没有可执行任务时执行idle(),主函数mian()初始化相关数据,创建实时任务并对任务进行调度。
2、为模拟调度算法,给每个线程设置一个等待锁,暂不运行的任务等待在相应的锁变量上。主线程按调度算法唤醒一个子线程,被选中线程执行一个时间单位,然后将控制权交给主线程判断是否需要重新调度。
四、实验代码