题目二:处理机调度—实时调度算法EDF和RMS

合集下载

处理机调度-调度算法

处理机调度-调度算法

处理机调度-调度算法处理机调度-调度算法先来先服务(FCFS)调度算法概念将⽤户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,按照先来先服务的⽅式进⾏调度处理。

公平性1.直观看,该算法在⼀般意义下是公平的。

即每个作业或进程都按照它们在队列中等待时间长短决定它们是否优先享受服务2.但如果执⾏时间较短的作业或进程在某些执⾏时间很长的作业或进程之后到达,则它们将等待很长时间轮转法基本思路基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成⽐例过程将CPU的处理时间分成固定⼤⼩的时间⽚。

如果⼀个进程在被调度选中之后⽤完了系统规定的时间⽚,但未完成要求的任务,则它⾃⾏释放⾃⼰所占有的CPU⽽排到就绪队列的末尾,等待下⼀次调度。

同时,进程调度程序⼜去调度当前就绪队列中的第⼀个进程或作业。

轮转法只能调度可抢占资源轮转法只能⽤来调度分配那些可以抢占的资源。

将它们随时剥夺再分配给别的进程例⼦:CPU是可抢占资源的⼀种但如打印机等资源是不可抢占的作业调度不使⽤轮转法:由于作业调度是对除了CPU之外的所有系统硬件资源的分配,其中包含有不可抢占资源,所以作业调度不使⽤轮转法轮转法的时间⽚选取问题时间⽚长度的选择会直接影响系统开销和响应时间过短的问题:如果时间⽚长度过短,则调度程序剥夺处理机的次数增多。

这将使进程上下⽂切换次数也⼤⼤增加,从⽽加重系统开销过长的问题:如果时间⽚长度选择过长,例如⼀个时间⽚能保证就绪队列中所需执⾏时间最长的进程能执⾏完毕,则轮转法变成了先来先服务法由于时间⽚的选取要满⾜相应时间的要求,所以是有如下的关系:q=R/NmaxR:系统对响应时间的要求RNmax:就绪队列中所允许的最⼤进程数Nmax相应的关系:1.在q为常数的情况下,如果就绪队列中的进程数远⼩于Nmax,则响应时间R看上去会⼤⼤减⼩2.由于q值固定,从⽽进程上下⽂切换的时机不变,系统开销也不变。

3.CPU的整个执⾏时间等于各进程执⾏时间加上系统开销。

EDF调度算法

EDF调度算法

2 1)
Page 9
一、引入 2、国内外研究概况
当然,RM是基于这样一种比较理想的硬实时周期任务模型: i. 所有的任务都是周期任务 ii. 所有的任务都是不相关的,即它们没有共享资源 iii.所有任务都有一个固定的执行时间或最大执行时间 iv.所有任务的相对截止时间 都等于它们的周期 v. 所有任务都是可抢占的 vi.系统只有一个处理器 注:若iv不成立,则RM不是最优的固定优先级调度算法。这 事可采用另一种算法:时限单调(deadline monotonic)调度算 法DM,其按任务的相对时限来分配优先级:相对时限越短, 优先级越高。
Page 12
一、引入 2、国内外研究概况
软实时任务和偶发任务的调度 因为软实时任务允许运行时间错过截止期,所以其调度目标 是在保证满足硬实时周期任务的时限前提下,提高软实时任 务的响应时间。目前主要的调度算法有:
i. 后台运行法
ii. 轮询服务器法 iii. 挪用法
Page 13
一、引入 2、国内外研究概况
Page 11
一、引入 2、国内外研究概况
还有其他的动态优先级调度算法,e.g 最小空闲时间优先 (Least Slack Time First,LST)算法。
一个任务在t时刻的空闲时间等于: 截止时刻- t -该任务的剩余执行时间
虽然LST也是具有最优性ቤተ መጻሕፍቲ ባይዱ但需随时监视所有就绪任务,运行 时的开销较大,且如果两个任务的空闲时间接近,很容易产生 调度的颠簸现象,所以实际使用中一般不适用。
Page 5
一、引入 1、背景、目的及意义
从实时系统理论的发展来看,主要有以下几个方面: 有资源互斥的硬实时任务调度: 提出几种资源互斥协议来防止优先级反转和死锁问题, 并给出相应的可调度判定条件。 多处理器实时任务调度,前面的研究都是假定系统中只有 一个处理器,忽略实际复杂的因素,将注意力集中到调度算 法、资源访问控制和可调度性分析判定的基本原理上。这部 分将这些理论应用于包含多个处理器的实时系统中,并处理 在单处理器系统中未出现的问题。

处理机调度——实时调度

处理机调度——实时调度

实验二处理机调度——实时调度算法EDF和RMS1.实验目的:深入理解处理机调度算法,了解硬实时概念,掌握周期性实时任务调度算法EDF(Earliest Deadiest First)和RMS (Rate-MonotonicScheduling)的可调度条件,并能在可调度情况下给出具体调度结果。

2.实验过程在克调度的情况下,创建一组用户级线程。

3.实验内容#include <windows.h>#include <iostream>const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度unsigned short ProductID = 0; //产品号unsigned short ConsumeID = 0; //将被消耗的产品号unsigned short in = 0; //产品进缓冲区时的缓冲区下标unsigned short out = 0; //产品出缓冲区时的缓冲区下标int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列bool g_continue = true; //控制程序结束HANDLE g_hMutex; //用于线程间的互斥HANDLE g_hFullSemaphore; //当缓冲区满时迫使生产者等待HANDLE g_hEmptySemaphore; //当缓冲区空时迫使消费者等待DWORD WINAPI Producer(LPVOID); //生产者线程DWORD WINAPI Consumer(LPVOID); //消费者线程int main(){g_hMutex = CreateMutex(NULL,FALSE,NULL);//函数功能:建立互斥体,用来同步。

