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
pgp00000.pgp
Description: PGP signature