北邮大三交换原理实验一时间表调度.doc
文本预览下载声明
《现代交换原理》实验报告
实验名称 时间表的调度实验
班 级
学 号
姓 名
实验1 时间表的调度实验
一、实验目的
驱动交换网络实验用来考查学生对时间表调度原理的掌握情况。
在我们设计的时间表调度实验中,这个调度表的调度是静态的。所谓静态,是指我们的调度表是在系统初始化的时候就建立起来的,在系统运行的情况下不再改动。 实验要求的就是这个调度表的初始化。这个调度表如下:
时间(10ms)? \任务 ?0:摘挂机检测任务 1:脉冲检测任务 2:位间隔检测任务 ?????? 0 ?????? 0/1 ?????? 0/1 ????? 0/1 ?????? 1 ?????? 0/1 ?????? 0/1 ????? 0/1 ?.....
????????????????????????????????????????? ....
????????????????????????????????????????????????????????????????????????? ..... ????? 18 ?????? 0/1 ?????? 0/1 ?????? 0/1 ????? 19 ?????? 0/1 ?????? 0/1 ?????? 0/1
我们这个交换系统提供了三个周期性调度程度(摘挂机检测程序、脉冲识别程序和位间隔识别程序),它们的调用周期分别为200ms、10ms和100ms,所以我们系统的最小调度时间为10ms。如图所示,每隔10ms,我们就会检查这个表的一行,如果该行上某一列为1,我们就执列所对应的任务,如果为0,就什么都不做。每当执行到这个表的最后一行,调度任务会返回第一行循环执行。而你所要做的就是按照你的理解来填写这个调度表。
实验步骤:
了解实验原理及其设计;
了解实验平台的使用及数据结构;
编写C程序实现时间调度表的初始化;
在实验平台上运行程序;
三、源代码
1、实验主要数据结构:
函数功能:完成调度表的初始化;
函数原型:initSchTable(int ScheduleTable[SchTabLen][SchTabWdh]);
其中SchTalLen和SchTabWdh为在bconstant.h中的宏定义:
#define SchTabLen 20 //代表这个调度表为20行(相邻行之间的时间间隔为 10ms);
#define SchTabWdh 3 //代表三个周期性调度任务
//0:摘挂机检测任务;1:脉冲检测任务;
//2:位间隔检测任务;
实验代码
#include bconstant.h
extern C _declspec(dllexport) void initSchTable(int ScheduleTable[SchTabLen][SchTabWdh])
{
int i;
for(i=0;iSchTabLen;i++){
if(i%20 == 0)
ScheduleTable[i][0]=1;
else
ScheduleTable[i][0]=0;
ScheduleTable[i][1]=1;
if(i%10 == 0)
ScheduleTable[i][2]=1;
else
ScheduleTable[i][2]=0;
}
return;
}
四、实验结果
时间调度表初始化后能正确检测摘挂机动作并进行通话,通话结束后一方挂机未挂机一方送忙音。被叫正在通话时会正常给主叫送忙音。
五、实验小结
本次实验比较简单,需要认真阅读实验原理及设计,了解如何调度时间表,所做的编程就是对时间调度表进行初始化,在主要数据结构下编程也比较容易,实验过程没有出现什么问题,加深了对交换机时间表调度情况的理解。
显示全部