5.4 时间片轮询多任务操作系统

合集下载

国开期末考试《操作系统》机考满分试题(第8套)

国开期末考试《操作系统》机考满分试题(第8套)

国开期末考试《操作系统》机考满分试题(第8套)第一部分:选择题(每题5分,共计25分)1. 以下哪个不属于操作系统的五大功能?A. 处理器管理B. 存储器管理C. 设备管理D. 网络管理E. 文件管理2. 在操作系统中,进程可以被定义为____。

A. 程序的一次执行过程B. 程序的静态表示C. 计算机系统中运行的程序D. 计算机系统中所有程序的总和E. 以上都不是3. 关于操作系统的描述,以下哪项是正确的?A. 操作系统的主要任务是为用户提供方便的编程环境B. 操作系统的主要任务是为用户提供方便的运行环境C. 操作系统的主要任务是为程序提供方便的编程环境D. 操作系统的主要任务是为程序提供方便的运行环境E. 以上都不是4. 下列哪种方式不是进程调度算法?A. 先来先服务(FCFS)B. 最短作业优先(SJF)C. 优先级调度D. 时间片轮转(Round Robin)E. 最高响应比优先(HRRN)5. 在虚拟存储器管理中,页面置换算法中____算法是最简单的一种。

A. 先进先出(FIFO)B. 最短剩余时间(SRT)C. 最短作业优先(SJF)D. 最高响应比优先(HRRN)E. 最近最少使用(LRU)第二部分:填空题(每题5分,共计25分)6. 在操作系统中,进程可以被定义为程序在某个数据集合上的运行过程,它对应了进程的静态描述,我们称之为____。

7. 操作系统的____功能主要是管理计算机中的硬件和软件资源,合理地组织计算机的工作流程,并为用户提供一个使用方便、可扩展的工作环境。

8. 在____调度算法中,每当处理机空闲时,系统就选取处于就绪队列的第一个进程投入运行。

9. 虚拟存储器管理中,页面置换算法中____算法是试图根据页面调入后再次被访问的远近选择淘汰的页面。

10. 在操作系统中,文件的逻辑结构有多种形式,其中最常用的是____结构。

第三部分:简答题(每题10分,共计30分)11. 简述进程和线程的区别。

51—TinyOS51嵌入式操作系统微小内核

51—TinyOS51嵌入式操作系统微小内核
5.1.2 <setjmp.h>头文件
与中止函数about()和退出函数exit()相比,初看 起来,goto语句处理异常更可行,但是,goto语句 只能在函数内部跳转,即不能从一个函数直接跳转 到另一个函数。
为此,标准C函数库提供了setjmp()和longjmp() 函数,setjmp()函数相当于非局部标号,longjmp() 函数相当于goto的作用,从而解决了从一个函数直 接跳转到另一个函数的问题,即非局部跳转。头文 件<setjmp.h>申明了这些函数及同时所需的jmp_buf 数据类型。
如下图所示:
8
第5章 TinyOS51嵌入式操作系统 时间轮询调度为每个任务提供同份额的cpu执行
时间。由于纯粹的时间轮询调度不能满足实时性系统 要求,取而代之的是基于优先级抢占式调度扩充时间 轮询调度,即对同样优先级的任务使用时间片获得相 等的cpu分配时间,不同优先级的具有抢占权。
9
第5章 TinyOS51嵌入式操作系统
就绪状态 ;运行状态; 阻塞状态
10
第5章 TinyOS51嵌入式操作系统
就绪状态:当一个任务创立并准备运行时,内核将其放入 就绪状态。但不能运行,因为有一个更高优先级的任务在 执行,内核调度器根据优先级决定哪个任务先迁移到运行 状态,但处于就绪状态的任务不能直接迁移到阻塞状态。
运行状态:操作系统可让处于运行状态的低优先级任务暂 停运行,转而执行另一个处于就绪状态的高优先级任务, 这样正运行的任务就从运行状态迁移到了就绪状态。
SP
变化。
addr15~addr8
addr7~addr0
图 5.7
上下文信息 23
第5章 TinyOS51嵌入式操作系统

操作系统的调度算法优先级时间片和占式调度

操作系统的调度算法优先级时间片和占式调度

