QNX是一个基于优先级抢占的系统。
这也导致其基本调度算法相对比较简单。因为不需要像别的通用操作系统考虑一些复杂的“公平性”,只需要保证“优先级最高的线程最优先得到 CPU”就可以了。
基本调度算法
调度算法,是基于优先级的。QNX的线程优先级,是一个0-255的数字,数字越大优先级越高。所以,优先级0是内核中的idle线程。同时,优先级64是一个分界岭。就是说,优先级1 – 63 是非特权优先级,一般用户都可以用,而64 – 255必须是有root权限的线程才以设。这个“优先级64”分界线,如果有必要,还可以通过启动Procnto时传 –P <priority> 来改变。
调度算法的对像是线程,而线程在QNX上,有大约20个状态。(参考 /usr/include/sys/states.h)在这许多状态中,跟调度有关的,其实只有 STATE_RUNNING和STATE_READY两个状态。STATE_RUNNING是线程当前正在使用CPU,而STATE_READY是等着被执行(被调度)的线程。其他状态的线程,处于某种“阻塞”状态中,调度算法不需要关注。
qnx 官网学习
登录配置: https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.security.system/topic/manual/pam.html 虚拟机配置:
https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.hypervisor.safety.user/topic/vm/vm.html









GVM: Guest Virtual Machine
QVM: hypervisor的一个process
PVM: Physical virtual machine
LA: Linux Android
LV: Linux Vehicle/Auto Grade Linux
VMM:Virtual machine manager
HAB:Hypervisor Abstract Communication driver<

本文详细介绍了QNX操作系统基于优先级抢占的调度算法,以及QNX的内核线程优先级设定。此外,文章还着重讨论了QNX的QTD安全机制和Power-Safe文件系统的限制。同时,对于GPIO配置和main函数的返回值在嵌入式环境中的应用也做了说明。

2974

被折叠的 条评论
为什么被折叠?



