打印
[学习资料]

抢占式调度是如何工作的

[复制链接]
390|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forgot|  楼主 | 2024-4-12 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 系统初始化,然后开启任务调度器。此时执行的最高优先级的任务Task1Task1会一直运行直到遇到系统阻塞式的API函数,比如延迟,事件标志等待,信号量等待,Task1任务会被挂起,也就是释放CPU的执行权,让低优先级的任务得到执行。
2. FreeRTOS操作系统继续执行任务就绪列表中下一个最高优先级的任务Task2Task2执行过程中有两种情况:
a) Task1由于延迟时间到,接收到信号量消息等方面的原因,使得Task1从挂起状态恢复到就绪态,在抢占式调度器的作用下,Task2的执行会被Task1抢占。
b) Task2会一直运行直到遇到系统阻塞式的API函数,比如延迟,事件标志等待,信号量等待,Task2任务会被挂起,继而执行就绪列表中下一个最高优先级的任务。
3. 如果用户创建了多个任务并且采用抢占式调度器的话,基本都是按照上面两条来执行。根据抢占式调度器,当前的任务要么被高优先级任务抢占,要么通过调用阻塞式API来释放CPU使用权让低优先级任务执行,没有用户任务执行时就执行空闲任务。

使用特权

评论回复
沙发
xinpian101| | 2024-4-13 15:52 | 只看该作者
优先级高的可以抢占CPU

使用特权

评论回复
板凳
g0d5xs| | 2024-4-24 17:30 | 只看该作者
抢占式调度是一种操作系统调度策略,它允许高优先级的任务在任何时刻抢占低优先级的任务,以确保高优先级任务的及时执行

使用特权

评论回复
地板
zhizia4f| | 2024-4-24 18:36 | 只看该作者
每个任务都被分配了一个优先级,通常用数字表示,数字越小表示优先级越高

使用特权

评论回复
5
p0gon9y| | 2024-4-24 20:49 | 只看该作者
当一个高优先级的任务需要执行时,它可以通过触发中断来抢占当前正在执行的低优先级任务

使用特权

评论回复
6
suw12q| | 2024-4-24 21:55 | 只看该作者
中断处理程序会暂停当前任务的执行,并保存当前任务的上下文,然后切换到高优先级任务的执行

使用特权

评论回复
7
lamanius| | 2024-4-24 22:57 | 只看该作者
当一个任务被抢占时,操作系统会进行上下文切换,将当前任务的状态保存起来,包括寄存器的值、程序计数器等

使用特权

评论回复
8
kaif2n9j| | 2024-4-25 07:24 | 只看该作者
操作系统会加载高优先级任务的上下文,并将控制权转移到高优先级任务上。

使用特权

评论回复
9
ex7s4| | 2024-4-25 08:34 | 只看该作者
为了避免某个任务长时间占用CPU,抢占式调度通常会引入时间片的概念

使用特权

评论回复
10
tax2r6c| | 2024-4-25 10:03 | 只看该作者
每个任务被分配一个时间片,当时间片用完时,操作系统会强制进行上下文切换,将CPU控制权转移到下一个任务上

使用特权

评论回复
11
liu96jp| | 2024-4-25 11:05 | 只看该作者
在抢占式调度中,存在一个问题称为优先级反转。当一个低优先级任务持有某个共享资源时,一个高优先级任务需要访问该资源时,低优先级任务会阻塞高优先级任务的执行,导致高优先级任务无法及时执行。为了解决这个问题,可以使用优先级继承或者优先级翻转等技术

使用特权

评论回复
12
LEDyyds| | 2024-4-25 13:30 | 只看该作者
是不是类似于中断的抢断

使用特权

评论回复
13
heisexingqisi| | 2024-4-25 20:17 | 只看该作者
根据任务的优先级抢占吧。类似中断。

使用特权

评论回复
14
小明的同学| | 2024-4-29 21:00 | 只看该作者
用OS的项目很多吗,我还没用过。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1257

主题

10849

帖子

51

粉丝