Differences between version 4 and predecessor to the previous major change of KernelPreemption.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 4 | Last edited on Saturday, January 24, 2004 12:31:46 pm | by RichardSilverman | Revert |
Older page: | version 2 | Last edited on Saturday, January 24, 2004 12:27:41 am | by JamesSpooner | Revert |
@@ -1,7 +1,7 @@
-When [SMP] was first introduced to Linux back in 2.0 kernel days, it was done with the "big kernel lock". The Big Kernel Lock was used so that when one processor tried to enter the kernel it had to aquire
this lock, and if another processor was already in the kernel it would block and wait for it to finish.
+When [SMP] was first introduced to [
Linux]
back in 2.0 kernel days, it was done with the "big kernel lock". The Big Kernel Lock was used so that when one processor tried to enter the kernel it had to acquire
this lock, and if another processor was already in the kernel it would block and wait for it to finish.
-In the 2.2 series of kernels, this "Big Kernel Lock" was slowly removed from parts of the kernel. This allowed more than one processor to be executing kernel code simultaniously, but only for some operations, others hadn't been updated yet for one reason or another, so they aquired
the Big Kernel Lock.
+In the 2.2 series of kernels, this "Big Kernel Lock" was slowly removed from parts of the kernel. This allowed more than one processor to be executing kernel code simultaniously, but only for some operations, others hadn't been updated yet for one reason or another, so they acquired
the Big Kernel Lock.
-Now, in 2.4, the Big Kernel Lock has gone away, everything is protected by it's
own little locks. this
means the kernel is "Reentrant
". Now, the Premptive
Kernel Patch works by allowing a process to preempt the suspention of another process
already in the kernel on the same CPU. This gives much better response, since if you have a high priority task that's blocked waiting on some data, and a low priority process running, as soon as the data is available to the High
priority task it can resume running immediately, where as
before Preemption
it would have to wait until the low priority task left the kernel.
+Now, in 2.4, the Big Kernel Lock has gone away, everything is protected by its
own little locks. This
means the kernel is "reentrant
". Now, the Preemptive
Kernel Patch works by allowing a process to preempt the suspention of another process already in the kernel on the same [
CPU]
. This gives much better response, since if you have a high priority task that's blocked waiting on some data, and a low priority process running, as soon as the data is available to the high
priority task it can resume running immediately, whereas
before preemption
it would have to wait until the low priority task left the kernel.
-Surprisingly enough, in most situations this actually improves performance! The reason is that processes that have been blocked get an opportunity to run as soon as possible doing a bit of work and then usually blocking quickly afterwards allowing the machine to return to it's
previous job.
+Surprisingly enough, in most situations this actually improves performance! The reason is that processes that have been blocked get an opportunity to run as soon as possible doing a bit of work and then usually blocking quickly afterwards allowing the machine to return to its
previous job.