On Sun, Jul 13, 2003 at 12:37:22AM -0000, Bob Burrough wrote:
> finished or not.  The scheduler just wants to make sure the next program 
> gets to run.  Complex pre-emptive kernels can introduce concepts such as 
> prioritization into the scheduler.

Linux and Unix systems have always been preemptive in the sense you
describe; that's part of the Unix process model. The 'preempt' kernel patch
goes beyond this by allowing processes to be pre-empted, *even if* they are
in the middle of a kernel call. Without the preempt patch, kernel threads
generally do not give up the CPU until the kernel call completes.

The 'preempt' kernel patch allows pre-emption to happen in kernel space as
well as user space. By doing this, individual kernel calls that are
relatively time-consuming can be interrupted and completed in smaller
"chunks," rather than one big chunk, allowing for other processes to get CPU
more regularly.  This decreases overall latency and general "fairness" of
the scheduler system-wide, and the tangible benefit of this is much more
consistent interactive performance and elimination of "hurky jerky" moments
under heavy system load.

Best Regards,

-- 
Daniel Robbins
Chief Architect, Gentoo Linux
http://www.gentoo.org

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to