ERTOS Honours Thesis Projects
Introduction
The thesis topics listed here are available to strong undergraduate
students. They are mostly associated with research projects and
generally quite challenging; many topics have the potential to lead to a
publication, and in average we get about one paper a year from the work
of one (or more) undergraduate thesis students.
Students who are not aiming for excellence are in the wrong place
here. We are generally looking for honours candidates, or students with
outstanding performance in operating systems. Specifically we guarantee
a thesis topic to any student who has obtained a HD grade in UNSW's Operating
Systems or Advanced Operating Systems
course, no matter what their other grades are!
Note that the below list is constantly updated, new topics are added
as we identify them as work on various research projects
proceeds. Topics marked
are recent
additions.
UNSW students can access all of our recent student
theses.
Undergraduate Thesis Topics
Present topics supervised by Gernot Heiser
(official list)
- 3116: OS for a Dataflow Computer

NICTA is involved in a project to build a peta-scale computer based on the concept of a dataflow machine. This roject is to re-examine traditional OS functionality in the context of a totally different computing paradigm, and identify the core functions an OS for such a machine should have. It is furthermore to evaluate the existing hardware design for its ability to meet the requirements of the OS. A basic OS prototype is to be developed on a simulator for the
architecture.
Novelty and Contribution: Peta-scale (million GFLOPS) computing is a strategic initiative of the US government, with significant funding attached. Present computing architectures will not scale to PFLOPS, hence the renewed interest in dataflow architectures. This ToR is part of a large project to build a peta-scale computer (details are under NDA).
- 3115: OKL4 microvisor as a systems platform

The OKL4 Microvisor is a new platform which combines the properties of a hypervisor and a microkernel. This project is to evaluate to which degree the Microvisor fulfills the functions of a classical microkernel, in that it should be able to support the construction of general systems with a minimal trusted computing base. Specifically evaluate its ability to support a microkernel-oriented component system, such as CAmkES, at overhead comparable to L4 microkernels.
Novelty and Contribution: The OKL4 Microvisor has already demonstrated its suitability as a hypervisor, with measured overheads for para-virtualized Linux far lower than for any other hypervisor where performance data is available. Demonstrating competitive performance in classical microkernel-based systems would prove that the Microvisor is truly the convergence point of hypervisors and microkernels, and settle the old hypervisor vs microkernels debate for good.
more info
- 3114: Native Real-time Java on L4

Ovm is a real-time capable JVM for use in embedded systems. This project is to port Ovm to an L4 platform (seL4 or OKL4) to enable the use of Java components in safety- or security-critical environments. The performance and real-time properties of the port are to be evaluated.
Novelty and Contribution: Java, owing to its type safety, is an attractive language for programming critical systems. This usually requires real-time capability, which, in usable form, has only recently become available in JVMs, Ovm being one of them. To date, none has been ported to a secure microkernel that provides a small trusted computing base. The combination of real-time Java and L4 microkernel will provide new opportunities for trustworthy computing.
- 3113: Global scheduling in virtualized systems via semantic patches

