【问题标题】:Is a real-time system sdhedulable?实时系统是否可调度?
【发布时间】:2014-03-07 21:22:06
【问题描述】:
在我的操作系统书中有一个关于调度系统的问题。
问题是:
实时系统需要处理两个语音呼叫,每个呼叫每 5 毫秒运行一次,每个突发消耗 1 毫秒的 CPU 时间,加上一个 25 帧/秒的视频,每帧需要 20 毫秒的 CPU 时间。系统是否可调度?
解决方案手册有这个答案:
每个语音呼叫每秒运行 200 次,每次突发使用 1 毫秒,因此每个
语音通话需要每秒 200 毫秒或他们两个需要 400 毫秒。这
视频每秒运行 25 次,每次使用 20 毫秒,总共
每秒 500 毫秒。他们一起消耗 900
这本书没有解释如何得出这个结论,也没有给出算法。所以我希望有人能解释这个答案是如何得出的?
谢谢。
【问题讨论】:
标签:
operating-system
real-time
scheduling
【解决方案1】:
所需的时间片比 1 秒小很多,所以可以尝试看看不同的任务是否能在 1 秒内完成它们的工作。
语音每 5 毫秒运行一次。 1/0.005 = 200 次/秒。
视频以 25 帧/秒的速度运行。 = 25 次/秒
语音每次运行需要 1 毫秒 = 200 毫秒/秒。
视频每次运行需要 20 毫秒 = 25*0.020 = 500 毫秒
2 个语音任务 + 1 个视频任务 = 200ms*2 + 500ms = 900ms
希望 RTOS 如何安排此类任务取决于您可以忍受不同任务的抖动程度。例如2 个语音任务可以具有相同的优先级,但高于视频任务 - 允许语音任务在需要时以先进先出顺序运行。 (意味着一个语音任务最多需要等待 1ms 才能被调度),视频任务获得剩余的 CPU 时间