Shared memory as a service
Summary:
Implement shared memory (a virtual address space shared between processors) as a service above the Barrelfish multikernel.
Motivation:
Traditional operating systems use cache-coherence hardware to extensively share memory and page tables between processors. In particular, threads running on different cores can share a virtual address space by sharing the physical page table.
In contrast, Barrelfish by default replicates OS state across cores rather than using cache-coherent shared memory. While this is a better match for future (and some current) hardware, and can lead to higher performance for message-passing applications, there remains a large class of existing parallel applications which use multiple threads in a shared virtual address space, and Barrelfish should provide efficient support for such applications.
Goals:
Build an application runtime library for maintaining a shared virtual address space across processor cores which share cache-coherent physical memory, but replicating page table information. Optionally, relax the model to include physical memory (such as the Intel Single-Chip Cloud Computer) which is shared but not cache-coherent. This view of shared address space as a service is novel in the OS area.
Research questions to be answered include: (1) what is the appropriate interface to such a "shared address space service"? (2) what are the performance tradeoffs of shared vs. replicated page tables, and how can these be evaluated dynamically online? (3) How can page table replication be implemented efficiently, and what are the consistency requirements?
Background:
Operating system internals, particularly virtual memory systems and multiprocessors. C programming. Distributed systems and algorithms.
Previous:
Hotplugging cores



