欢迎来到天天文库
浏览记录
ID:58855093
大小:285.00 KB
页数:11页
时间:2020-09-23
《操作系统+课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统课程设计报告[上]2007-01-0923:55一.课程设计的目的:通过课程设计更清楚地理解下列基本概念:1.实时调度:指在实时系统下的调用,而实时系统是指系统能够在限定的响应时间内提供所需水平的服务。同时一个实时系统也是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。实时调度算法又可分为:非抢占式调度算法和抢占式调度算法。非抢占式调度算法分为:(1)非抢占式轮转调度算法。 (2) 非抢占式优先调度算法。抢占式调度算法分为: (1)基于时钟中断的抢占式优先权调度算法。(2) 立即抢占(I
2、mmediate Preemption)的优先权调度算法我们此次课程设计只用到了抢占式调度算法。2.最低松弛度优先算法:该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高, 以使之优先执行。 二.课程设计的内容: 设有3个周期性的实时任务A、B、C,任务A要求每20ms执行一次,执行时间为5ms;任务B要求每30ms执行一次,执行时间为15ms
3、; 任务C要求每50ms执行一次,执行时间为10ms。试编一调度程序按最小松弛度优先算法对这3个任务进行调度并输出每次调度时被调入运行任务的状态: (任务名,所处周期数,调度时刻,运行持续时间)。 注:①程序中设置一个closetime(建议定为200)控制调度程序的终止。 ②变化A,B,C的周期和执行时间,再运行你的程序。注意:设定实时任务的处理时间和周期时应满条件:
4、 三.三个周期性实时任务的最短松弛度优先调度算法程序:#include#define closetime 200 #define PERIOD1 20 /*任务1的周期*/ #define PERIOD2 30 /*任务2的周期*/#define PERIOD3 50 /*任务3的周期*/#define CPUTIME1 5 /*任务1需要的CPU时间*/ #define CPUTIME2 15 /*任务2需要的CPU时间*/#define CPUTIME3 10 /*任务3需要的CPU时间
5、*/typedef struct TCB { int period; /*周期*/ int cputime; /*需要的cpu时间*/ int remain; /*剩余的cpu时间*/ int pnum; /*所处周期数*/ int laxity; /*松弛度*/ } TCB; TCB tcb[3]; /*任务控制块
6、,容易扩充为多个*/ int curtime; /*当前时间,初始为0*/ void init(void) {int i;float f; curtime=0;/*当前时间为0*/ tcb[0].period=PERIOD1;tcb[0].cputime=CPUTIME1;/*周期与*/ tcb[1].period=PERIOD2;tcb[1].cputime=CPUTIME2;/*CPU时间*/ tcb[2].period=PERIOD3;tcb[2].cputime=CPUTIME3;f=(float)tcb[0].cputime/tcb[0]
7、.period+(float)tcb[1].cputime/tcb[1].period+(float)tcb[2].cputime/tcb[2].period;/*数据合法性检查*/ if(f>1){ printf("非法周期!");return; } for(i=0;i<3;++i){ tcb[i].pnum=1;/*初始周期号*/ tcb[i].remain=tcb[i].cputime;/*初始剩余时间*/ tcb[i].laxity=tcb[i].period-tcb[i].remain;/*初始松弛度*/
8、 }
此文档下载收益归作者所有