While resource allocation is deemed a domain of the OS, many resource allocation and scheduling decisions actually are performed by the CPU or by a compiler strategy or by a combination of OS, compiler and CPU microarchitecture. In this talk, we provide a basis for discussion how systems can benefit from a closer interaction of these tree HW/SW components, especially in the context of micro- and exokernel systems.
One of the major functional properties of operating systems is the control, allocation, and isolation of resources such as processor time and memory. However, fine-grained resource allocation also is defined by other components in the hardware/software stack. For example, memory allocation on the processor stack is defined by a combination of operating system (setting the stack pointer, switching stacks), compiler (defining stack frame formats), and processor microarchitecture (defining automatically saved parameters, offsets, etc.). Another example is the allocation of processor time; coarse-grained allocation is handled by the OS, whereas fine-grained allocation (which instructions execute at what time, how to handle hardware multithreading) is handled by the processor. Additionally, cooperative multithreading might be handled by the compiler or the application itself.
This talk intends to provide food for thought how a more close-knit interaction between OS, processor and compiler might benefit system designers. Based on experiences from a research project on flexible fault-tolerance, we examine resource control in the context of minimal OS abstractions, such as micro- and exokernels and propose methods to benefit from OS-CPU-compiler interaction in this context.
Speakers: Michael Engel