A fundamental change to the requirements of operating system architecture is taking place as hardware designers move from speeding up individual processors to including ever more processing cores on a processor die. Multicore platforms have led to an increased pace in hardware architecture evolution that operating system engineers struggle to keep up with. Substantial effort is being put into today’s commodity operating systems to make them scale with the increasing number of cores and adapt to new cache and memory hierarchies. At the same time, programs start to employ parallelism to leverage the offered potential for speedup. Commodity operating systems increasingly need to handle a dynamic and interactive mix of parallel applications sharing a multicore machine.
In my thesis I have been working with others to design and build the Barrelfish operating system. Barrelfish is designed from scratch for multicore architectures. Using the processor scheduling subsystem as an example, I will discuss the general problems that arise in building an OS resource management component, such that it is both scalable with an increasing number of cores, as well as agile with the changing hardware architecture. Finally, I will discuss abstractions to support scheduling of a dynamic mix of parallel applications in an interactive setting and show in two example scenarios how these abstractions can significantly improve the performance of a mix of parallel applications sharing the machine.