基于时间片轮询的操作系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在系统中,每个进程被分配一个时间段,称作时间片,即该进程允许运行的时间。如果在时间片结束时,进程还在运行,则 CPU 将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU 当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
时间片轮询调度中有趣的一点是如何确定时间片的长度。从一个进程切换到另一个进程是需要一定时间的,因为要保存和装入寄存器值及内存映像等保护现场的工作,更新各种表格和队列等。假如进程切换,有时称为上下文切换,需要的时间为 5 毫秒,再假设时间片长度设定为 20 毫秒,则在做完 20 毫秒有用的工作之后, CPU 将花费 5 毫秒来进行进程切换。 CPU时间的 20% 被浪费在了管理开销上。进程切换时间一定的情况下,如果时间片长度设定的越小时,这种浪费更明显。所以,时间片长度与 CPU 利用率是一对不可调和的矛盾,必须处理好它们之间的关系。为了提高 CPU 效率,我们可以将时间片的长度设的大一些,这时浪费的时间只有就会相对减小。但在一个分时系统中,各个任务对时间片长度的要求是不一致的。例如在一个系统中,可能要求每秒钟更新一下显示内容,每几十毫秒要扫描一下按键,每几毫秒要检测一下串口缓冲区等……可见,各个任务对时间的依赖程度是不一样的。如果时间片设得太长,某些对实时性要求高的任务可能得不到执行,使得系统的实时性变差。总之,时间片的设定应满足对实时性要求最高的那个任务,这样才能确保每个任务都可以及时得到执行而不被错过。
要在一个单片机系统中实现时间片轮询调度,需要依照以下的步骤: 2 确定任务总数及各个任务实对时间实时性的要求2 根据任务对时间的要求,确定时间片的长度 2 估算执行每个任务所花费的时间,确保任务能够在时间片的长度内执行完毕2 如果任务较大,时间片不足于让任务执行完,此时可细化该任务在下面的代码片段中,共有4 个任务需要执行,其中串口对实时性的要求最高。串口采用的波特率为2400Baud ,8 位数据,无校验,1 个停止 位。所以传输1 字节数据所需时间为:4.17ms ,故将时间片长度设定在4ms 是合理的。单片机主机系统的时间片处理函数如下所示