
Mastering Embedded Linux Programming
By :

The second big topic I want to cover in this chapter is scheduling. The Linux scheduler has a queue of threads that are ready to run and its job is to schedule them on CPUs as they become available. Each thread has a scheduling policy which may be timeshared or real-time. The timeshared threads have a niceness value which increases or reduces their entitlement to CPU time. The real-time threads have a priority such that a higher priority thread will preempt a lower one. The scheduler works with threads, not processes. Each thread is scheduled regardless of which process it is running in.
The scheduler runs when:
sleep()
or in a blocking I/O callFor background information on the Linux scheduler, I recommend reading the chapter on process scheduling in Linux Kernel Development, 3rd edition by Robert Love, Addison-Wesley Professional...