实时操作系统知识点详情(任务调度)


  

   操作系统任务调度是指操作系统在多任务环境下对任务或进程进行管理和调度的过程。由于系统(cpu)资源有限,当有多个任务需要处理时,任务调度的目的是高效地利用系统资源,提高系统的响应速度和吞吐量,确保多个任务能够合理地共享系统资源。

一、名词解释

1. 调度器

   在操作系统中,调度器的任务是管理CPU的使用,通过选择和安排进程或线程的执行顺序来优化系统性能。

2. 优先级

  根据任务的重要程度为任务分配优先级,优先级高的任务请求可以优先使用cpu资源。例如在业务办理的窗口经常看到“VIP用户优先”的标识,这就体现了调度中优先级的概念。

(1)优先级反转

  优先级反转(Priority Inversion)是操作系统和并发编程中一个重要的概念,通常发生在一个低优先级的任务持有一个高优先级任务所需要的资源时,导致高优先级任务被阻塞,反而让中优先级的任务可以执行。这个现象会导致系统性能下降,甚至可能引起系统失效。

●举例:
假设有三个任务:高优先级任务 (Task H)、中优先级任务 (Task M)、低优先级任务 (Task L)。

以下是优先级反转的一个经典场景:
  Task L 获得了某个资源(比如一个共享锁)。
  此时 Task H 被调度执行并尝试获得 Task L 持有的资源,但由于资源被占用,Task H 被阻塞。
  由于Task H 被阻塞,Task M 开始执行,因为它的优先级高于 Task L。
  在这个过程中,Task H 本来应该比 Task M 优先执行,但却被 Task L 阻塞,而 Task L 又被 Task M 抢占了CPU资源,导致 Task H 的优先级被无意中“反转”了。

(2)优先级继承协议

  优先级继承协议是为了解决优先级反转的问题。例如当 Task L 持有资源并阻塞了 Task H,Task L 临时提升到与 Task H 相同的优先级。这样 Task L 就不会被 Task M 抢占,可以尽快释放资源,使 Task H 继续执行。一旦 Task L 释放资源,它的优先级恢复原状。

(3)优先天花板

  优先级天花板协议(Priority Ceiling Protocol, PCP)是一种用于实时系统中资源共享管理的协议,旨在解决优先级反转和避免死锁问题。

●示例情境
假设有三个任务(Task A, Task B, Task C)和一个共享资源(Resource X)。
它们的优先级分别为:
Task A: 优先级较低
Task B: 中等优先级
Task C: 高优先级

  Resource X 被设置了一个优先级天花板,其优先级为 Task B 的优先级。这意味着只有 Task B 和 Task C 可以访问这个资源,因为它们的优先级高于或等于 Resource X 的天花板优先级。

3. 任务状态:新建、就绪、运行、阻塞、终止。

(1)新建:任务刚刚创建,尚未进入就绪队列等待调度。
(2)就绪:任务已准备好执行,等待被调度到CPU上运行。就绪任务处于就绪队列中。
(3)运行:任务正在CPU上执行。
(4)阻塞:任务正在等待某个事件(如I/O操作完成或资源可用),不能继续执行,进入阻塞队列。
(5)终止:任务已完成执行或因某种原因被终止,任务结束运行,操作系统清理任务相关资源。

4. 任务类型:计算密集型、I/O密集型

  计算密集型任务:是指需要大量CPU运算能力而相对少量I/O操作的任务。通常不涉及大量的内存读写操作,而是集中在CPU的数值计算上。
  I/O密集型任务:是指需要大量I/O操作(如磁盘读写、网络通信等)等任务。通常会花费大部分时间等待I/O,仅有少量时间被用在CPU处理请求上。

5. 实时任务:硬实时任务、软实时任务

(1)硬实时任务

  该类任务必须在截止时间前完成,否则系统无法承担任务处理超过截至时间的后果。例如,交通工具上的传感器的信息处理任务必须在截止时间前完成,否则会造成严重的安全隐患。

