-
在实时系统中,任务互斥访问关键数据结构、I/O设备等共享资源时,需要采用实时锁协议以避免死锁、阻塞链,同时减小优先级反转所造成的调度损失。在基于共享内存的多处理器实时系统中,文献[1]提出了一种单处理器优先级天花板协议(priority ceiling protocol, PCP)[2]的多处理器天花板协议(multiprocessor priority ceiling protocol, MPCP)。该协议适用于分组固定优先级(partitioned fixed-priority, P-FP)[3-4]调度下的多核/多处理器实时系统。
为了确保实时任务在其截止时限内完成,需要对任务的可调度性进行定量分析。在基于P-FP+ MPCP的调度策略下,可调度性分析包含任务最坏阻塞时间分析。文献[1]将任务阻塞分为本地局部资源阻塞、本地全局资源阻塞、远程低优先级任务阻塞、远程高优先级任务阻塞,以及间接阻塞,并通过计算各部分阻塞时间的累加和得到任务最坏阻塞时间。由于前两个阻塞部分并非相互独立,该方法存在重复计算问题。文献[5]将任务描述为临界区与非临界区相间的模型,采用响应时间分析法(response time analysis, RTA)[6-8]计算任务远程阻塞时间。该方法减小了文献[1]中的重复计算问题,但没有考虑相邻临界区间的间隔,因此所得的最坏阻塞时间仍较保守。文献[3]利用任务中相邻临界区间的最短时间间隔,提出了新的任务最坏时间分析方法。该方法在相邻临界区最短时间间隔较大时可排除文献[1]中的部分保守计算,相反则可能得到更坏的结果。文献[9]改进了文献[5]中的计算方法,提高了任务最坏阻塞响应时间计算的准确性。为了进一步提高任务阻塞时间分析的准确性,本文结合文献[5]的任务模型以及文献[9]的RTA分析框架,提出了分析任务多次请求同一共享资源所需的最短执行时间,以及任务在任意时间内累计执行临界区上限的方法,并基于该分析方法提出一种新的任务最坏阻塞时间分析方法。该方法进一步减小了分析所得的任务最坏阻塞时间,实验表明,该分析方法可提高实时任务集合的可调度性。
HTML
-
令 ${N_{i,k}}$ 表示 ${J_i}$ 请求资源 ${\rho _k}$ 的次数, ${\tau _{i,k,x}}$ 表示 ${\tau _i}$ 第x次访问 ${\rho _k}$ 的临界区, ${S_{i,k,x}}$ 表示与 ${\tau _{i,k,x}}$ 对应的临界区编号。如图 1所示, ${N_{i,k}} = 2$ , ${N_{i,h}} = 1$ , ${\tau _i}$ 在其第3个临界区中第2个请求 ${\rho _k}$ ,因此 ${S_{i,k,}}_2 = 3$ 。从 ${r_{i,l}}$ 到 ${\tau _i}$ 第x次( $1 \le x \le {N_{i,k}}$ )请求 ${\rho _k}$ 的最短时间间隔可由式(1)计算如下:
变量 含义 ${N_{i,k}}$ ${J_i}$ 请求资源 ${\rho _k}$ 的次数 ${\tau _{i,k,x}}$ ${\tau _i}$ 第x次访问 ${\rho _k}$ 的临界区 ${S_{i,k,x}}$ 与 ${\tau _{i,k,x}}$ 对应的临界区编号 ${d_{i,k,x}}$ 从 ${r_{i,l}}$ 到 ${\tau _i}$ 第x次( $ 1 \le x \le {N_{i,k}}$ )请求 ${\rho _k}$ 的最短时间间隔 ${\delta _{i,k,x}}(n)$ 从 ${J_i}$ 开始执行 ${\tau _{i,k,x}}$ 起,到其随后第n次请求 ${\rho _k}$ 的最短时间间隔 ${\eta _{i,k,x}}(\Delta t)$ 从 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}$ 开始, ${\tau _i}$ 在 $\Delta t$ 时间内请求 ${\rho _k}$ 的最大次数 $\Delta t$ 从 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}$ 开始, ${\tau _i}$ 在接下来的n次对 ${\rho _k}$ 的请求中其相应的临界区执行时间 ${\xi _{i,k}}$ ${\tau _i}$ 的一个作业在与 ${\rho _k}$ 相应的临界区中的累计执行时间 ${\varphi _{i,k}}$ ${\varphi _{i,k}}$ 在 ${\rho _k}$ 的临界区内被其他任务抢占的最大时间 ${\varepsilon _{i,k}}$ ${\tau _i}$ 占用资源 ${\tau _i}$ 的最大时间 ${b_{i,k,L}}$ ${\tau _i}$ 每次被异核低优先级任务阻塞的时间上限 ${b_{i,k,H}}(\Delta t)$ ${b_{i,k,H}}(\Delta t)$ 每次请求全局资源 ${\rho _k}$ 时,在 $\Delta t$ 内被异核高优先级任务阻塞的最大时间 ${Y_{i,k}}$ ${\tau _i}$ 每次请求全局资源时,被远程阻塞的最大时间 ${Y_i}$ ${\tau _i}$ 最大远程阻塞时间 ${\delta _{i,*,j}}(n)$ 从 ${J_i}$ 开始执行 ${\tau _{i,k,x}}$ ,执行n个临界区的最短时间间隔 ${\tau _{i,k,x}}$ 从 ${J_i}$ 执行 ${\tau _{i,k,x}}$ 开始,执行n个临界区的临界区执行时间之和 ${B_{i,L}}$ 在 ${\tau _i}$ 的一次执行中,其被本地低优先级任务阻塞的时间上限 ${B_i}$ ${\tau _i}$ 的最大本地阻塞时间 定理1 令 ${t_x}$ 为 ${J_{i,l}}$ 开始执行 ${\tau _{i,k,x}}\left( {1 \le x \le {N_{i,k}}} \right)$ 的时刻, ${t_n}$ 为该任务从 ${t_x}$ 开始到第n次( $n \ge 1$ ,且将 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}$ 设为第一次)请求资源 ${\rho _k}$ 的时刻,则 ${\rm{min}}({t_n} - {t_x}) = {\delta _{i,k,x}}(n)$ 。
其中,当 $x \le {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时:
当 $x > {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时:
当 $x + n - 1 > 2{N_{i,k}}$ 时:
其中,
证明:当 $x \le {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时, $x + n - 1 \in [x,{N_{i,k}}]$ ,即n次请求在 ${\tau _i}$ 的一个作业内完成,如图 2所示。根据式(1)可知, ${\delta _{i,k,x}}(n) = {d_{i,k,}}_{(x + n - 1)} - {d_{i,k,x}}$ 。
当 $x > {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时, $x + n - 1 \in [{N_{i,k}},2{N_{i,k}}]$ ,即n次请求由两个连续作业 ${J_{i,l}}$ 和 ${J_{i,l}}_{ + 1}$ 完成。其中, $[{t_x},{t_n}]$ 可分为三个部分: $[{t_x},{f_{i,l}}]$ , $[{f_{i,l}},{r_{i,l}}_{ + 1}]$ , $[{r_{i,l}}_{ + 1},{t_n}]$ 。若 ${J_{i,l}}$ 从 ${t_x}$ 起连续执行(不被中断)直至任务完成,则 $[{t_x},{f_{i,l}}]$ 取得最小值 ${C_i} - {d_{i,k,x}}$ 。由于 ${R_i} = {\rm{ma}}{{\rm{x}}_{\forall f}}({f_{i,l}} - {r_{i,l}})$ ,所以当 ${f_{i,l}} - {r_{i,l}} = {R_i}$ 时, ${r_{i,l}}_{ + 1} - {f_{i,l}} = {r_{i,l}}_{ + 1} - {r_{i,l}} - {R_i} = {T_i} - {R_i}$ 取得最小值,即 $[{f_{i,l}},{r_{i,l}}_{ + 1}]$ 的最小值为 ${T_i} - {R_i}$ 。由于 ${J_{i,l}}$ 已完成 ${N_{i,k}} - x + 1$ 个请求, ${J_{i,l}}_{ + 1}$ 需完成剩余的 $n - {N_{i,k}} + x - 1$ 个请求。根据式(1), $[{r_{i,l}}_{ + 1},{t_n}]$ 的最小值为 ${d_{i,k,x + n - 1 - {N_{i,k}}}}$ 。综合以上分析,式(2b)得证。
当 $x + n - 1 > 2{N_{i,k}}$ 时,n次请求由至少三个连续作业完成。令 ${J_{i,z}}$ >表示完成n次请求的最后的一个作业,则 $[{t_x},{t_n}]$ 可分为三个部分: $[{t_x},{r_{i,l}}_{ + 1}]$ , $[{r_{i,l}}_{ + 1},{r_{i,z}}]$ , $[{r_{i,z}},{t_n}]$ 。根据前述分析可知, $[{t_x},{r_{i,l}}_{ + 1}]$ 的最小值为 ${C_i} - d_{i,k}^x + {T_i} - {R_i}$ 。 $[{r_{i,l}}_{ + 1},{r_{i,z}}]$ 可包含 $\left\lceil {(n - {N_{i,k}} + x - 1)/{N_{i,k}}} \right\rceil - 1$ 个完成周期,因此该段时间为 $(\left\lceil {(n + x - 1)/{N_{i,k}}} \right\rceil - 2){T_i}$ 。 $[{r_{i,z}},{t_n}]$ 为 ${J_{i,z}}$ 执行直至完成余下的 $n - {N_{i,k}} + x - 1 - (\left\lceil {(n + x - 1)/{N_{i,k}}} \right\rceil - 2){N_{i,k}}$ 个请求所需的最短时间。根据f(x)定义及式(1)可知, $[{r_{i,z}},{t_n}]$ 的最小值为 ${d_{i,k,f}}_{(x)}$ 。综合以上分析,式(2c)得证。
定理1给出了一个任务从某个时刻开始任意次请求某个共享资源所需的最短时间。通过求 ${\delta _{i,k,x}}(n)$ 的反函数,可计算出任意时间间隔内一个任务请求某个共享资源的最大次数。
推论1 从 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}(1 \le x \le {N_{i,k}})$ 的时刻开始, ${\tau _i}$ 在 $\Delta t$ 时间内请求 ${\rho _k}$ 的最大次数为 ${\rho _k}$ 。
参照 ${\delta _{i,k,x}}(n)$ 的计算方法,还可推导出一个任务请求任意次某共享资源时在相应的临界区内执行的时间。进而可计算出任意时间间隔内,一个任务在与某共享资源相应的临界区内的执行时间上限。
推论2 从 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}(1 \le x \le {N_{i,k}})$ 的时刻开始, ${\tau _i}$ 在接下来的n次对 ${\rho _k}$ 的请求中其相应的临界区执行时间为 ${\psi _{i,k,x}}(n)$ 。
其中,当 $x \le {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时:
当 $x > {N_{i,k}} - n + 1$ 且 $1 \le n \le {N_{i,k}}$ 时:
当 $x + n - 1 > 2{N_{i,k}}$ 时:
式中, ${\xi _{i,k}} = \sum\limits_{\Phi ({\tau _{i,j*}}) = {\rho _k}} {{C_{i,j}}} $ 是 ${\tau _i}$ 的一个作业在与 ${\rho _k}$ 相应的临界区中的累计执行时间(令 $\Phi ({\tau _{i,j*}})$ 为临界区 ${\tau _{i,j*}}$ 对应的共享资源)。
推论3 从 ${J_{i,l}}$ 执行 ${\tau _{i,k,x}}(1 \le x \le {N_{i,k}})$ 的时刻开始, ${\tau _i}$ 在 $\Delta t$ 时间内在与 ${\rho _k}$ 相应的临界区上的执行时间上限为 ${\psi _{i,k,x}}({\eta _{i,k,x}}(\Delta t))$ 。