IncludeOS is a unikernel operating system developed at University of Oslo and OsloMet. In IncludeOS, the operating itself is a library that you can link with your application, producing a VM that just contains the operating system components you need. For example, if you develop a network application that will run in the cloud, you may not need a full file system or the ability to run other applications. This produces a very resource efficient and small virtual machine that is only a few megabytes in size and can boot in nanoseconds.
Memory allocators are used in both operating systems and userspace applications to hand out memory to applications, threads or subsystems. In an operating system several allocators are often needed; from fast allocation of small, long lived entries in a device list, when you don't yet know how much memory the machine has, to performant allocation and deallocation of large chunks, used to feed system calls like brk, which again feeds the general purpose allocator inside malloc. In an operating system environment, allocation schemes can also work directly with page tables to achieve security features, such as address space layout randomization, automatic allocation of stack pages on stack overflow, and implement copy on write.
In this master thesis we will look at different memory allocation strategies and how they can be implemented. We will look at speed trade-offs for different workloads and how we can efficiently support munmap/mmap POSIX features such as MAP_FIXED, MAP_PRIVATE and memory protection.
The goal of this thesis is to implement memory allocators for different use cases and evaluate them in terms of performance with different workloads.
Learning outcome
Experience
- deep understanding of operating system internals and virtual machines
- experience in operating system development
- contribute to an open source project
- conducting, evaluating and interpreting research results
Conditions
We expect that you:
- have been admitted to a master's program at MatNat@UiO
- take this as a long thesis
- are interested in and have some knowledge of C/C++ programming and low level systems programming