操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…

目录

一、论文核心思想:

二、降低RAM的思想

三、基本的相关定义

四、单处理器方面

五、优化单处理器中的堆栈使用

六、多处理器方面

七、基本的相关调度

八、协议特点


Minimizing Memory Utilization of Real-Time Task Sets in Single and Multi-Processor Systems-on-a-chip 最小化处理器片上系统中实时任务集的内存利用率

一、论文核心思想:

-引入了一个全新的概念,抢占阈值,并利用这个概念对单处理器上的SRP进行改进,使其内存利用率进一步提高。

-介绍了一种用于在多处理器系统中共享资源的快速简单算法,以及用于将抢占阈值分配给任务的流程。保证硬实时任务集的可调度性的同时最小化 RAM 使用。

二、降低RAM的思想

论文背后的想法是基于非交错执行。在SRP中,任务执行是完美嵌套的:如果任务 A 抢占任务 B,则 B 不会在 A 结束之前再次执行。这样, 可以对任务的所有执行帧使用单个堆栈。

而如果任务抢占仅限于在选定的任务组之间发生,则可以限制堆栈中同时活动的任务帧的最大数量,从而减少堆栈对 RAM 空间的最大需求。——即让部分组成为不可被抢占组,任务一旦执行就不可被抢占。

单处理器方面,文章给出了SRPT 的算法,它允许在EDF方案下对所有实时任务使用一个堆栈; 用于分配调度参数的优化过程,在不损害任务集的可调度性的情况下最小化最大堆栈大小。

多处理器方面,文章给出了MSRP 的算法,它允许分配在不同处理器上的实时任务通过共享内存进行通信/交互; 每个任务都分配给一个处理器,一个处理器上的所有任务共享相同的进程栈; 用于将任务分配给处理器和分配调度参数的优化过程,以最小化整体堆栈大小。

三、基本的相关定义

解释:任务在处理器上执行时被抢占的条件只有抢占任务的抢占优先级高于该任务的抢占阈值(抢占优先级是SRP论文中提出的,抢占阈值为本文提出,用于减少任务的抢占),倘若不满足该条件,哪怕抢占优先级与任务优先级均高于正在运行任务也不允许任务抢占。(增加了任务抢占的苛刻条件)

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第1张图片

 解释:任务集可以划分为非抢占组。给出了非抢占组的定义,即倘若对于组内的任意两个任务,任务相互都是无法抢占的。显然,组数越少,对堆栈大小的要求就越低。如何优化这个分组问题,也是文章后续需要解决的问题

四、单处理器方面

1)提出优化的前提点——SRP的契合性和抢占苛刻度:在SRP中,当任务访问临界区时,系统上限被提升到当前系统上限和资源上限之间的最大值。 这样,到达的任务不能抢占正在执行的任务,除非它的抢占级别大于当前系统上限。 这种机制可以被认为是另一种限制可抢占性的方式。

2)任务调度规则:如果想让任务R1和任务R2相互不可抢占,可以让它们共享一个伪资源 pk:资源 pk的上限是R1R2抢占级别之间的最大值。 在运行时, R1 R2的实例将在开始执行时锁定 pk 并持有锁定直到它们完成。 假设任务R1需要一组伪资源 p1, ... ,ph。 当R1开始执行时,它会锁定所有这些资源:在 SRP 中,这对应于将系统上限提高到 maxceil(pi)),将这个值定义为任务R1的抢占阈值。也就是说,只要找到这组伪资源,就能够让R1R2相互不可抢占。(具体将在后续进行说明)

3)SRPT优点: 首先,它无缝集成了对互斥资源的访问和抢占阈值,实现工作量很小,没有额外的开销,它允许在 EDF 之上实现抢占阈值机制。 此外,由于 EDF 是最优的,给定的抢占阈值分配更有可能产生可行的调度。


个人看法:实际来说我并没有认为SRPT做出什么及其创新性的改动,仅仅是相比于SRP增加了一个抢占阈,(而且抢占阈值也是本来SRP当中自己创新的点只是没有提出这种概念),以此来减少任务之间的抢占,他们只是找了一种方法去找到一组最好的伪资源分配给任务,从而可以减少堆栈同时活动任务帧的数量,而且这种思想在之前的论文中就有过,本篇论文更重要的是对于多处理器上的讨论和策略

五、优化单处理器中的堆栈使用

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第2张图片

以上为相关定义 

步骤:

步骤 1 找到任务的抢占阈值的最佳分配

步骤 2 找到一组最佳的非抢占组,使总堆栈大小最小化,保持调度的可行性

该算法选择可能的抢占阈值分配,并使用之前SRP测试调度的不等式测试可行性(等式1)。

优化算法的工作原理如下:

1)任务通过降低抢占级别来排序;

2)从具有最高抢占级别的任务开始,根据等式 1尝试提高每个任务的抢占阈值

3)给定一个可行的抢占阈值分配,将任务集划分为非抢占式组并计算最大堆栈大小

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第3张图片

用于将任务集划分为抢占组的算法更为复杂,概述如下:

1)通过升序抢占阈值对任务进行排序;

2)算法首先为每个任务找到最大组。 任务 T 的最大组是可以使用 T 作为代表性任务创建的最大非抢占组。 (非抢占组的代表性任务是组中所有任务中阈值最小的任务) 。

3)然后,该算法调用一个递归函数,该函数使用上一步计算的信息将所有任务分配给非抢占组。 该函数称为 create-group(),递归地计算所有解决方案,包括将任务划分为一组非抢占式G组。

