QNX操作系统优先级以及调度策略

本文深入探讨了QNX操作系统的优先级调度策略,包括优先级的设定、抢占机制、线程状态转换以及就绪队列的管理。QNX采用基于优先级的抢占式设计,线程按优先级高低获取CPU资源。此外,文章还介绍了QNX的三种调度策略:FIFO、循环式和适应式,并讨论了线程如何改变其调度参数和优先级。
摘要由CSDN通过智能技术生成

一、优先级分别以及任务抢占

Neutrino 提供了一个基于优先级驱动的抢占式的设计理念。优先级驱动意味着,我们可以为每个线程分配一个优先级,它将可以根据优先级调度策略获取CPU资源。如果一个低优先级线程和一个高优先级线程同时像获取CPU使用权,那么高优先级线程将会运行。抢占式意思是说,如果一个低优先级线程在运行,这个时候一个高优先级运行条件得到满足,将要运行,那么它将获取CPU使用权。

线程的优先级从1-255(最高)。普通线程的优先级范围从1-63(默认)。root用户线程优先级允许设置在63之( procmgr_ability())接口。系统有一个空闲线程(位于进程管理器)有最低的优先级(0),这个空闲任务总是处于就绪状态。

默认情况下子线程从父线程继承优先级。一个线程有两个优先级,一个称为真实优先级,一个成为有效优先级。系统通过有效优先级完成调度。一个线程自己本身可以修改两个优先级,但是有效优先级可能会因为系统调度策略或者优先级继承发生改变。正常情况下,有效优先级与真实优先级相等。

中断处理器的优先级比任何线程优先级都要搞,但是它不像线程一样被调度。如果一个中断发生了,那么:

1.当前正在运行的线程失去CPU占用权,开始中断异常处理(SMP issues)

2.硬件运行内核

3.内核调用中断处理程序


1.1任务状态分析

如果想要完全了解调度器的工作,首先必须了解任务在程序运行过程中的几种状态以及知道就绪队列的原理。

当一个任务从运行态转变为阻塞状态可能的原因有:

1.线程主动休眠

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值