The role of an operating system (OS) is to provide applications with safe and convenient access to low-level machine resources. Standard OSes, such as Linux and Windows, try to provide acceptable service to all applications with as little input from these applications as possible. Nevertheless, the emergence of highly complex, resource-demanding applications, such as multimedia applications, coupled with the increasing use of restricted environments, such as very small embedded systems, makes this general-purpose model less and less viable. What is needed is a means to allow application developers to extend an OS according to the application's particular needs. The main challenges are to make OS extension easy for non-OS experts, to make the resulting extensions safe and efficient, and to make the extension process portable across multiple architectures and OSes.
In this talk I will present a first step in these directions: the Bossa process scheduling framework. Bossa includes a type system that allows an OS expert to describe OS requirements on a scheduling policy and a domain-specific language that allows programmers to easily implement scheduling policies. The scheduling specific constructs provided by the language permit the Bossa compiler to check that a policy satisfies the types, before deployment in the kernel. The framework provides support for a hierarchy of schedulers, to support multiple concurrent processes having different scheduling needs. The talk will conclude with a demo of the use of Bossa in the context of a video application.