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/?a=commitdiff_plain;h=a9581a308de79990d46c7c931290d7b936e9aacb;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 9cde79ba..522ffe62 100644 --- a/src/kernel/scheduler.c +++ b/src/kernel/scheduler.c @@ -752,8 +752,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); } @@ -855,6 +857,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); } }