From b55f22d6a4f85751e0054dbf17eefe438a21b048 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 15 May 2025 23:50:06 +0200 Subject: feat(kernel/sched): fixes and improvements on the scheduler's implementation. why? - The previous one wasn't entierly correct on some parts. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/UserProcessScheduler.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'dev/kernel/src/UserProcessScheduler.cc') diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 24869d63..fe1a95ae 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -491,7 +491,7 @@ SizeT UserProcessScheduler::Run() noexcept { continue; } - kout << process.Name << " is being scheduled to run...\r"; + kout << ((*process.Name) ? process.Name : "USER_PROCESS") << " will be scheduled...\r"; this->CurrentProcess() = process; @@ -499,17 +499,21 @@ SizeT UserProcessScheduler::Run() noexcept { if (process.PTime < process.RTime) { if (process.RTime < (Int32) AffinityKind::kVeryHigh) - process.PTime = (Int32) AffinityKind::kLowUsage; + process.RTime = (Int32) AffinityKind::kLowUsage; else if (process.RTime < (Int32) AffinityKind::kHigh) - process.PTime = (Int32) AffinityKind::kStandard; + process.RTime = (Int32) AffinityKind::kStandard; else if (process.RTime < (Int32) AffinityKind::kStandard) - process.PTime = (Int32) AffinityKind::kHigh; + process.RTime = (Int32) AffinityKind::kHigh; + + process.PTime += process.RTime; process.RTime = 0UL; - } else { - ++process.RTime; + } + + if (!UserProcessHelper::Switch(process.StackFrame, process.ProcessId)) { + continue; } } else { - kout << process.Name << " won't be scheduled to run...\r"; + ++process.RTime; --process.PTime; } } -- cgit v1.2.3