From: Tulio A M Mendes Date: Thu, 12 Feb 2026 04:13:13 +0000 (-0300) Subject: feat: decay-based scheduler — priority decay on time slice exhaustion, boost on sleep... X-Git-Url: https://projects.tadryanom.me/docs/static/gitweb.css?a=commitdiff_plain;h=d55631db693183e7f99d6ad39c313aa16338e2cc;p=AdrOS.git feat: decay-based scheduler — priority decay on time slice exhaustion, boost on sleep wake --- diff --git a/src/kernel/scheduler.c b/src/kernel/scheduler.c index b23e80c..654f07d 100644 --- a/src/kernel/scheduler.c +++ b/src/kernel/scheduler.c @@ -743,8 +743,10 @@ void schedule(void) { struct process* prev = current_process; // Put prev back into expired runqueue if it's still runnable. + // Priority decay: penalize CPU-bound processes that exhaust their slice. if (prev->state == PROCESS_RUNNING) { prev->state = PROCESS_READY; + if (prev->priority < SCHED_NUM_PRIOS - 1) prev->priority++; rq_enqueue(rq_expired, prev); } @@ -846,6 +848,8 @@ void process_wake_check(uint32_t current_tick) { if (iter->state == PROCESS_SLEEPING) { if (current_tick >= iter->wake_at_tick) { iter->state = PROCESS_READY; + /* Priority boost: reward I/O-bound processes that sleep */ + if (iter->priority > 0) iter->priority--; rq_enqueue(rq_active, iter); } }