(2)软实时任务

  该类任务可以偶尔超过截止时间完成,其结果是可接受的。例如视频播放,某几帧画面的计算如果超过了截止时间,则可能会造成视频的卡顿、画面不清晰等问题,但不会造成更加严重的后果。

6. 任务挂起

  任务挂起是指在操作系统中暂时停止一个任务(进程或线程)的执行,并将其放置在挂起状态下,使其暂时不参与系统的调度和执行。

7. 任务饥饿

  例如,在最短任务优先的调度算法中。当系统有大量的短任务和少量的长任务时,这个系统的长任务很可能会无法占用CPU资源,一直处于饥饿状态中,即永远无法被调度,而这对于整个系统调度的公平性是不利的。可采用调度算法,如时间片轮询等方式来解决任务饥饿问题。

8. 时间片轮询

   时间片(Time Slice)是指操作系统中用来调度多任务的基本单位。在时间片轮转调度算法中,每个任务被分配一个固定长度的时间片,例如10毫秒或者20毫秒。当任务被调度执行时,它会被允许运行一个时间片的长度,如果这段时间结束而任务还没有执行完毕,操作系统会将这个任务放入就绪队列的末尾,然后调度下一个任务来执行。
  时间片的作用是确保每个任务都有机会在CPU上执行,同时避免某个任务长时间占用CPU而导致其他任务无法及时响应,即任务饥饿。通过时间片轮转,操作系统可以实现公平地分配CPU时间,从而提高系统的响应速度和用户体验。
  在实际应用中,时间片的长度会根据系统的具体情况和性能要求进行调整,以平衡系统的吞吐量和响应时间。

9. 进程/线程上下文切换

   上下文切换是多任务操作系统中从一个任务(进程或线程)切换到另一个任务的过程。这个过程包括保存当前任务的上下文并恢复新任务的上下文。
   上下文通常指操作系统中保存和恢复的处理器状态信息,以便在多任务处理环境中进行任务切换(Context Switching)。上下文包括处理器的寄存器状态、程序计数器(PC)、堆栈指针(SP)、内存管理信息等。上下文切换是多任务操作系统实现并发执行的重要机制。

10. 进程控制块 PCB

  进程控制块(PCB,Process Control Block)是操作系统用于管理进程的一个关键数据结构。每当创建一个新进程时,操作系统会分配一个PCB来存储该进程的相关信息。PCB中包含了操作系统需要管理和调度进程所需的各种数据。
   在进程上下文中,处理器保存了程序运行时的所有状态信息,包括程序计数器、寄存器、堆栈指针、内存映射等。当一个进程被调度器调度时,操作系统会将进程的上下文保存到进程控制块(PCB)中,然后加载到内存中的适当位置,以便处理器可以正确地执行该进程。

11. 线程控制块 TCB

  在上下文切换期间,线程的状态信息存储在线程控制块 (TCB) 中,其中包括寄存器值、程序计数器 (PC) 和其他与线程相关的状态信息。当操作系统需要切换到另一个线程时,它会保存当前线程的状态并将控制权传递给另一个线程的TCB。然后,操作系统会将该线程的状态信息从其TCB中恢复,使该线程可以继续执行。

12. 并行

  并行指的是多核cpu处理多个任务在同一时间内同时执行。多个处理器或多个计算单元来同时处理不同的任务,从而加快整体的计算速度。并行处理的目标是通过分工合作来完成更大规模的计算任务,常用于高性能计算领域。
  例如:如果系统有两个处理器,任务A在处理器1上执行,任务B在处理器2上执行,两者同时进行。
在这里插入图片描述

13. 并发

  并发指的是单核cpu在同一时间段内管理和处理多个任务。虽然这些任务不会同时执行,但系统能够交替地处理每个任务,使它们看起来像是同时进行的。即宏观并行,微观串行。
  例如:在单处理器系统中,任务A和任务B交替执行。操作系统可能先执行任务A一段时间,然后切换到任务B,再切换回任务A,如此循环,使得两个任务似乎是同时进行的。
在这里插入图片描述