如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。

//互斥体的好处是可以在进程间共享//函数原形://HANDLE CreateMutex(// LPSECURITY_ATTRIBUTES lpMutexAttributes,// BOOL bInitialOwner,// LPCTSTR lpName// );//参数说明://lpMutexAttributes:// 指向一个SECURITY_ATTRIBUTES结构的指针,这个结构决定互斥体句柄是否被子进程继承。

实时调度算法

实时调度算法
▪ 4 立即抢占的优先级调度算法:这种算法适用于实时要 求比较严格的实时控制系统。
▪ (4) 代表性的实时调度算法:
▪ 1 时限式调度法(deadline scheduling):是一 种以满足用户要求时限为调度原则的算法。有 周期性调度和非周期性调度。时限有:处理开 始时限(开始截止时间)和处理结束时限(完 成截止时间)两种,在实际中可以使用任一种 时限。
▪ ⑴ 实现实时调度的基本条件:
▪ 1提供必要的调度信息,如就绪时间、开 始截止时间和完成截止时间、处理时间、 资源要求、优先级;
▪ 2系统处理能力强 ▪ 3调度方式,广泛采用抢占调度方式,特
别是在实时要求严格的实时系统;
▪ 4很快的进程和线程切换速度。
▪ ⑵实时调度算法(请同学们看书上P99)
▪ 为了保证不遗漏任何一次截止时间,应采 用最早截止时间优先的剥夺策略。
2. 最低松弛度优先即LLF(Least Laxity First)算法
该算法是根据任务紧急(或松弛)的程度,来确定任务的优 先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈 高, 以使之优先执行。例如,一个任务在200ms时必须完成, 而它本身所需的运行时间就有100ms,因此,调度程序必须在 100 ms之前调度执行,该任务的紧急程度(松弛程度)为100 ms。 又如,另一任务在400 ms时必须完成,它本身需要运行 150 ms,则其松弛程度为 250 ms。在实现该算法时要求系统中有 一个按松弛度排序的实时任务就绪队列,松弛度最低的任务 排在队列最前面,调度程序总是选择就绪队列中的队首任务 执行。该算法主要用于可抢占调度方式中。假如在一个实时 系统中,有两个周期性实时任务A和B,任务A要求每 20 ms执 行一次,执行时间为 10 ms;任务B只要求每50 ms执行一次, 执行时间为 25 ms。

处理机调度算法详解

处理机调度算法详解

关于处理机调度算法《操作系统》教材中,介绍了常用的作业调度算法和进程调度算法。

其中先来先服务法(FCFS)和优先级法对作业调度和进程调度都适用,时间片轮转法(RR)适用于进程调度。

此外,还介绍了其他调度算法,如短作业优先法、最短剩余时间优先法、多级队列法和多级反馈队列法,这4个算法不是课程的重点内容,不作为考核要求。

需要指出的是:(1)在作业调度和进程调度中同时出现的算法,如FCFS、优先级法,其使用原理是基本相同的;(2)作业调度算法和进程调度算法应严格与存储管理中的“请求淘汰换页算法”相区别,注意不要混淆。

下面,结合具体的例题,详解调度算法:1. 先来先服务法(FCFS)算法描述:每次调度时,从后备作业队列或就绪队列中选择一个最先进入该队列的作业或进程。

【例1】下表给出作业l,2,3的到达时间和运行时间。

采用先来先服务调度算法,试问作业调度的次序和平均周转时间各为多少?(时间单位:小时,以十进制进行计算。

)分析解题关键是要根据系统采用的调度算法,弄清系统中各道作业随时间的推进情况。

我们可以用一个作业执行时间图来形象地表示作业的执行情况,帮助我们理解此题。

先来先服务调度算法是按照作业到达的先后次序挑选作业,先进入的作业优先被挑选。

即按照“排队买票”的办法,依次选择作业。

其作业执行时间图如下:或者简化为下图:作业1 作业2 作业3| | | | 时间0 8 12 13由于作业1,2,3是依次到来的,所以刚开始时系统中只有作业1,于是作业1被选中。

在8.0时刻,作业1运行完成,这时作业2和作业3已经到达,都在系统中等待调度,按照先来先服务法的规定,每次调度最先进入就绪队列中的作业,由于作业2比作业3先到达,于是作业2被优先选中运行。

待作业2运行完毕,最后运行作业3。

因此,作业调度的次序是1,2,3。

