进程调度一直是操作系统的核心,linux操作系统进程调度采用抢占式进程调度,时间片轮转。vxworks采用严格的优先级抢占式内存调度,即内存中如果存在高优先级(比当前正在运行的任务优先级高)的任务处于ready状态,则CPU暂停正在执行的任务,并且切换到高优先级任务执行,相同优先级的任务则采用时间片轮转调度。VXWORKS任务调度算法,简洁而有效,并且内存管理采用实地址空间,从而能够保证比较精确的实时调度。
一.孤儿进程
孤儿进程即该进程的父进程在其之前退出,而导致该进程在退出的时候一直处于僵死状态,即task_zombie状态。如下图代码所示:
tsk->state = TASK_ZOMBIE,
exit_notify();
如果父进程退出则在exit_notify()中为子进程寻找一个父进程.
如果该进程的父进程已经退出,则将其父进程设置init进程。
二.进程队列在多处理器下的分配
如果发现不同处理器之间的任务处理队列存放不均衡的情况,则调用load_balance()进行各个处理器之间的任务协调。