操作系统的调度算法优先级时间片和占式调度操作系统的调度算法:优先级、时间片和抢占式调度操作系统是计算机系统中的一个核心组件,用于管理和控制计算机的硬件和软件资源,以提供良好的用户体验和系统性能。

在操作系统中,调度算法是实现任务分配和资源管理的关键。

本文将介绍三种常见的调度算法:优先级调度、时间片轮转调度和抢占式调度。

一、优先级调度算法优先级调度算法是根据任务的优先级安排任务的执行顺序。

每个任务都有一个优先级值,数值越高表示优先级越高。

当一个任务就绪并等待执行时,调度器会选择优先级最高的任务来执行。

优先级调度算法可以保证高优先级任务及时得到执行,但可能会导致低优先级任务出现饥饿现象。

实际上,优先级调度算法可以分为静态优先级和动态优先级两种类型。

静态优先级是在任务创建时分配的,不会改变。

动态优先级根据任务的运行情况和系统状态进行动态调整,以提高系统的公平性和性能。

二、时间片轮转调度算法时间片轮转调度算法是一种周期性调度算法,每个任务被分配一个固定的时间片(时间段),当任务的时间片用完后,调度器会将任务挂起,并将CPU 分配给下一个任务执行。

当所有任务都执行完一次后,调度器会重新分配时间片,继续按照顺序执行任务。

时间片轮转调度算法可以保证任务的平均执行时间,并且避免了长时间任务的霸占资源问题。

然而,如果任务的时间片设置得过小,则会增加任务切换的开销。

如果任务的时间片设置得过大,则可能出现对实时任务响应时间的影响。

三、抢占式调度算法抢占式调度算法是一种灵活的调度策略,允许更高优先级的任务打断正在执行的低优先级任务,以确保高优先级任务的及时响应。

当一个任务就绪并具备运行条件时,调度器会立即安排其执行,无论当前是否有其他任务在执行。

抢占式调度算法可以有效地提高系统的响应速度和实时性,但可能会导致任务切换的频繁发生,增加了系统开销。

为了平衡性能和实时性的需求,抢占式调度算法通常会和其他调度策略结合使用,例如优先级和时间片轮转。

操作系统的多任务处理

操作系统的多任务处理

操作系统的多任务处理多任务处理是现代操作系统的重要特性之一,它使得计算机可以同时执行多个任务。

通过合理的任务切换和资源分配,操作系统能够提高计算机的利用率和效率。

本文将介绍操作系统的多任务处理原理、策略和应用。

一、多任务处理原理多任务处理是指在一个计算机系统中同时执行多个任务的能力。

操作系统通过任务调度算法和进程管理来实现多任务处理。

在单核处理器系统中,操作系统通过时间片轮转等算法按照一定的时间片轮询切换任务,使得任务在人眼看来是同时执行的。

而在多核处理器系统中,操作系统可以将多个任务分配给多个处理器核心并行执行。

二、多任务处理策略1. 抢占式调度抢占式调度是指操作系统可以随时中断正在执行的任务,将处理器分配给其他高优先级任务的调度策略。

当有更高优先级的任务就绪时,操作系统可以立即切换到该任务并执行,以保证高优先级任务的及时响应。

2. 合作式调度合作式调度是指任务执行必须主动释放处理器资源,才能让其他任务执行的调度策略。

在合作式调度中,每个任务都需要遵守一定的规则,如不可长时间占用处理器资源,否则会影响其他任务的执行。

3. 多级反馈队列调度多级反馈队列调度算法将任务分为多个优先级队列,每个队列具有不同的时间片大小。

当任务执行完成后,如果没有新任务到达,则继续执行该队列的下一个任务;如果有新任务到达,则将该任务插入到更高优先级队列中。

这种调度策略既能保证高优先级任务优先执行,又能公平地分配处理器资源。

三、多任务处理的应用1. 多媒体播放操作系统的多任务处理能力使得计算机可以同时播放多个媒体文件,如音频、视频等。

用户可以在观看视频的同时听音乐,提高了用户体验。

2. 并行计算通过多任务处理和多核处理器,操作系统可以将大型计算任务分解为多个子任务,然后利用不同核心并行执行这些任务,提高计算速度和效率。

3. 虚拟化技术多任务处理为虚拟化技术的实现提供了基础。