另外,要记住以下周转时间和平均周转时间的算术公式: 作业i 的周转时间T i =作业i 的完成时间-作业i 的提交时间系统中n 个作业的平均周转时间nT T ni i 1)(1⨯=∑=,其中Ti 为作业i 的周转时间。

RM和EDF算法原论文翻译

RM和EDF算法原论文翻译

RM和EDF算法原论文翻译RM和EDF——硬实时环境下多线程的调度算法摘要:单处理器的多线程调度问题的研究范围已经从它本身的特征拓展到程序运行的可靠性。

研究表明最佳固定优先级调度在大型任务序列集的情况下的最大调度利用率仅为70%。

此外,根据当前任务序列截止期动态分配优先级可以使调度率利用率等于1。

本文还讨论了将两种调度方法结合起来的算法。

1 引言近年来,运用计算机来控制和监测工业生产过程已得到广泛应用和不断扩展,并且在未来很可能得到更大的拓展。

此类应用的多数情况下,计算机由一定数目的时限监控程序和一批非时限任务流所共用。

然而,在其他的应用中,非时限作业不存在且计算机的有效利用只能通过谨慎调度时限监测程序来达到。

后者被称为“纯过程控制”且为本文呈现的组合调度分析提供了理论背景。

本文研究了此类程序设计中的两种调度算法,这两种均为可抢断优先级驱动算法,这意味着正在处理的任务可被任何高优先级任务中断。

第一个算法用一个固定优先级分配能使处理器利用率到达约70%甚至更大。

第二个算法通过动态分配优先级可以达到处理器的全利用。

此外,本文还讨论了两个算法的结合。

2 背景一个程序控制计算机执行一个或更多的监控程序。

追踪航天器运行轨迹的天线尖端就是此类监控程序的一个例子。

每个程序与一系列任务序列集相联且共同被执行。

此类任务中的一些任务是为了响应计算机监控的设备所发生的事件。

这些任务不能先于事件执行。

每个任务都必须在事件按要求释放后的固定时间内执行完毕。

在此时间段内的服务都需确保稳定性。

将运行环境分类为“硬实时”[1]是为了在可接受的响应时间统计分布上与“软实时”相对应。

多数现有多程序设计文献是针对商业分时系统的统计数据分析(文献[2]包含了详细的参考书目)。

也有文献针对更有意思的方面,比如调度批量处理设备或是混合批量分时设备,这些调度通常是在如文献[3]-[8]中多处理器配置环境下。

仅有少数论文直接讨论如何攻克“硬实时”程序设计的难关。

实时调度算法

实时调度算法

实时调度算法实时调度算法EDF实时调度算一、基本思想:在该实验中有两个周期性任务A、B,A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的`处理时间为25ms。

在t=0是,A1和B1同时到达,由于A1的截止时间比B1早,故调度A1执行;在t=10时,A1完成,又调度B1执行;在t=20时,A2到达,由于A2的截止时间比B2早,B1被中断而调度A2执行;在t=30时,A2完成,又重新调度B1执行;在t=40时,A3到达,但B1的截止时间要比A3早,仍执行B1,在t=45时,B1执行完,再调度A3执行;在t=55时,A3完成,调度B2执行。

该实验将最早截止时间优先算法用于抢占调度方式。

在该实验中,定义了两个开关来判断两个任务是中断还是调度执行。

二、源程序代码:#includeint main(){int A,B;int tA,tB,serveA,serveB; //进程的周期时间和处理时间float m;int i,j,a=0,b=0,ka=0,kb=0; //ka,kb为开关,i,j,a,b为进程下标int numa=0,numb=0; //处理累计时间printf("输入进程A的周期时间和处理时间:");scanf("%d%d",&tA,&serveA);printf("输入进程B的周期时间和处理时间:");scanf("%d%d",&tB,&serveB);m=(float)serveA/tA+(float)serveB/tB;for(int T=0;T<=100;T++){if(m-1>1e-6){printf("超出CPU的处理能力!\n"); return 0;}if(numa==serveA) //进程A完成{numa=serveA+1;printf("当T=%d时",T);printf("进程A%d完成\n",a);if(numb{printf(" 调度进程B%d\n",b);kb=1;}ka=0;}if(numb==serveB){numb=serveB+1;printf("当T=%d时",T);printf("进程B%d结束\n",b);if(numa{printf(" 调度进程A%d\n",a);ka=1;}kb=0;}if(T%tA==0 && T%tB==0){A=B=T;j=++a;i=++b;printf("当T=%d时,进程A%d和进程B%d同时到达,此时,",T,j,i); if(tA<=tB){printf("调度进程A%d,中断进程B%d\n",j,i);ka=1;kb=0;}else{printf("调度进程B%d,中断进程A%d\n",i,j);ka=0;kb=1;}numa=numb=0;}if(T%tA==0&&T%tB!=0){A=T;printf("当T=%d时",T);printf("进程A%d到达",++a); //不可能与进程A竞争处理器numa=0;if(numbif(B+tB>A+tA) //若进程B最早截止时间大于进程A的 {printf("进程A%d执行。

浅析RM与EDF实时调度算法

浅析RM与EDF实时调度算法

浅析RM与EDF实时调度算法1 引言与非实时系统相比,嵌入式实时系统因其所控制物理过程的动态性,要求运行于其中的单个任务必须满足其时限要求,以确保整个系统的正确性和安全性[1]。

在航空航天、电信、制造、国防等领域,对实时系统有着强烈的应用需求。

实时处理和实时系统的研究和应用工作已经有了相当长的历史,在实时任务调度理论、实时操作系统、实时通信等方面取得了大量成果。

实时任务调度理论是实时处理技术的核心和关键[2]。

这是因为,实时任务具有时限要求,在一个或多个处理器之间调度实时任务,需要判断是否每个任务的执行都能在其截止期限内完成。

如果每个任务的执行都能在其截止期限内完成,则称该调度是可行。

可调度性判定就是判定给定的n个实时任务在应用某种调度算法的前提下能否产生一个可行的调度。

调度算法的设计要尽可能满足任务可调度性的要求[3]。

2 实时调度分类由于实时系统的侧重点不同,实时调度亦有多种分类方式。

常见的分类有,根据任务实时性要求的重要程度,分为硬实时调度和软实时调度——在硬实时调度中任务必须在其截止期限内执行完毕,否则将产生严重后果。

而对于软实时任务,当系统负载过重的时候,允许发生错过截止期限的情况,根据任务是在一个或多个处理器上运行,分为单处理器实时调度和多处理器实时调度,多处理器实时调度又可分为集中式调度和分布式调度;根据调度算法和可调度性判定是在任务运行之前还是运行期间进行的,分为静态调度、动态调度和混合调度;根据被调度的任务是否可以互相抢占,分为抢占式调度和非抢占式调度;根据任务请求到达的情况不同。

分为周期性任务调度和非周期性任务调度。

不同调度方式具有各自的优缺点,适用于不同类型的实时系统。

3 RM与EDF调度算法简介1973年,Liu 和Layland 提出了一种适用于可抢占的硬实时周期性任务调度的静态优先级调度算法——速率单调(Rate Monotonic ,简称RM )调度算法,并对其可调度性判定问题进行了研究。

实时系统中的实时任务调度与实时优先级规划算法评估研究(五)

实时系统中的实时任务调度与实时优先级规划算法评估研究(五)

实时系统中的实时任务调度与实时优先级规划算法评估研究引言实时系统是指对时间敏感的任务和应用程序的计算机系统,广泛应用于各个领域。

为了保证实时任务能够按照预定的截止时间完成,实时任务调度与实时优先级规划算法成为关键问题。

本文将讨论实时系统中的实时任务调度和实时优先级规划算法,特别是针对其评估研究。

一、实时任务调度实时任务调度是指根据任务的截止时间和优先级,合理分配处理器资源,使得任务能够满足实时性要求。

常见的实时任务调度算法包括最早截止时间优先(EDF)算法和最佳适应优先(BFP)算法。

EDF算法最早截止时间优先(Earliest Deadline First,EDF)算法是一种经典的实时任务调度算法。

该算法根据任务的截止时间,选择截止时间最早的任务进行调度。

EDF算法具有较低的算法复杂度,可以满足实时任务的截止时间要求,但是可能导致实时任务的频繁抢占,增加系统开销。

BFP算法最佳适应优先(Best Fit Priorioty,BFP)算法是一种基于优先级的实时任务调度算法。

该算法根据任务的优先级,选择优先级最高的任务进行调度。

BFP算法相比于EDF算法,能够减少实时任务的抢占次数,降低系统开销,但是可能导致严重的资源劫持问题。

二、实时优先级规划算法实时优先级规划算法是指根据任务的实时属性和性能需求,为每个任务分配合适的优先级。

常见的实时优先级规划算法包括RM算法和DM算法。

RM算法RM算法是一种基于周期的实时优先级规划算法,即较短周期的任务具有较高的优先级。

该算法适用于周期性任务,根据任务的周期选择合适的优先级。

RM算法具有较低的算法复杂度,但对于非周期性任务效果不好。

DM算法DM算法是一种基于截止时间的实时优先级规划算法,即较早截止时间的任务具有较高的优先级。

该算法适用于非周期性任务,根据任务的截止时间选择合适的优先级。

DM算法可以保证任务的截止时间,但是可能会导致资源浪费。

三、实时任务调度与实时优先级规划算法评估研究实时任务调度与实时优先级规划算法的评估是衡量其性能和可用性的关键环节。

基于RM与EDF的实时混合调度算法研究

基于RM与EDF的实时混合调度算法研究

了混合 调 度 算 法可 调 度 性 的 充 分 必要 条 件 。最后 用 实验 验 证 了混 合 调 度 算 法 的有 效性 。 关键 词 :实 时 系统 ; 率 单调 调 度 算 法 ; 速 最早 截 止 期 限优 先调 度 算 法 ; 可调 度 性
中 图 分 类 号 :T 3 6 2 P 1 . 文 献 标 识 码 :A 文 章 编 号 :0 5 — 9 8 2 1 )2 0 2 — 3 2 8 7 9 (0 0 1 — 0 9 0
2 C l g fA cu t g ,U i ri fC o gigfrSi c & Tc nlg ,C og i 00 4, hn ) .ol eo co ni e n nv sy o hn q o c n e e t n e ehooy h nqn 4 0 5 C ia g
Ab ta t B su yn n n lzn tt s h d l g l o t m RM a d y a c c e u i g a g rt m s r c : y t d i g a d a a y i g sa i c e u i ag r h c n i n d n mi s h d l lo i n h EDF n h r a —t i t e e l i me s s m ,ami g t t e p o l m o h s t ag rt ms n r c ia a p ia in , ti p p r r s ne a mie s h d l g a g r h yt e i n a h r b e f t e e wo lo h i p a t l p l t s h s a e p e e td x d c e u i l o t m i c c o n i wi t r s o d 6 t wa h c mb n t n o t h e h l .I h s t e o i ai f RM c e u ig a g r h a d EDF c e u i g ag rt m.Ou p p r d s rb d h e a o s h d l l o t m n n i s h d l lo h n i r a e e c e te r l ・ i t n hp b t e n t e s h d lb l y o h mi e s h d ln lo i m a d h r p ris f r a -t a k ,s c s e id,e e u — i s i e w e h c e ua i t f t e o i x d c e u i g ag r h t n t e p o e t o e l i e me t s s u h a p r o xct

实时系统中的实时任务调度与实时资源管理方法研究(三)

实时系统中的实时任务调度与实时资源管理方法研究(三)

实时系统中的实时任务调度与实时资源管理方法研究一、引言实时系统是一种对时间性能要求极高的计算机系统,广泛应用于飞行控制、工业自动化等领域。

实时任务调度和资源管理是实时系统设计中的两个重要问题,本文将对实时系统中的实时任务调度和实时资源管理方法进行研究和探讨。

二、实时任务调度方法实时任务调度是指将实时任务按照一定的算法和规则分配给处理器或处理器核心的过程。

常见的实时任务调度算法包括最早截止期优先算法(EDF)、最早最松弛时间优先算法(LLF)等。

EDF算法是根据每个任务的最后期限,优先选择最早截止期的任务进行调度。

该算法能够保证系统处理实时任务的能力,但对于周期性任务的时限分配较为苛刻,容易导致系统资源浪费。

LLF算法则根据每个任务的最后期限和松弛时间(最后期限-执行时间),优先选择最早最松弛时间的任务进行调度。

该算法相对于EDF算法来说更加灵活,但有可能导致性能下降,需要合理权衡任务的响应时间和执行时间。

除了上述经典的实时任务调度算法,目前还有很多优化和改进的方法,例如基于资源争用图的调度方法、多实例实时任务调度方法等。

这些方法能够更好地适应不同场景和需求,提高实时系统的性能和效率。

三、实时资源管理方法实时资源管理是指对实时任务所需的处理器、内存、硬盘等资源进行有效管理和分配,以保障实时任务的执行。

实时资源管理的核心是资源分配算法和策略。

传统的实时资源管理方法主要基于静态分配,即根据任务的属性和要求预先分配资源。

但随着实时任务的数量增加和复杂性提高,静态分配容易导致资源浪费和执行不确定性。

因此,动态分配成为了当前研究的热点。

动态分配方法主要基于实时任务的运行状态和需求进行资源分配和调整。

例如,根据任务的优先级和重要性动态调整处理器核心的分配比例,将更多资源分配给需要更快响应的任务。

此外,还可以通过分析实时任务的历史运行情况和资源利用率,预测资源需求,并根据需求动态调整资源分配策略。

四、实时任务调度与资源管理的挑战与未来发展方向虽然实时任务调度和资源管理已经取得了一定的研究成果和应用,但仍然存在一些挑战和待解决的问题。

处理机调度习题

处理机调度习题

1.
2.
3.
4.
5.
有一个具有两道作业的批处理系统,作业调度采用最高响应比调度算法,进程调度采用短进程优先的抢占式调度算法,有如表所示的作业序列,作业优先数即为进程优先数,优先数越小优先级越高。

试求作业平均周转时间。

6.设有四道作业,它们的提交时间和运行时间如下表: 作业号 提交时刻(时) 运行时间(小时) 1 8:00 2.0 2 8:50 0.5 3 9:00 0.1 4 9:50 0.2
求:试给出下面三种调度算法下,作业的执行顺序、平均周转时间和平均带权周转时间。

(1)先来先服务FCFS 调度算法 (2)短作业优先SJF 调度算法 (3)高响应比优先调度算法。

操作系统实验二处理机调度-实时调度算法EDF和RMS实验报告

操作系统实验二处理机调度-实时调度算法EDF和RMS实验报告

实验报告

名:
学号:日期:2011-1-10 实验

目:
实验二:处理机调度---实时调度算法EDF和RMS
实验目的:
深入理解处理机调度算法,了解硬实时概念,掌握周期性实时任务调度算法EDF(Earliest Deadline First)和RMS(Rate-Monotonic Scheduling)的可调度条件,并能在可调度的情况下给出具体调度结果。

实验内容:
在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。

给定一组实时任务,按照EDF算法和RMS算法分别判断是否可调度。

在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法所确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。

为避免图形绘制冲淡算法,Gantt图可用字符表示。

实验步骤:1.启动虚拟机,在Linux系统终端中找到代码
2.仔细阅读教材相关内容和实验指导书中实验准备;
3.将代码在Linux系统上编译并运行。

4.根据实验结果分析。

5.结束实验,退出保存。

实验结果:实验结果如实验指导书上所示。

EDF算法结果:
RMS算法结果:。

处理机调度算法的实现

处理机调度算法的实现

处理机调度算法的实现标题:处理机调度算法的实现正文:处理机调度算法是操作系统中的关键部分,它决定了处理机如何分配给各个进程以提高系统的性能和效率。

本文将介绍几种常见的处理机调度算法以及它们的实现方式。

1.先来先服务调度算法(FCFS):先来先服务调度算法是最简单的调度算法之一。

它按照进程到达的顺序来分配处理机。

实现这个算法时,需要维护一个就绪队列,并按照进程到达的时间将进程依次加入队列。

当处理机空闲时,从队列中选择最先到达的进程进行执行。

2.短作业优先调度算法(SJF):短作业优先调度算法是一种非抢占式调度算法,它根据进程的执行时间来进行调度。

在实现这个算法时,需要预测每个进程的执行时间,并将执行时间最短的进程优先分配处理机。

这需要对每个进程的执行时间进行估计,可以通过历史数据或统计方法来获得。

3.优先级调度算法:优先级调度算法根据进程的优先级来进行调度。

每个进程都有一个与之相关联的优先级,优先级较高的进程会被先执行。

实现这个算法时,需要定义一个合适的优先级评估方式,并在处理机空闲时选择优先级最高的进程进行执行。

4.时间片轮转调度算法:时间片轮转调度算法是一种抢占式调度算法,它将处理机的时间分割成多个时间片,每个进程在一个时间片内执行一段时间,然后让出处理机给下一个进程。

实现这个算法时,需要设置合适的时间片长度,并使用一个计时器来控制每个进程的执行时间。

以上只是几种常见的处理机调度算法,实际应用中还有其他各种调度算法,如多级反馈队列调度算法、最短剩余时间优先调度算法等。

选择合适的调度算法可以提高系统的性能和响应速度。

在实际实现时,还需要考虑多线程、多核处理器、资源分配等因素来优化调度算法的性能。

总结起来,处理机调度算法的实现需要根据实际需求选择合适的算法,并结合系统特性进行调优。

这些算法的实现应该具有清晰的思路,流畅的表达,并遵循文章中提到的几点注意事项,以确保文章的质量和阅读体验。

最早期限优先调度算法(EDF)的特点和实现

最早期限优先调度算法(EDF)的特点和实现

最早截止期优先调度算法(EDF)的特点及实现1 引言随着计算机的发展,多道程序处理的出现需要强大的调度算法来对多任务进行调度,以确定多任务环境下任务的执行顺序以及占有CPU时间。

相对于静态、不可抢占的调度方法,EDF的出现使之凭借灵活性高、CPU占有率高很快成为最优的单处理器调度算法。

2 任务调度的基本概念在计算机发展的初期,需要使用计算机时,通常要集中在计算机所在的地方,人为的以作业的方式把工作内容一件一件的交给计算机处理,也就不存在调度的概念。

随后,出现了计算机的批处理方式,计算机把作业按照先来先服务的方式进行处理,体现了一种非常简单的调度概念。

随着多道程序处理方式的出现,调度逐渐变得重要和复杂起来。

在多任务的实时操作系统中,调度是一个非常重要的功能,用来确定多任务环境下任务执行的顺序和获得CPU资源后能够执行的时间长度。

操作系统通过一个调度程序看来实现调度功能,调度程序以函数的形式存在,用来实现操作系统的调度算法。

调度程序是影响系统性能(如吞吐率、延迟时间等)的重要部分。

在设计调度程序时,通常要综合考虑如下因素:CPU的使用率、输入、输出设备的吞吐率、响应时间、公平性和截止时间。

这些因素之间有一定的冲突性,在设计调度程序时需要优先考虑最重要的需求,然后再各种因素之间进行折中处理。

3 调度方法的分类对于大量的实时调度方法来说,主要存在以下几种划分方法:1、离线(off-line)和在线(on-line)调度根据获得调度信息的时机,调度算法可以分为离线调度和在线调度两类。

对于离线调度算法,运行过程中使用的调度信息在系统运行之前就确定了,如时间驱动的调度。

离线调度算法具有确定性,但缺乏灵活性,适用于特征能够预先确定,且不容易发生变化的应用。

在线调度算法的调度信息则在系统运行过程中动态获得,如优先级驱动的调度(如EDF,RMS等)。

在线调度算法在形成最佳调度决策上具有较大的灵活性。

2、抢占(preemptive)和非抢占(non-preemptive)调度根据任务在运行过程中能否被打断的处理情况。

操作系统四种调度算法

操作系统四种调度算法

操作系统四种调度算法操作系统对进程的调度一般上有四种常见的算法。

下面由店铺为大家整理了操作系统的四种调度算法的相关知识,希望对大家有帮助!操作系统四重调度算法之一、先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。

当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。

在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。

该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

操作系统四重调度算法之二、短作业(进程)优先调度算法短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。

它们可以分别用于作业调度和进程调度。

短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。

而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

操作系统四重调度算法之三、高优先权优先调度算法1.优先权调度算法的类型为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。

此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。

当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。

当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种。

1) 非抢占式优先权算法在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。

嵌入式系统中的实时任务调度算法研究

嵌入式系统中的实时任务调度算法研究

嵌入式系统中的实时任务调度算法研究近年来,随着科技的进步和计算机技术的不断发展,嵌入式系统已经成为我们生活中不可或缺的一部分。

嵌入式系统以其高效、稳定和低能耗等特点,广泛应用于工业自动化、智能家居、医疗设备等众多领域。

这些系统不仅要处理多个任务,还要保证实时性,因此任务调度算法的研究对于嵌入式系统的性能优化至关重要。

实时任务调度算法通过合理安排任务的执行顺序,充分利用处理器资源,确保系统能够在给定的时间限制内准时完成任务。

常见的实时任务调度算法包括最早截止时间优先调度算法(EDF)、最早期限优先调度算法(EDD)和最短剩余时间优先调度算法(SRPT)等。

最早截止时间优先调度算法(EDF)是一种基于截止时间的动态优先级调度算法。

该算法通过不断调整任务的优先级,使得具有较短截止时间的任务优先执行。

优先级的调整需要考虑任务的剩余执行时间,以确保整个系统的稳定性。

然而,EDF算法需要实时监控任务的状态,对系统的实时性要求较高。

最早期限优先调度算法(EDD)是一种基于任务期限的静态优先级调度算法。

任务的优先级是根据其期限提前度来确定的,期限越紧迫的任务优先级越高。

该算法通过预先计算任务的优先级,减少任务调度时的开销。

然而,EDD算法无法适应系统动态变化的情况,对任务提交时的准确期限要求较高。

最短剩余时间优先调度算法(SRPT)是一种基于任务剩余执行时间的动态优先级调度算法。

该算法通过不断调整任务的优先级,使得具有较短剩余执行时间的任务优先执行。

SRPT算法具有较高的灵活性和较低的开销,适应了系统动态变化的需求。

然而,SRPT算法无法保证任务的实时性,容易导致任务的延迟。

不同的实时任务调度算法适用于不同的应用场景。

在对任务响应时间要求较高的系统中,可以选择EDF算法;在对资源利用率要求较高的系统中,可以选择EDD算法;在对系统动态变化能力要求较高的系统中,可以选择SRPT算法。

此外,也有一些综合多种调度算法的混合调度算法被提出,如任务级和系统级的调度算法。

处理机调度算法总结

处理机调度算法总结

处理机调度算法总结⼀:处理机调度1 ⾼级调度(长程/作业/宏观调度)2 中级调度(交换调度)3 低级调度(短程/CPU/进程/微观调度)⼆:常见的调度类别----作业调度----先来先服务(fcfs) ----短作业优先(sjf) ----优先级调度算法(psa)----⾼响应⽐优先调度算法(hrrn)-----进程调度 ----最短剩余时间调度算法(srt) ----时间⽚轮转调度算法(rr) ----多级队列调度算法 ----多级反馈队列调度算法(mfq) ----基于公平原则的调度算法 ----保证调度算法 ----公平分享调度算法----实时调度 ----⾮抢占式调度算法⽤于⾮周期实时任务 ----抢占式调度算法⽤于周期实时任务 ----最低松弛度优先算法(LLF)三:各种调度算法详解(1)作业调度1:先来先服务(fcfs)基本思想:按进程(作业)进⼊就绪(后备)队列的先后次序来分配处理机(为其创建进程)。

⼀般采⽤⾮剥夺的调度⽅式。

例⼦FCFS 调度算法的平均作业周转时间与作业提交的顺序有关。

FCFS 调度算法的特点:简单,但效率不⾼。

有利于 CPU 繁忙型作业。

不利于 I/O 繁忙型作业。

现在操作系统中,已很少⽤该算法作为主要调度策略,尤其是在分时系统和实时系统中。

但它常被结合在其它调度策略中使⽤。

2:短作业优先(sjf)⽤于作业调度主要任务是从后备队列中选择⼀个或若⼲个估计运⾏时间最短的作业,将它们调⼊内存运⾏。

类似地,⽤于进程调度的是短进程优先调优点能有效降低作业的平均等待时间。

能有效缩短进程的平均周转时间。

提⾼了吞吐量。

缺点对长作业不利。

没有考虑作业的紧迫程度。

作业执⾏时间、剩余时间仅为估计。

SJF 算法虽然是优化的,但在 CPU 调度中很难实现。

3:优先级调度算法(psa) 优先级调度算法(Priority-Scheduling Algorithm, PSA) 以作业的紧迫程度为优先级。

题目二:处理机调度—实时调度算法EDF和RMS

题目二:处理机调度—实时调度算法EDF和RMS

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载题目二:处理机调度—实时调度算法EDF和RMS地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容目录一.设计目的∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙2二.设计内容∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙2三.设计准备∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙2四.设计过程∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙3五.设计结果并分析∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙12六.系统的结构,原理框图和模块等的详细说明∙∙∙∙∙∙∙∙∙∙∙∙∙∙14七.用户使用说明书和参考资料∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙15八.设计体会∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙16一.设计目的深入理解处理机调度算法,了解硬实时概念,掌握最早截止期优先调度算法。

EDF(Earliest Deadline First)和速率单调调度算法RMS(Rate Monotonic Scheduling)的可调度条件,并能在可调度情况下给出具体调度结果。

调度算法基础

调度算法基础

0、什么是调度?长期调度:哪一个程序被系统选中并创建进程运行它中期调度:决定是否将进程调入内存短期调度:哪个进程获得处理器资源(通常所说调度):单、多、实时处理器调度一、单处理器进程调度算法FCFS算法(FIFO算法,抢占式)循环执行算法(时间片轮转法,抢占式),缺点:I/O操作密集型进程和处理器使用密集型进程时会带来的资源使用不平衡。

改进:虚拟循环执行算法,该算法在FCFS基础上加入一个辅助进程队列,一个因I/O操作挂起的进程现在如果它申请的I/O操作已经完成的话,它进入辅助队列,而不是普通队列,新的处理器时间片来临的时候,辅助队列优先获得处理器控制权,而其运行时间不会超过它在上一次自己获取的时间片里剩下来的时间。

SPN算法(非抢占式):运行时间最短的进程优先运行。

缺点:时间较长的永远等不到处理器SRT算法(SPN算法的抢占式版本):总是选择剩余时间最短的进程运行HRRN算法:选择运行进程时遵循最高响应时间比率原则:R=(w+s)/s,w为等待时间,s获取后的预计运行时间。

反馈算法:过去运行时间最短者优先。

编程方法:创建进程并进入最高优先级等待队列;每运行一段时间后,降一级等待下一次运行,如此递推,直到完成。

二、多处理器调度算法1、多处理器系统分类:松耦合型:总系统由一些自治子系统组成紧耦合型:一组处理器共用一个内存,并处于一个操作系统的控制下。

又分为:主从型(例如通用ARM+专用DSP);对等型系统2、多处理器进程调度需要解决的问题:2.1按处理器分配进程问题对等型,将多个处理器看成一个处理器资源库,分配方法:静态方法(分配后在进程生命周期内不在更改处理器)和动态方法(允许更改处理器,修正静态方法的处理器负荷不均匀)考虑到进程地位的不平等性,核心进程一般运行在特定的处理器上,另外的处理器只运行用户进程,这样导致的问题是:单个处理器出现故障将导致整个系统崩溃(创新点:能否实现一种复合调度算法优先采用主/从方式,当单个处理器出现故障时,再采用对等式??),对等式,实现比较复杂,很多系统实现采用这两种方式的折衷。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三.设计准备(理论、技术)
1.EDF算法和RMS算法的可调度条件及调度原则。
(1)EDF为可抢占式调度算法,其调度条件为:
sum(ci/ti)≤1
(2)RMS算法为不可抢先调度算法,其调度条件为:
sum(ci/ti)≤n(exp(in(2)/n)-1)
2.在linux环境中创建用户级线程的函数。
(1)创建用户级线程的库函数为:
五.设计结果并分析∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙12
六.系统的结构,原理框图和模块等的详细说明∙∙∙∙∙∙∙∙∙∙∙∙∙∙14
七.用户使用说明书和参考资料∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙15
{
pthread_mutex_init(& main_wait , NULL);
pthread_mutex_lock(& main_wait); //下次执行lock等待
pthread_mutex_init(& idle_wait , NULL);
pthread_mutex_lock(& idle_wait); //下次执行lock等待
for(i=0 ;i<task_num ;i++) //创建实时任务线程
pthread_create(&tasks[i].th, NULL, (void*)proc, &tasks[i].arg);
for(i=0;i<demo_time;i++)
{
int j;
if((curr_proc=select_proc(alg))!=-1)
}
};
void *idle()
{
while(1)
{
pthread_mutex_lock(&idle_wait); //等待被调度
printf("->"); //空耗一个时间单位
idle_num++;
pthread_mutex_unlock(&main_wait); //唤醒主线程
}
};
int select_proc(int alg)
八.设计体会∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙16
一.设计目的
深入理解处理机调度算法,了解硬实时概念,掌握最早截止期优先调度算法。EDF(Earliest Deadline First)和速率单调调度算法RMS(Rate Monotonic Scheduling)的可调度条件,并能在可调度情况下给出具体调度结果。
}task;
void proc(int *args);
void *idle();
int select_proc(int alg);
int task_num=0;
int idle_num=0;
int alg; //所选算法,1 for EDF,2 for RMS
int curr_proc=-1;
int demo_time=100; //演示时间
目录
一.设计目的∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙2
二.设计内容∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙2
pthread_create(&tasks[j].th,NULL,(void*)proc,&tasks[j].arg);
tasks[j].flag=2;
}
}
}
printf("\n");
sleep(10);
};
void proc(int *args)
{
while(tasks[*args].ci_left>0)
task *tasks;
pthread_mutex_t proc_wait[10]; //the biggest number of tasks
pthread_mutex_t main_wait,idle_wait;
float sum=0;
pthread_t idle_proc;
int main(int argc,char **argv)
}
}
}
}
return temp2; //return the selected thread or task number
};
五.设计结果并分析
6.系统的结构、原理框图和模块等的详细说明
最早截止期优先调度优先选择完成截止期最早的实时任务。对于新到达的实时任务,如果完成截止期先于正在运行任务的完成截止期,则重新分配处理器,即剥夺。
pthread_mutex_lock(&main_wait);
}
for(j=0;j<task_num;j++)
{ //Ti--,直至为0时开始下一周期
if(--tasks[j].ti_left==0)
{
tasks[j].ti_left=tasks[j].ti;
tasks[j].ci_left=tasks[j].ci;
scanf("%c,%d,%d,",&tasks[i].task_id,& tasks[i].ci,& tasks[i].ti);
tasks[i].ci_left=tasks[i].ci;
tasks[i].ti_left=tasks[i].ti;
tasks[i].flag=2;
tasks[i].arg=i;
tasks[*args].ci_left--; //执行一个时间单位
if(tasks[*args].ci_left==0)
{
printf("(%d)",tasks[*args].ci);
tasks[*args].flag=0;
tasks[*args].call_num++; //
}
pthread_mutex_unlock(&main_wait); //唤醒主线程
{ //按调度算法选择线程
pthread_mutex_unlock(&proc_wait[curr_proc]); //唤醒
pthread_mutex_lock(&main_wait); //主线程等待
}
else
{ //无可运行任务,选择闲逛线程
pthread_mutex_unlock(&idle_wait);
int call_num; //任务发生次数
int ci; //任务处理时间
int ti; //任务发生周期
int ci_left;
int ti_left; //record the reduction of ti \ci
int flag; //任务是否活跃,0否,2是
int arg; //参数
pthread_t th; //任务对应线程
int i;
for(i=0 ; i<源自ask_num ; i++)
{
pthread_mutex_init(& proc_wait[i] , NULL);
pthread_mutex_lock(& proc_wait[i]);
}
for(i=0;i<task_num;i++)
{
printf("Pleased input task id,followed by Ci and Ti:\n");
printf("Please input number of real time task:\n");
int c;
scanf("%d",& task_num); //任务数
tasks=(task *)malloc(task_num *sizeof(task));
while((c=getchar())!='\n'&& c!=EOF); //清屏
二.设计内容
在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。给定一组实时任务,按照EDF算法和RMS算法分别判断是否可调度。在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法所确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。为避免图形绘制冲淡算法,Gantt图可用字符表示。
tasks[i].call_num=1;
sum=sum+(float)tasks[i].ci / (float)tasks[i].ti;
while((c=getchar())!='\n'&&c!=EOF); //清屏
}
printf("Please input algorithm,1 for EDF,2 for RMS:");
{
switch(alg)
{
case 1: //EDF算法
if(temp1>tasks[j].ci_left)
{
temp1=tasks[j].ci_left;
temp2=j;
}
case 2: //RMS算法
if(temp1>tasks[j].ti)
{
temp1=tasks[j].ti;
temp2=j;
Int pthread_creat(pthread_t *THREAD,
相关文档
最新文档