Virtual machines inherently introduce a hierarchical scheduling approach, where the hypervisor schedules VMs and guest OSes schedule processes. This approach does not meet the requirements of embedded systems, where a global view of priorities is required.
This project is to use semantic patches, as supported by the Coccinelle tool, to remove the scheduling decisions from a para-virtualized Linux guest and integrate them into a global scheduling policy. The virtualization platform used will be the OKL4 Microvisor.
Novelty and Contribution: Virtualization is getting increasing traction in embedded systems, but the hierarchical scheduling model limits applicability and leads to ugly hacks and workarounds. Semantic patches present a potentially clean approach to collapsing the scheduling hierarchy, without increasing engineering effort. This will open new application areas for virtualization in embedded systems.
more info
- 2978: VT-x support for OKL4
OKL4 uses para-virtualization to run Linux, even
on x86, where pure virtualization is enabled by the VT-x
extensions. This makes sense on performance-sensitive mobile devices, as
para-virtualization has performance advantages over pure virtualization
(see Adams and Agesen, ASPLOS'06). However, there are uses where the
convenience of running an unmodified OS binary outweighs the performance
penalty.
This project is to evaluate this tradeoff for the OKL4 platform. It will
enable the execution of an unmodified Linux binary on the OKL4
hypervisor, and compare the performance with OK Linux (using lmbench and
other benchmarks as appropriate).
This topic i quite open-ended, with in-depth
performance analysis and performance tuning, particularly when making
use of more recent VT-x features, such as two-level virtual-address
translation.
- 2977: Efficient concurrency control for high-performance microkernels
Concurrency control in OS kernels for multicore (CMP) or multithreaded (SMT) processors requires locking, which introduces complexity and overheads. Both can be minimised by either of two extreme approaches: a big kernel lock (single-threading the whole kernel) and multikernel (avoiding shared kernel data alltogether and using a message-passing approach).
This project evaluates both schemes in the context of a high-performance microkernel (featuring very short system calls) for present and near-future high-performance embedded hardware. The approach will use simulation, measurements and analytical models as appropriate to determine which approach presents the best tradeoff for a particular hardware platform.
Novelty and Contribution: Most OS kernels use more-or-less fine-grained locking, as a big lock is thought not to scale. However, unlike most kernels, L4 microkernels are designed for very short system calls, which make a big lock competitive for small to moderate numbers of processor. The multikernel approach is mostly attractive for high numbers of cores and high communication latencies, none apply to embedded processors.
No systematic evaluation of the tradeoffs has been made to date. Given that CMPs are becoming widespread in the embedded space, and the commercial success of the L4 microkernel, this study is topical and relevant.
- 594 (GH109): BLUEsat OS
Design and implement an operating system for the BLUEsat student
satellite project. The operating system will require a high degree of
fault tolerance, including resilience against memory errors, and a very
high degree of robustness.
I will not take on students who have not shown a convincing performance
in COMP3231 ``Operating Systems''. I normally expect students to have
done COMP9242 ``Advanced Operating Systems'', although I make exceptions
in special cases.
Most topics can lead to publications.
Background
The following projects are related to embedded systems applications
and componentised embedded operating systems.
We are looking at a wide range of embedded applications in order to
get a feel for the complexity and issues involved in designing and
building such systems. We will use this experience to aid in the
further design and development of an embedded systems framework (a software
framework for building and deploying embedded applications) and
embedded component architecture (a component-based programming
architecture especially targeted at embedded systems).
Topics
-
IK24: Non-C languages on L4
Currently almost all software for L4-based systems is written in C.
There are however many languages whose runtimes or interpreters could
be ported to run on L4 as well. For example, Python was ported to
Mungi, an early version of
Io was made to run on L4, as was a very
simple version of the Squeak Smalltalk system,
and Lua was also ported
to L4/Iguana. However, none of these run on current versions and, as
such, we are still limited to using C for programming all L4-based applications. In
this project you will choose a favourite language and
port its runtime or interpreter and critical libraries to run on L4. Furthermore you
should integrate the language into the L4 environment such that code
written in that language can invoke L4 system calls, perform IPC and
transfer data to processes implemented in other languages.
-
IK23: Shared resources in an microkernel-based OS
One of the key services that an OS provides is a managing access to
shared resources. For example, a file system manages access to shared
disk space, a network stack manages access to a network device, a
window system manages access to the display, etc. In a modular,
microkernel-based OS, these shared resources are managed by user-level
services. In this project you will investigate ways of modelling such
shared resource managers within the CAmkES component framework on
L4 and develop a suitable model for building such services in a
componentised environment. You will assess the suitability of this
model by designing, implementing, and evaluating one or more such
services (e.g., a file system, a network stack, etc.).
-
IK22: Component Architecture on Secure Microkernel
The seL4 kernel is a new secure version of the L4 microkernel. CAmkES is a
component architecture designed for building microkernel-based
operating systems. Currently CAmkES is based on L4 and does not
address security issues. The aim of this project would be to get
CAmkES working with seL4 and then explore the ways that seL4 security
features can be leveraged by CAmkES to build secure embedded systems.
-
IK15: Video game console
Design a video game console system (based on CAmkES and L4) that is
programmable but cannot be 'hacked' i.e., games cannot be used to
override the default OS or other security software.
-
IK14: Programmable security camera
Design and build a networked and programmable security camera based on
L4/Iguana. It is basically a regular security camera that can be
programmed to do image manipulation, analysis, etc. directly in the
camera. There are numerous security issues involved, e.g., there must
be a tamper proof way of marking images as originals. There are also
real-time issues to deal with.
-
IK31: Secure display architecture for seL4
Explore the possibilities for a display (GUI) architecture for
seL4. The key property of such a display architecture is that it
allows mutually distrusting systems to access the display without
being able to observe or manipulate each others output, nor to be
able to spoof one another's output. The architecture should also
be flexible so that it can be used on many
different kinds of (embedded) displays (PDAs, phones, watches, media
players, etc.). The project will include exploring existing
secure display architectures (e.g., QT/embedded)
and evaluating whether adopting such an architecture on seL4 would
provide benefits or drawbacks.
-
IK10: Click Modular Router on L4
Investigate, design and implement a Click compatible modular network router
architecture on L4 making use of the CAmkES component framework.
Click is a software architecture for building network router software
from small, reusable, software components, while CAmkES is a
component-based framework for developing L4-based systems. Given
the componentised nature of both Click and CAmkES, it should be possible
to define a Click router in terms of CAmkES components. The project will
require you to design a framework on L4 that will allow Click
components to be reused to build network routers. Besides designing
and implementing this framework, you will also reuse existing Click
components to build several variations of network routers and
compare the performance of your implementation to existing Click
implementations.
Projects
-
GWK01: Formal Model of an ARM Processor in
Isabelle/HOL
Develop a specification of an ARM processor (e.g. Xscale) suitable for
use in formal verification of programs. A similar such model for an
MMU-less ARM6 core has been developed by Anthony Fox at Cambridge in the
HOL4 system. This should be examined for its usability, and for what is
missing with respect to a full model of an Xscale processor. If time
allows, an instruction-set level simulator should be generated from the
model. This project is an integral part of the formal verification of
the L4 micro kernel at NICTA. It connects cutting edge OS research with
real-world large-scale system verification. You will work with the
developers of L4 and Isabelle in an international team of PhD students
and researchers in NICTA's ERTOS group.
-
GWK02: Verifying the core of standard C library in Isabelle/HOL
You will work with a state-of-the-art interactive theorem prover
(Isabelle/HOL) to formally verify the functional behaviour of a small
number of basic C functions like memcpy, memset, etc. The verification
of these functions is at the basis of any undertaking that wants to
provide guarantees about programs implemented in C. This project is an
integral and important part of the formal verification of the L4 micro
kernel at NICTA. You will work with the developers of L4 and Isabelle in
an international team of PhD students and researchers in NICTA's ERTOS group.
-
GWK03: Formal Model of L4 IPC and/or Threads in Isabelle/HOL
Develop a specification of a subsystem of the L4 microkernel in the
theorem prover Isabelle/HOL. L4 provides three basic abstractions -
address spaces, threads and IPC. An abstract model has been developed
for address spaces and the virtual memory subsystem, the aim of this
project is to provide a similar model for one or both of the remaining
abstractions. In addition, an investigation into high-level properties
of this model will be undertaken, together with the development of
proofs that the models satisfy these properties. If time allows, the
model will be refined towards the L4Ka::Pistachio implementation on
ARM. This project is an integral part of the formal verification of the
L4 micro kernel at NICTA. It connects cutting edge OS research with
real-world large-scale system verification. You will work with the
developers of L4 and Isabelle in an international team of PhD students
and researchers in NICTA's ERTOS group.
Projects
- 2981: Secure microkernel-based web server using Linux instances
Our research group has developed a formally verified secure
microkernel that supports virtualisation. We have a version of Linux
that runs on top of this kernel. The goal of this project is to
develop a secure web server platform consisting of a instance of Linux
running in the DMZ and an instance of Linux running on the trusted
network - all actually running on the same machine using the secure
microkernel to separate them. This project has the chance to be
deployed as a demonstrator for our groups web site.
-
KJE15: A Secure Bootstrapper for the seL4
The seL4 microkernel is a high assurance microkernel capable of acting
as a seperation kernel when it and the encompassing system is
instantiated correctly. The goal of this thesis is to develop a simple
component model that can specific an initial system state - i.e. the
servers and applications that will run on the microkernel. THe
component model is then used to generate the boot strapping code to
instantiate the system with the specified seperation guarantees. The
project may involve evaluating the existing CAMKES framework for the
component model, and looking at formal models and guarantees for both
the component model, and the generation of the boot strapper.
-
KJE16: Linux as a component.
NICTA has various versions of Linux that run para-virtualised on
various versions of micro-kernels developed here at NICTA. However,
the connection between Linux and the platform is rather ad-hoc, which
makes is difficult bring Linux into the principled componet framework
(CAMKES) developed here at NICTA. This project would involve examining
the interface between the micro-kernel and the support infrastructure
to allow Linux to be just another component in the CAMKES framework.
-
KJE17: ARTEMIS robotic clarinet player
NICTA is entering the ARTEMIS intrument playing robot
competition. This project involves developing the system software side
of the robot, with an eye to making it general enough to use it for
future entries. It involves low-level embedded controller programming,
Linux kernel programming, and application programming. A familiarity
with music is also helpful.
How to apply:
Contact the relevant supervisor.
Note: We promise a thesis topic to every interested student who
has obtained a HD grade in COMP3231/COMP9201 Operating Systems or
COMP9242 Advanced Operating Systems. If necessary we will define
additional topics to match demand.
We will not turn down any students doing exceptionally well in OS
courses. However, this does not mean that an HD in OS or Advanced
OS is a prerequisite for doing a thesis with me. Interested
students with lower OS marks are welcome to talk to me if they feel they
can convince me that they will be able to perform well in an OS
thesis.
Keep in mind that these topics are all research issues and generally at
the level of Honours Theses. They are not suitable for marginal students
or students with a weak understanding of operating systems. We expect you
to know your OS before you start.
Past thesis reports and DiSy thesis rules (internal access only)
Postgraduate thesis topics:
Undergraduate thesis topics are also suitable for coursework Master's
projects. Same conditions apply: You must have a pretty good track
record in OS courses.
Information about research theses