The advent of multicore technologies has fueled much recent work on methods for designing, deploying, and verifying multiprocessor implementations of real-time applications. Such methods must necessarily be rooted in resource allocation techniques that facilitate predictable system designs. In work on such techniques, scheduling algorithms, which allocate processor time, have received the greatest attention. Synchronization algorithms, which coordinate access to other resources, have received much less attention.
The current state-of-the-art regarding real-time multiprocessor synchronization is that simple locking protocols can be supported, but not much else. This is a serious impediment that is limiting the evolution of real-time applications to "multicore-ready" versions. Driven by this, a rich set of multiprocessor real-time synchronization mechanisms is being developed in this project. These mechanisms are motivated by real application needs, as have arisen in joint work involving the investigators and industry colleagues at AT&T and Northrop Grumman. Such mechanisms are being designed for use within several system models, also motivated by real needs. These include models wherein various complexities exist, such as having tasks of differing criticalities, multiple subsystems that must be "isolated" from one another, heterogeneous hardware components, dynamic task behaviors, etc. In all of this work, the design of optimal synchronization protocols is being emphasized. These protocols are being prototyped and evaluated within a open-source UNC-produced real-time Linux extension called LITMUS^RT. Broader impacts will include continued joint research with industry colleagues, and the development of publicly-available open-source software that can be used by other institutions for research and teaching purposes.