下图为找最大组的算法。

解读:其实就是先创建一个空列表,由于按升序排序后k>i则任务k的抢占阈值大于i,之后再次找无法相互抢占的嵌套插入就能够找到最大组。最开始插入的任务就是代表性任务。

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第4张图片

用于将任务集划分为抢占组的算法更为复杂,概述如下:

1)通过升序抢占阈值对任务进行排序;

2)算法首先为每个任务找到最大组。 任务 T 的最大组是可以使用 T 作为代表性任务创建的最大非抢占组。 (非抢占组的代表性任务是组中所有任务中阈值最小的任务) 。

3)然后,该算法调用一个递归函数,该函数使用上一步计算的信息将所有任务分配给非抢占组。 该函数称为 create-group(),递归地计算所有解决方案,包括将任务划分为一组非抢占式G组。

函数 create-group是程序的核心。每个任务都分配了一个新索引,该索引对应于它在抢占阈值顺序中的位置(从 0 开始)。调用时,该函数计算一组从 G 开始的新组, min-stack 指向总体堆栈要求的当前最小值,并求和到正在计算的解决方案的(部分)堆栈要求。第一次调用该函数时,g 的值为 0(算法从具有最低阈值的任务开始),min-stack 指的是包含所有堆栈要求(最坏情况堆栈要求)的总和。尚未计算出 G 组。第 9-31 行用于选择性地提取 Mg 的一个子集,并将其插入到 G 中,以测试解决方案的最优性并进行更新。但在最坏的情况下,算法的复杂度是任务数量的指数。

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第5张图片

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第6张图片

六、多处理器方面

1)基本定义:资源可以分为本地资源和本地资源。 本地资源仅由属于同一处理器的任务使用,而全局资源由属于不同处理器的任务使用。

2)核心思想:MSRP希望让属于一个任务的所有处理器共享一个队列,同时各个处理器均有自己的堆栈,如果一个任务试图访问全局资源,但该资源已被占领,则会采用自旋锁的方式,但自旋锁会浪费时间,故而当任务执行全局资源的临界区时,优先级将被提高到该资源上的最大优先级。

3)规则 1:对于本地资源,算法与SRP算法相同。 特别地,为每个任务定义了一个抢占级别,为每个本地资源定义了一个上限,为每个处理器 Pk 定义了一个系统上限 。
规则 2:允许任务通过嵌套的临界区访问本地资源。 可以嵌套本地和全局资源。 但是,不能嵌套全局临界区,否则会发生死锁。
规则 3:对于每个全局资源,每个处理器 Pk 都定义了一个上限,该上限大于或等于 Pk 上任务的最大抢占级别。
规则 4:当分配给处理器 Pk 的任务 T 访问全局资源 pl 时,系统上限 πk 提高到 ceil(pl) 使任务不可抢占。 然后,任务检查资源是否空闲:在空闲情况下,它锁定资源并执行临界区。 否则,任务被插入到全局资源上的一个 FCFS 队列中,然后执行忙等待。
规则 5:当分配给处理器的任务 r 释放全局资源 pl 时,算法检查相应的 FCFS 队列,如果其他任务 T 正在等待,则授予对该资源的访问权限,否则该资源是解锁状态。 然后,系统上限恢复到先前的值。

七、基本的相关调度

操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第7张图片

 操作系统论文导读(四):Minimizing Memory Utilization of Real-Time Task Sets in Single and…_第8张图片

考虑一个由两个处理器和五个任务组成的系统。任务 12 3 分配给处理器 P1:任务 3 使用本地资源 p1,任务 2 通过嵌套关键使用资源 p1 p2 部分,并且任务1 不使用任何资源。 任务 4 5分配给处理器 P2:任务 4 使用全局资源 p2 而任务 5 不使用资源。

资源 p1 的上限为 2。处理器 P1 上资源 p2 的上限为 3,处理器 P2 上资源 p2的上限为 2

在时间 t =  3 ,任务 2 被阻塞是因为它的抢占级别 为2 等于处理器 PI 上的当前系统上限 2

在时间 t = 5,任务 3 锁定资源 p2 并将系统上限 提高到 3

在时间 t = 6,任务 4 尝试访问当前被 任务2 锁定的全局资源 p2。因此,它提高了系统上限P2处理器 的天花板到2 并执行忙等待。

在时间 t = 7 时,r1 r5 都被阻塞。 在时间 t = 8 时,任务 3 释放全局资源 p2,任务 4 可以进入 p2上的临界区。 同时将处理器P1的系统上限设置回2,此时任务1可以抢占。

八、协议特点

1)定理一旦作业开始执行,它就不能被阻塞,只能被更高优先级的作业抢占。

2)一个作业最多可以经历一个阻塞时间等于一个较低抢占级别的任务的一个临界区的持续时间(加上跨度锁定时间,如果资源是全局的)。

3)在设计分配算法时,目标之一是尽可能减少自旋锁时间。值得注意的是,使用 MSRP,每个处理器几乎独立于其他处理器工作。

4)使用 MSRP 可以将一个堆栈用于分配给同一处理器的所有任务。

5)MSRP 不需要本地资源的信号量或阻塞队列,而全局资源只需要一个 FIFO 队列。

6)最后,MSRP SRP 一样,倾向于减少数量 系统中的抢占,因此开销较少,但是,这是以潜在危险的自旋锁时间为代价的。

你可能感兴趣的:(OS学习笔记,系统安全,risc-v)