操作系统可以将物理资源虚拟化为多个虚拟机,每个虚拟机可以独立运行不同的任务,实现资源的有效利用和管理。

时间片轮转调度

时间片轮转调度

时间片轮转调度
简介
时间片轮转调度是一种常见的进程调度算法,通常用于处理多任务系统中的进
程调度。

它的主要特点是每个进程都会分配一个时间片段,当时间片段用完后,系统会自动切换到下一个进程,从而实现多个进程之间的公平共享CPU时间。

原理
时间片轮转调度的原理比较简单。

系统会为每个进程分配一个固定长度的时间片,当进程开始执行时,系统会计时,当时间片用完后,系统会发出时钟中断,此时会触发调度器将CPU分配给下一个进程。

被切换出去的进程会被放到就绪队列
的末尾,等待下次轮到它执行。

优点
1.公平性:每个进程都有机会获得CPU时间,避免某个进程长时间占
用CPU资源而导致其他进程无法执行。

2.响应时间短:由于时间片固定,当进程被切换到时,可以及时响应,
提高系统的交互性。

缺点
1.时间片长短选择问题:如果时间片过短,频繁的切换会增加调度器的
开销;如果时间片过长,可能会导致部分进程长时间占用CPU,降低公平性。

2.公平性问题:虽然时间片轮转调度可以保证每个进程都能获得CPU
时间,但对于一些实时性要求较高的应用来说,可能无法满足其需求。

应用场景
时间片轮转调度适用于对公平性要求较高,但对实时性要求不是特别高的场景,比如多用户系统、批处理系统等。

在这些场景下,时间片轮转调度可以充分利用系统资源,保证每个进程都能得到执行。

总结
时间片轮转调度是一种简单而有效的进程调度算法,通过合理设置时间片长度,可以实现多任务系统中的进程公平调度。

在合适的场景下,时间片轮转调度可以提高系统的整体性能,保证每个进程都能得到执行,从而提高系统的稳定性和可靠性。

操作系统时间片轮转算法与优先级调度算法

操作系统时间片轮转算法与优先级调度算法

操作系统时间片轮转算法与优先级调度算法操作系统作为计算机的核心,需要负责管理和分配系统资源的功能。

其中,调度算法是操作系统中非常重要的一个功能,它决定了如何分配CPU时间,因此直接影响系统的性能和响应速度。

本文将介绍两种操作系统中常用的调度算法:时间片轮转算法和优先级调度算法。

时间片轮转算法时间片轮转算法(Round Robin)是一种基本的调度算法,它是多道程序设计中常用的一种算法。

在内存中同时存放多个进程,并根据每个进程的优先级轮流分配 CPU 时间,以保证每个进程都能得到一定的CPU时间片,从而保证操作系统的公平性和系统的稳定性。

基本思想时间片轮转算法的基本思想是:将每个进程分配相同长度的CPU时间片,一旦时间片用完,立即将该进程挂起,并将 CPU 分配给下一个进程。

这样就可以保证每个进程都有相同的机会获得 CPU 时间,避免了某个进程长时间霸占CPU而导致其他进程无法运行的情况。

算法流程时间片轮转算法的具体实现过程如下:1.将所有待运行的进程加入到就绪队列中;2.从就绪队列中取出第一个进程,将其运行指定时间片长度的时间;3.如果该进程在运行时间片结束之前自己退出,那么直接将其从就绪队列中取出,释放资源;4.如果该进程在运行时间片结束之前没有自己退出,那么将其挂起放到队列的尾部,然后将 CPU 分配给下一个进程,重复2-4步骤,直到所有进程执行完毕。

算法优点时间片轮转算法的优点如下:1.公平:每个进程都能得到相同长度的时间片,避免了某个进程长时间霸占CPU的情况,从而保证了每个进程都会运行;2.适用:时间片轮转算法适用于多任务并发的环境下,可以有效地避免死锁和饥饿现象;3.高效:时间片轮转算法可以保证 CPU 的高效利用,能够最大限度地提高 CPU 的性能。

算法缺点时间片轮转算法的缺点如下:1.精度问题:时间片长度不能太长,否则会导致某些进程长时间等待CPU时间片;2.资源浪费:如果一个进程只需要很短的时间就可以完成任务,但由于时间片的限制而占用CPU的时间,这就是一种资源浪费。

