2013-02-06 10:43 3269 People read Comments (3) favorite report Category: "OS" (4)
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Directory (?) [+]
UNIX uses a preemptive kernel, Linux uses a non-preemptive kernel kernel preemption (preemptive kernel): When a process is in kernel space, when a higher priority task appears, if the current kernel allows preemption, you can suspend the current task and execute a higher-priority process. Non-preemptive kernel: high-priority processes cannot preempt CPU runs by aborting low-priority processes running in the kernel. Once a process is in a nuclear mindset (for example, a user process executing a system call), the process will run until it is done or exited by the kernel preemption kernel, unless the process voluntarily abandons the CPU: first, this is necessary to apply Linux to a real-time system. The real-time system has strict response time limits, and when a real-time process is awakened by the hardware interrupt of the real-time device, it should be scheduled to execute within a limited time. Linux does not meet this requirement because the kernel of Linux is not preempted and cannot determine the dwell time of the system in the kernel. In fact, when the kernel executes a long system call, the real-time process waits until the kernel is running to exit the kernel before it can be dispatched, resulting in a delay in the response, which, under today's hardware conditions, will grow to 100ms. This is unacceptable for systems that require a high real-time response. The preemptive kernel is not only critical to the real-time application of Linux, but also solves the shortcomings of Linux for low latency applications such as multimedia (video, audio).
Preemptive kernel and non-preemptive kernel