打印
[学习资料]

抢占式调度是如何工作的

[复制链接]
楼主: forgot
手机看帖
扫描二维码
随时随地手机跟帖
21
mickit| | 2024-5-4 13:36 | 只看该作者 回帖奖励 |倒序浏览
时钟中断是实现抢占式调度的另一种方法。当定时器产生时钟中断时,调度器可以在中断服务程序中重新评估任务的优先级,并根据需要进行上下文切换。

使用特权

评论回复
22
yorkbarney| | 2024-5-4 15:27 | 只看该作者
当一个高优先级任务准备好运行时,它会抢占当前正在运行的低优先级任务的处理器时间。抢占条件通常由任务的中断或信号量触发。

使用特权

评论回复
23
sdlls| | 2024-5-4 16:23 | 只看该作者
单片机抢占式调度(Preemptive Scheduling)是一种实时操作系统(RTOS)中常用的任务调度方法,特别适用于需要快速响应外部事件或中断的系统。在单片机系统中,抢占式调度确保高优先级的任务能够立即获得CPU资源,以最大限度地减少延迟和响应时间。

使用特权

评论回复
24
gygp| | 2024-5-4 21:18 | 只看该作者
当高优先级任务执行完毕后,RTOS会将其从就绪队列中移除,并检查其他任务队列中是否有任务需要执行。如果没有更高优先级的任务准备就绪,RTOS可能会选择继续执行之前被抢占的任务(如果它仍然处于就绪状态),或者将CPU置于空闲状态等待新任务。

使用特权

评论回复
25
chenjun89| | 2024-5-5 14:55 | 只看该作者
僚机一下RTOS的机制和代码比较容易理解。

使用特权

评论回复
26
jackcat| | 2024-5-6 08:21 | 只看该作者
当高优先级任务需要抢占CPU资源时,调度器会执行上下文切换。上下文切换包括保存当前正在执行的任务的状态(如寄存器值、程序计数器等)和恢复新任务的状态。这样,新任务就可以在当前任务的基础上继续执行。

使用特权

评论回复
27
robincotton| | 2024-5-6 11:26 | 只看该作者
单片机的抢占式调度是一种允许高优先级任务中断低优先级任务执行的调度方式。

使用特权

评论回复
28
yorkbarney| | 2024-5-6 14:35 | 只看该作者
每个任务或线程在创建时都会被分配一个优先级。优先级通常由数字表示,其中数字越小,优先级越高。

使用特权

评论回复
29
mattlincoln| | 2024-5-6 17:41 | 只看该作者
如果一个低优先级任务正在执行,而此时有一个高优先级任务变为就绪状态,那么低优先级任务会被暂停,高优先级任务将接管处理器的执行权。

使用特权

评论回复
30
adolphcocker| | 2024-5-6 20:54 | 只看该作者
当一个任务被抢占时,调度器会保存当前任务的上下文(状态),并加载下一个任务的上下文,以便快速切换。

使用特权

评论回复
31
lihuami| | 2024-5-7 08:26 | 只看该作者
系统中的每个任务都被分配了一个优先级。这个优先级通常基于任务的紧急性和重要性来确定。例如,一个需要立即响应外部中断的任务可能会被赋予最高的优先级。

使用特权

评论回复
32
alvpeg| | 2024-5-7 11:49 | 只看该作者
为了确保所有任务都能获得一定的CPU时间,RTOS通常会为每个任务分配一个时间片。
当时间片耗尽时,即使当前任务尚未执行完毕,也会发生上下文切换,允许其他任务执行。

使用特权

评论回复
33
robertesth| | 2024-5-7 14:54 | 只看该作者
每个任务或线程被赋予一个优先级。
高优先级的任务具有更高的权限,可以打断正在运行的低优先级任务。

使用特权

评论回复
34
burgessmaggie| | 2024-5-7 18:06 | 只看该作者
当单片机运行一个任务时,如果有其他任务的状态发生变化,比如从阻塞态变为就绪态,或者从就绪态变为可执行态,单片机内核会检查这些任务相对于当前运行任务优先级的高低。如果发现新任务具有更高的优先级,单片机会立即停止当前任务的执行,保存其上下文信息(即任务的状态和寄存器等),然后加载高优先级任务的上下文并开始执行。

使用特权

评论回复
35
sdCAD| | 2024-5-7 21:25 | 只看该作者
任务根据它们的重要性被赋予不同的优先级。当多个任务同时等待运行时,处理器会先执行优先级最高的任务。

使用特权

评论回复
36
V853| | 2024-5-8 08:40 | 只看该作者
为了避免任务长时间占用 CPU,抢占式调度通常引入时间片的概念

使用特权

评论回复
37
updownq| | 2024-5-8 12:45 | 只看该作者
在单片机系统中,中断处理是实现抢占式调度的关键。当一个中断发生时,CPU会立即响应并执行中断服务程序。在中断服务程序中,调度器可以根据优先级重新分配CPU资源,从而实现任务的抢占。

使用特权

评论回复
38
chenci2013| | 2024-5-8 16:05 | 只看该作者
当一个高优先级的任务准备就绪(例如,由于外部中断或定时器到期)时,如果当前正在执行的任务优先级较低,RTOS会立即停止当前任务,保存其上下文(即CPU状态、寄存器值等),然后将CPU控制权转交给高优先级的任务。这个过程称为“抢占”。

使用特权

评论回复
39
everyrobin| | 2024-5-8 19:09 | 只看该作者
抢占式调度能够保证对时间要求严格的事件得到及时处理,从而提高系统的实时性。

使用特权

评论回复
40
1988020566| | 2024-5-8 22:16 | 只看该作者
在抢占发生时,RTOS需要保存当前任务的上下文,以便在将来恢复执行。同时,RTOS还需要加载高优先级任务的上下文,以便它可以从上次中断的地方继续执行。这个过程称为“上下文切换”。上下文切换需要一定的时间,因此应该尽量减少不必要的切换以提高系统性能。

使用特权

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

本版积分规则