时间片轮转调度算法例题详解

时间片轮转调度算法例题详解

时间片轮转调度算法例题详解操作系统是计算机系统中的一个重要组成部分,它负责管理计算机系统的各种资源,协调各种应用程序的运行,保证计算机系统的高效稳定运行。

操作系统中的进程调度是其中的一个重要内容,它决定了进程在CPU上的运行顺序,直接影响到计算机系统的性能。

本文将详细介绍时间片轮转调度算法,并通过例题进行详解。

一、时间片轮转调度算法时间片轮转调度算法是一种基于时间片的进程调度算法,它将CPU时间片分配给各个正在运行的进程,每个进程在一个时间片内运行一定的时间,然后被挂起,等待下一次调度。

如果进程在一个时间片内没有完成运行,那么它将被挂起,等待下一次调度。

这种调度算法适用于多道程序并发执行的情况,可以避免进程长时间占用CPU,保证进程的公平性和响应性。

时间片轮转调度算法的基本思想是将所有就绪进程按照先来先服务的原则排队,每个进程在一个时间片内运行一定的时间,然后被挂起,等待下一次调度。

时间片的大小可以根据系统的负载情况进行调整,一般情况下,时间片的大小为10ms~100ms之间。

当一个进程在一个时间片内运行完成,它将被移到队列的末尾,等待下一次调度。

如果进程在一个时间片内没有完成运行,那么它将被挂起,等待下一次调度。

这样,所有进程都有机会获得CPU时间,避免了某个进程长时间占用CPU的情况。

时间片轮转调度算法的优点是简单易懂,易于实现,可以保证进程的公平性和响应性。

缺点是时间片的大小对系统的性能有较大影响,时间片过小会导致进程切换频繁,影响系统性能;时间片过大会导致进程响应时间增加,影响用户体验。

二、时间片轮转调度算法例题下面通过一个例题来详细介绍时间片轮转调度算法的实现过程。

题目描述:有3个进程P1、P2、P3,它们的运行时间分别为24ms、3ms、3ms,它们的到达时间分别为0ms、0ms、0ms。

时间片大小为4ms。

请计算它们的平均等待时间和平均周转时间。

解题思路:首先,按照到达时间的先后顺序将进程排队。

时间片轮转调度算法例题详解

时间片轮转调度算法例题详解

时间片轮转调度算法例题详解在计算机操作系统中,调度算法是非常重要的一部分。

调度算法的作用是决定哪个进程可以获得 CPU 的使用权。

其中,时间片轮转调度算法是一种常见的调度算法,它可以保证每个进程都能够获得一定的 CPU 时间,从而避免了某个进程长时间占用 CPU 的情况。

本文将对时间片轮转调度算法进行详细的介绍,并通过实例来说明如何使用该算法进行进程调度。

一、时间片轮转调度算法的原理时间片轮转调度算法是一种抢占式的调度算法,它将 CPU 的使用时间划分为若干个时间片,每个进程在一个时间片内可以占用CPU 的时间是固定的。

当一个进程占用 CPU 的时间超过了一个时间片,系统会将该进程挂起,并将 CPU 分配给下一个进程。

时间片轮转调度算法的优点在于可以保证公平性,每个进程都能够获得一定的 CPU 时间,从而避免了某个进程长时间占用 CPU 的情况。

另外,该算法的实现比较简单,适用于多任务环境下的进程调度。

二、时间片轮转调度算法的实现时间片轮转调度算法的实现需要使用一个队列来保存所有等待CPU 时间的进程。

每个进程在队列中占据一个时间片的位置,当轮到该进程时,系统会将该进程从队列头部取出,并将其放到队列尾部。

如果一个进程占用 CPU 的时间超过了一个时间片,系统会将该进程挂起,并将其放到队列尾部。

下面是时间片轮转调度算法的具体实现步骤:1. 将所有等待 CPU 时间的进程放入一个队列中。

2. 设置一个时间片的长度,例如 10 毫秒。

3. 从队列头部取出一个进程,并将其放到 CPU 中执行。

4. 如果该进程在一个时间片内没有执行完毕,将其挂起,并将其放到队列尾部。

5. 从队列头部取出下一个进程,并将其放到 CPU 中执行。

