In this chapter, we discussed possible race conditions on various kernel data structures. Most scheduling
algorithms maintain a run queue, which lists processes eligible to run on a processor. On multicore systems,
there are two general options: (1) each processing core has its own run queue, or (2) a single run queue is
shared by all processing cores. What are the advantages and disadvantages of each of these approaches?