Priority queues and the optional AP lane

This figure documents the historical i386 source baseline. Current native x86-64/AArch64 qualification is recorded separately; this is not an ELF64 or native SMP implementation diagram.

Priority queues and the optional AP lane The BSP chooses among eight priority queues, with starvation and causal-activity adjustments. Runnable tasks return to ready queues after yield or preemption. Only READY, non-user, explicitly offloadable kernel tasks are candidates for the configured SMP offload lane. This does not migrate user tasks to APs. queues->select select->bsp select->eligible SMP + offload enabled bsp->queues yield / quantum expires eligible->ap eligible task + idle AP queues Shared ready queues priority 0 · highest eligible task → next priorities 1…6 per-priority linked lists priority 7 · idle idle / lowest priority select BSP selection priority + periodic starvation boost + periodic causal-activity boost bsp CPU 0 · BSP user tasks + ordinary kernel tasks eligible Opt-in offload eligibility READY + kernel-only + ap_offloadable ap Idle AP · cooperative kernel-task lane no user-task migration
Priority queues and the optional AP lane The BSP chooses among eight priority queues, with starvation and causal-activity adjustments. Runnable tasks return to ready queues after yield or preemption. Only READY, non-user, explicitly offloadable kernel tasks are candidates for the configured SMP offload lane. This does not migrate user tasks to APs. queues->select select->eligible SMP + offload enabled select:e->bsp:e default eligible->ap eligible + idle AP bsp:w->queues yield / quantum expires queues Shared ready queues 0: highest; 7: idle 1…6: per-priority lists select BSP selection priority + starvation boost + causal-activity boost eligible Opt-in SMP offload: READY + kernel-only + ap_offloadable ap Idle AP cooperative lane no user-task migration bsp CPU 0 · BSP user + ordinary kernel tasks

Default user execution stays on the BSP; opt-in AP offload is restricted to eligible kernel tasks.

Text equivalent and source references
  • The BSP chooses among eight priority queues, with starvation and causal-activity adjustments. Runnable tasks return to ready queues after yield or preemption.
  • Only READY, non-user, explicitly offloadable kernel tasks are candidates for the configured SMP offload lane. This does not migrate user tasks to APs.

Queue / routing map. Source paths refer to the atlas baseline; the kernel checkout is private.

  • kernel/core/task.c · schedule, maybe_offload_to_idle_aps, ready_counts_offloadable
  • include/task.h · task_set_ap_offloadable
  • docs/SHOWCASE.md · SMP limits