6. 重复步骤 4 和步骤 5,直到所有进程都执行完毕。

三、时间片轮转调度算法的实例下面通过一个实例来说明如何使用时间片轮转调度算法进行进程调度。

假设有三个进程 P1、P2、P3,它们需要使用 CPU 的时间如下表所示:| 进程 | 到达时间 | 需要 CPU 时间 ||------|----------|---------------|| P1 | 0 | 20 || P2 | 0 | 25 || P3 | 0 | 10 |假设时间片的长度为 5 毫秒,现在需要使用时间片轮转调度算法对这三个进程进行调度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务调度交给操作系统,引入调度算法
任务 调度 任务
协作式多任务系统的特点
安全 性
如果一个任务死掉,势必造 成整个系统死掉。
复杂 运行的任务难以得知其他任务 性 状态,任务切换时机难以把握。
调度算法
1
时间片轮询
2
优先级调度
3
带优先级调度的时间片轮询
调度算法
1
时间片轮询
任务A 任务B 任务C
2
优先级调度
TN_OS_TASK_HANDLE tnOsTaskCreate(void (*pfuncTask)(void), idata unsgined char *pucStk) { TN_OS_TASK_HANDLE thRt;
for (thRt = 0; thRt < TN_OS_MAX_TASKS; thRt++) { 写实现开中断和关中断程序。由于TinyOS51仅适合 // 禁止中断 EA = 0; 80C51系列单片机,故直接使用“EA=0”和“EA=1”。 if (__GtcbTasks[thRt].ucTaskStat == __TN_TASK_FLG_DEL) { setTaskJmp(pfuncTask, pucStk, __GtcbTasks[thRt].jbTaskContext); __GtcbTask[thRt].ucTaskStat = __TN_TASK_FLG_RDY; EA = 1; // 允许中断 return thRt; } EA = 1; // 允许中断 }
函数实现
任务函数 task0()和task1() 时钟节拍中断服务函数 timer0ISR() main函数 main() void task0(void) /* { /* * 一个简单的任务,无限循环中让 /* TMOD = (TMOD & 0xF0) | 0x01; * 1. 初始化系统 * __GucTask0++。 * = 0x00; TL0 用户实现时钟节拍中断服务函数, // * 2. 创建任务 */ * = 0x00; TH0 并调用tnOsTimeTick()。 // 初始化timer0,即 * 3. 启动系统 void task1(void) */ TR0 = 1; // 初始化时钟节拍 */ { ET0 = 1; // 中断。 void main(void) while (1) { void = 0; timer0ISR(void)//__interrupt1 TF0 { __GucTask0++; { while (1) { tnOsInit(); } tnOsTimeTick(); __GucTask0++; tnOsTaskCreate(task0, __GucTaskStks[0]; } } } tnOsTaskCreate(task1, __GucTaskStk[1]); } tnOsStart(); }


1
概述
2
整体规划
3
4 5
任务控制块
内部变量初始化 创建任务
任务控制块
TinyOS51 V1.1增加了延时服务功能,因此,在TCB中增加了一个记录时 间的成员uiTicks。
与任务控制块相关代码:
#define __TN_TASK_FLG_DEL #define __TN_TASK_FLG_RDY #define __TN_TASK_FLG_DLY struct tn_os_tcb { jmp_buf jbTaskContext; unsigned char ucTaskStat; unsigned int uiTicks; }; typedef struct tn_os_tcb TN_OS_TCB; 0x00 0x01 0x02 // 任务被删除 // 任务就绪 // 任务延时
任务切换时机
使用时间片轮询调度的操作系统中,会在两种下进行任务切换。
1
任务主动请求调度
任务在调用操作系统提供的“管理”类服 务(如删除任务等)和“等待”类服务(如延 时、获取信号量、等待消息等)时,会主动请 求调度。
2
分配给任务的时间片已到 操作系统采用一个周期性的中断来管理时 间片,在这个中断服务函数中,判断运行的任 务是否用完了时间片。
调度算法
1
时间片轮询
任务A 任务B 任务C
2
优先级调度
3
带优先级调度的时间片轮询
+ 低优先级 + 中优先级 + 高优先级
t
高优先级任务先运行
t
不同任务不同对待,优先级高任务的先运行。
高优先级任务抢占低优先级任务
调度算法
1
时间片轮询
2
优先级调度
3
带优先级调度的时间片轮询
这种调度算法情况较复杂,类型 较多,自己去学习了解。
通常,为了提高可移植性,采用一个宏或函数来编


4
内部变量初始化
5
创建任务
6
7 8
启动多任务环境
任务调度 时钟节拍中断
tnOsStart()
在TinyOS51 V1.1中,如果不允许中断,则时钟节拍中断服务程序不会运 行,因此,在tnOsStart()中增加允许中断的代码。
void tnOsStart (void) { EA = 1; longjmp (__GtcbTask[0].jbTaskContext); } tnOsInit()中__GthTaskCur = 0, 即当前运行任务为0号任务。
1
延时管理
2
任务切换
for (thTask = 0; thTask < TN_OS_MAX_TASKS;thTask++) { if (__GtcbTasks[thTask].uiTicks != 0) { 如果uiTicks不为0,则uiTicks--,即缩短延时时间。未使用任务状态标志判断任务 __GtcbTasks[thTask].uiTicks--; // 缩短延时时间 是否处于延时状态。这是因为TinyOS51更高的版本具有超时功能,需要使用 if (__GtcbTasks[thTask].uiTicks == 0) { uiTicks来判断任务是否超时。 __GtcbTasks[thTask].ucTaskStat |= __TN_TASK_FLG_RDY; // 设置任务就绪状态位 如果uiTicks为0,则将任务设置为就绪状态。为了向上兼容超时代码,即区分 } } 系统服务是正常返回还是超时返回,未直接将任务设置为就绪状态,而使用 } “|=”操作。 }
// 任务上下文 // 任务状态 // 任务延时时间
static data TN_OS_TCB __GtcbTasks[TN_OS_MAX_TASKS]; // 任务控制块数组


2
整体规划
3
任务控制块
4
5 6
内部变量初始化
创建任务 启动多任务环境
tnOsInit()
由于TCB增加了一个uiTicks,则在tnOsInit()中进行初始化。


1
概述
2
3 4
整体规划
任务控制块 内部变量初始化
时间片轮询操作系统规划
协作式 多任务系统
时间片轮询 调度算法
时间片轮询 多任务 操作系统
TinyOS51 V1.0
TinyOS51 V1.1
TinyOS51 V1.1采用最简单的时间片轮询调度算法,在每个时钟节拍中 断时调度,即分配给任务的时间片为一个时钟节拍。 这样,在任务控制块中不仅不需要保存时钟任务剩余的时钟节拍,而且 也不必编写计算任务的剩余时间和设置任务时间片的代码。
OS初始化函数代码:
void tnOsInit (void) { TN_OS_TASK_HANDLE thTask; for (thTask = 0; thTask < TN_OS_MAX_TASKS; thTask++) { __GtcbTasks[thTask].ucTaskStat = __TN_TASK_FLG_DEL; __GtcbTasks[thTask].uiTicks = 0; } __GthTaskCur = 0; }
TinyOS51从V1.0到V1.1的改变
TinyOS51 V1.0和TinyOS51 V1.1的API不同点 TinyOS51 V1.0
任务调度函数 tnOsSched()
TinyOS51 v1.1
__tnOsSched()
任务延时函数
时钟节拍处理函数


tnOsTimeDly()
tnOsTimeTick()
// 允许中断 // 执行0号任务


5
创建任务
6
启动多任务环境
7
8 9
任务调度
时钟节拍中断 longjmpInIsr()
__tnOsSched()
任务调度函数__tnOsSched()中也要操作TCB,因此也需要加入开/关中断 代码包含临界区。另外,__tnOsSched()不再提供给任务直接调用,仅供内部 调用,因此添加前缀“__”。
5.4 时间片轮询多任务操作系统

1 2

概述 整体规划 任务控制块 内部变量初始化 创建任务 启动多任务环境
7 8 9 10 11
任务调度 时钟节拍中断
3
4
longjmpInIsr()
任务延时 删除任务
5
6
协作式多任务系统
协作式多任务系统中,任务切换需正在运行的任务主动让出CPU,这不 仅带来一些安全隐患,而且使程序设计相当的复杂。
// 操作的任务
// 任务初始处于删除状态 // 设置初值
相关文档
最新文档