14. 抢占式调度和非抢占式调度

(1)抢占式调度

  操作系统允许高优先级任务在任何时间点中断当前正在执行的低优先级任务,以立即执行。

●举例:对于单核cpu使用抢占式调度执行两个任务,任务一优先级高,任务二优先级低。任务一执行时被阻塞,任务二开始执行,在执行过程中,任务一解除阻塞,那么会不会打断当前执行的任务二?

  在单核 CPU 系统中,任务的执行是通过调度器来管理的。任务的优先级决定了它们在调度时的执行顺序,优先级高的任务会优先执行。
  如果任务1由于某种原因(例如等待某个事件或资源,或使用延时函数)而阻塞了,调度器会将 CPU 的控制权交给可执行的下一个任务,这里是任务2。一旦任务1等待的条件满足,它将从阻塞状态变为就绪状态。在单核 CPU 中,当任务1变为就绪状态时,调度器会根据任务1的优先级来决定是否立即执行任务1。如果任务1的优先级高于当前正在执行的任务2,调度器会中断任务2的执行,保存任务2的上下文,并立即切换到任务1的执行。这就是所谓的抢占式调度,其中优先级更高的任务可以打断当前执行的任务。
  所以,根据优先级和调度器的实现,当任务1解除阻塞且其优先级高于任务2时,任务1可以立即执行,打断任务2的执行。这种行为确保了高优先级任务能及时响应其事件并执行。总结来说,任务的优先级决定了调度顺序,高优先级任务可以在低优先级任务执行过程中抢占 CPU 资源。

(2)非抢占式调度

  正在进行的低优先级任务不会被高优先级任务打断,必须先执行完当前的任务。正在进行的任务只能在以下情况下主动释放CPU,才能让其他任务执行:①任务终止。②任务主动调用系统调用或等待事件,使自己放弃CPU,允许其他任务执行。

16. 临界区

  临界区是指访问公共资源的一段代码或一段程序片段,需要在同一时间只能被一个线程执行。临界区用于保护共享资源,以避免多个线程同时访问或修改。

17. 调度指标

(1)吞吐量

单位时间内完成的作业数量。衡量系统在给定时间内处理作业的能力。吞吐量越高,系统处理能力越强。

(2)周转时间

从任务提交到任务完成所需的总时间。周转时间越短,系统响应速度越快。

(3)等待时间

作业在就绪队列中等待的时间总和。反映作业等待资源分配的时间。等待时间越短,作业的响应性越好.

(4)响应时间

从作业提交到系统开始首次响应(开始执行)的时间。尤其对于交互式系统,响应时间非常重要。响应时间越短,用户体验越好。

(5)CPU使用率

CPU实际用于执行作业的时间比例。表示CPU资源的利用效率。较高的CPU利用率表明系统有效地利用了处理器资源。

(6)公平性

所有作业或进程在系统资源分配上的公平程度。确保所有作业或进程在合理的时间内获得资源,防止某些作业或进程长期得不到执行。

(7)资源利用率

系统中各类资源(如内存、I/O设备)的使用效率。衡量系统资源的利用率,确保资源不被浪费。

二、 调度算法

1. 先来先服务(FCFS, First-Come, First-Served)

特点:按作业到达顺序调度。
优点:简单易实现。
缺点:可能导致长作业延迟短作业(即“长作业效应”)。

2. 最短作业优先(SJF, Shortest Job First)

特点:优先调度执行时间最短的作业。
优点:可最小化平均等待时间。
缺点:难以预知作业的执行时间,可能导致“饥饿”现象。

3. 时间片轮转法(RR, Round Robin)

特点:为每个作业分配固定时间片,按顺序轮流调度。
优点:响应时间稳定,适合交互式系统。
缺点:时间片过大时退化为FCFS,过小时增加上下文切换开销。

4. 优先级调度(Priority Scheduling)

特点:按作业优先级调度,高优先级作业优先。
优点:能保证高优先级作业快速处理。
缺点:低优先级作业可能“饥饿”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值