Find out how ICT can support biomedical and clinical researchFind out more. Managing complexity by developing new tools and processes. Managing Complexity

The University of New South Wales


ERTOS Summer Projects 12/2008 – 2/2009

These project are available to holders of the UNSW/NICTA Summer Research Scholarships. We may also provide some additional scholarships for good students with the a strong OS background who miss out in the official process. Talk to us if you are interested.

Background information

Contents

Projects marked NEW are not on the official list but are available nevertheless.


Linux/Gelato Projects

These projects involve work on the (Itanium) Linux kernel or userspace in the context of Gelato. They will be supervised by Peter Chubb.

  • Gel9: Merge Microstate Accouning with Taskstats
    Microstate Accounting has been available for Linux from our website for a couple of years now. Last year, the taskstats infrastructure was merged into mainline. As two packages that do sort-of the same thing, it'd make it easier to merge our microstate accounting packages if the two used the same (or very similar) interfaces.
    This project is to take the microstate accounting work and adapt it to report via the taskstats infrastructure.
    It is likely that the result will be able to be pushed upstream into Linus's kernel.
  • Gel8: IA64 Live CD NEW
    Knoppix, UbuntuLive, PuppyLinux, ... there are many live CDs for x86 platforms. This project is to develop one for IA64, possibly based on Debian.
    Challenges include working out how to build an EFI bootable CD, and creating an easy-to-use method of creating an image with selected contents.
  • Gel7: Extending the Open Source SKI Simulator
    The Ski simulator is an instruction-level open-source simulator for Itanium machines. It was the first target for Linux on Itanium, and is still useful in exploring what the machine is doing for operating systems development.
    This project, funded by HP, is to extend the Ski simulator to provice multicore and SMT support, and also to simulate later-generation processors.
  • Gel3: User-mode file systems
    Any code in the kernel of an operating system is critical to the stability and security of the system. Hence, security and stability can be potentially improved my taking services out of the kernel. One service that does not need to be inside the kernel is the file system, provided that performance does not suffer unduly from running it at user level.
    Using the libext2 library, a user-mode IDE device driver, and the user-mode NFS server, create a completely user-space NFS server. Benchmark it with various components in/out of the kernel.
    more info
  • Gel0: Microstate accounting
    The standard Linux tool for measuring how long a process spends running is getrusage(), which reports a statistical summary of time spent on the processor in the kernel and in user space, and a few other parameters to do with paging, resident set size, etc. Because it is a statistical summary, the times reported tend to overrepresent system time (because system time includes time spent in interrupt handlers) and underrepresent user time (the sleep/wakeup cycles of the measured process, if regular, tend to become synchronised with the sampling clock, and so even though the process wakes up and is on the queue at sample, time, it isn't actually on the processor).
    We have instrumented the kernel to provide cycle-accurate measurement of the time spent running on the processor (in system calls, and when running user code), time on various queues, and time spent in interrupt handlers.
    Subprojects:
    1. Thread time tool
      Brief: To design and implement a tool that collects microstate data from all threads in a process (either one started by the tool, or specified by PID on the command line) and displays the various times numerically, similar to the `top' program.
    2. Visualisation tool
      Brief: To design and implement a tool that collects microstate data about a process, and displays it graphicly as it evolves over time.
      Subproject 1 and 2 could be based on a common library for obtaining the data from the kernel.
    3. Improving getrusage()
      Brief: To add code to the Linux kernel that implements some of the missing fields in the struct rusage, particularly the RSS and context switch counting; and also fixes the page fault accounting problem (at present, `major' faults include pages that can be obtained from the page cache without I/O)
    4. Explore interactivity problems
      Brief: Using the results of subprojects 1, 2 & 3, explore the behaviour of Linux under various workloads, particularly wrt solving `xmms skipping under load' type problems.
    more info
  • Gel11: User-level drivers for user-mode Linux.
    ERTOS has developed a framework for running device drivers in user-space on Linux, i.e. outside of the kernel. We have adapted our own virtualisation environment, LinuxOnLinux, to use it so that in the guest operating system, normal non-paravirtualised in-kernel drivers can pass through to selected devices.
    This topic is to do the same for user-mode Linux, and to compare performance between the various possible solutions.
    more info

Real-Time Systems Projects

Real-Time systems make up an increasing share of our day-to-day lives. Be it a mobile phone which needs to react to changes in the radio reception in a timely manner, an airbag in a car which has to be triggered within several microseconds of a crash, or a fly-by-wire system which needs to ensure synchronous behaviour of all actuators. The projects below work towards ensuring that such time-sensitive systems can be run reliably without violating any timing requirements. The projects will be supervised by Stefan Petters.

  • SMP06: A constant bandwidth server for L4
    Many systems incorporate several real-time applications which need to be isolated in the temporal sense. One way of achieving this is to set and monitor deadlines, which ensure that one application is not using more than its share. However, this restricts applications much more than necessary to be able to make any guarantees. A way around this is a constant bandwidth server, which ensures that a thread gets a certain fraction of CPU in any given window of time. To achieve this an accounting mechanism is required which tracks how much time an application has already consumed in this window. Again performance impact of the accounting mechanism is crucial.
    more info

The following projects are in the area of worst-case execution time (WCET) analysis of real-time systems. As systems, and therefore their analysis, get more and more complex, the analysis problem is approached in a probabilistic way. Small units of the programs are profiled and combined probabilistically to represent a bound on the distribution of execution times of the worst case path of the program. Within the projects we are looking at the probability density function of individual small units. The projects will be supervised by Stefan Petters.

  • SMP03: A Real-Time Programmers Guide Dog towards Better Predictable Software
    Another aspect of the estimation of the longest execution time of real-time software is the influence of the implementation of a given algorithm. Often small changes in the implementation can result in major changes in the overestimation. This project is focussed on identifying possible sources of overestimation and inform the user, where in his code, hand optimisation looks most promising. Typical examples are code, which is only executed in the first iteration of a loop and thus lead to severe overestimations, or small if-then-else constructs, which may be recoded to allow for larger units to be analysed.
    The structural information and corresponding execution times are provided by an already existing tool chain. The project has a strong experimental character, which relies on many hands-on tests to be carried out. Within the project the student should look at many case studies and identify program constructs based on a control flow graph and execution trace, which may be automatically detected. In an evaluation step, the number of false positive and true negative detection should be compared with true positive detections. Additionally the gain in predictability of a set of detected cases should be reviewed.
    The very limited implementation aspects of this projects may be implemented using C++, Java or C.
    References (background information):
    • G. Bernat, A. Colin, and S. M. Petters
    • WCET analysis of probabilistic hard real-time systems. In Proceedings of the 23rd Real-Time Systems Symposium RTSS 2002, pages 279-288, Austin, Texas, USA, December 2002.
    • P. Puschner: Algorithms for dependable hard real-time systems. In Proceedings of the 8th IEEE International Workshop on Object Oriented Real-Time Dependable Systems , Mexico, January 2003.
    more info
  • SMP10: Translation of X86 assembly language into pure lambda calculus for use in analysis of real-time program behaviour
    Analysis of the real-time aspects of programs behaviour such as worst-case execution time is a new and active area of research. As part of NICTAs Potoroo project, we are attempting to automatically derive a worst-case execution profile for operating system kernels using a combination of statistical and analytic methods. At the core of our approach is a translation of the program being analysed into a purely-functional language resembling Haskell, and have completed the translation for the simple case of ARM assembly language. This project is intended to perform a similar translation for the much-more complex case of Intel Pentium/X86 architecture. The resulting translation defines precisely all aspects of the architecture including caches, branch prediction as well as the actual instruction execution in a mathematically-precise language of lambda calculus.
    more info
  • SMP11: Coordination Instance for a Closer Look of WCET Analysis
    A closer inspection and analysis of the dependencies of the execution time of small units of a program (blocks) is computationally expensive but may be rewarding in terms of reducing the overestimation.
    This project aims to select promising candidates for the analysis. This selection is based on the impact of the individual blocks due to loops, their individual contribution to the overall execution time and variability of their execution time. As thresholds for the selection will be target and application dependent, the design should contain an adaptive strategy for these decisions.
    more info
  • SMP12: Probabilistic combination of Execution Time Profiles
    Recent work in worst-case execution-time analysis identifies dependencies between measured execution-time profiles. Combining profiles (covering conservatively any possible dependency) has a known, but pessimistic solution. Currently there is no solution to do this combination on partially known dependencies and subsequently reducing the overestimation produced by the worst-case execution time analysis.
    more info
  • SMP13: GUI Implementation for an Analysis Tool
    The worst-case execution-time analysis of code is performed by many different steps. Furthermore there are a number of different views the person analysing a piece of code may have. This GUI would need to coordinate the analysis steps of our tool-set and provide a suita ble extensible user interface to access all available informationen in an efficient way and allow the user to interact with the analysis. The project is aimed to work with graph visualisation software and a portable GUI library like QT and enable communication between the custom made GUI and the graph visualisation software
    more info

Componentisation Projects

These projects deal with the building of componentised operating systems on top of L4, and CAmkES the component architecture that supports this. They are supervised by Ihor Kuz.

  • IK38: Audio Framework for Embedded OS
    Multimedia and audio devices are a popular class of embedded systems. As part of our research into modularised, microkernel-based operating systems for embedded devices, we wish to look at the design and implementation of an audio framework. This involves designing and developing a reusable software framework for audio applications and devices. The framework must be built using the component architecture we have developed for microkernel-based operating systems. Building a demonstrator showing the framework in use will also be part of the work.
    more info
  • IK39: Embedded File System
    One of the key services that an OS provides is a file system. We are in the midst of designing and building a modular (L4) microkernel-based operating system for embedded devices. While there are many file-systems available, we do not yet have a suitable file system service for our OS. Furthermore, not much work has been done on the design of a file system service in a componentised environment. This project involves designing and implementing an existing file system to work in a componentised operating system. Besides providing a functioning and reusable system component, it is necessary that the resulting file system also exhibits good performance.
    more info
  • IK40: Linux as a Component NEW
    The ERTOS group has done (and commercialised) much work in virtualising Linux to run on the L4 microkernel. We have also done work developing a componentised microkernel-based OS. However the two essentially live in separate worlds. The goal of this project is to integrate virtualised Linux (and its applications) into the componentised OS. One way to do this is to treat Linux as a large component and develop appropriate interfaces and an appropriate framework for this. The project will investigate the best way to do this and implement a prototype system.

L4 and Embedded Systems Projects

These projects cover a wide range of operating systems and embedded systems research, mostly dealing with L4. They are supervised by Kevin Elphinstone, Gernot Heiser, and various PhD students and research engineers.

  • KE2: Haskell on L4/Iguana
    One approach to developing more reliable systems is to use a type-safe programmi ng language. Another approach is to formally model and verify the correctness of a system. Haskell is a type-safe functional programming language whose semantic s are close to those used for formal model and verification. Having the ability to use Haskell as a prototyping (and even the eventual implementation) language would open up the opportunity to explore the combination of these two approaches to building reliable systems.
    more info
  • KE20: Bare Metal Haskell
    Modern functional languages, such as Haskell, are becoming increasingly popular in application domains that require rapid development coupled with high safety and security demands. One particularly interesting such application domain is systems software for embedded systems, such as mobile phones. In this context, we have developed an executable specification of the seL4 microkernel, which improves existing second generation microkernels. In conjunction with an instruction level simulator, the executable kernel specification is a functional, if inefficient, implementation of the new microkernel.
    We are working on a verified implementation of the specification in a low-level language for production use. However, this is a very resource-intensive endeavour. Hence, we are investigating an alternative implementation strategy where we run the Haskell code "on bare metal" - i.e., the Haskell implementation of the microkernel boots on standard hardware without any other operating system in between. This is a challenging project as it requires the adaptation of the Haskell runtime system to run without operating system support. Such a bare metal Haskell implementation would also be useful for other projects, such as trusted web service in high confidentiality environments and is the focus of this summer project.
    more info
  • GHs82: VT-x support for OKL4 NEW
    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 can easily scale into an honours thesis topic, 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.
  • GHs81: SMT kernel locking trade-offs NEW
    Multi-threaded (SMT) processors are characterised by shared caches and very low (single-cycle) communication latencies between execution contexts. Consequently, treads on such a system are scheduled from a single scheduling queue, and other kernel data structures are also shared. This makes fine-grained locking hard and potentially expensive. For a kernel where average latencies of kernel operations are very short, a global kernel lock (i.e., single-threaded kernel) could be an appropriate approach.
    This project is to investigate global vs fine-grained kernel locking on the OKL4 microkernel running on a highly (>4) multi-threaded processor core. This is likely to lead to publishable results.
  • GHs80: Performance comparison of Singularity and OKL4 NEW
    Singularity (using language-based protection) and OKL4/seL4 (using hardware-based protection) are the leading examples of two alternative approaches to OS kernels for high security. This project is to do a quantitative comparison of the two approaches, focussing on the size of the trusted computing base and the performance of systems buillt on top (starting with assessing the basic communication performance).
    more information
  • GHs81: NoTA prototype on OKL4 NEW
    The Network on Terminal Architecture (NoTA) is an emerging approach for structuring software on a mobile phone handset, turning it logically into a distributed system. OKL4 should be the ideal platform for supporting NoTA with low overhead. This project is to demonstrate this by building a prototype NoTA-based system, and evaluate its performance.
  • GHs72: OKL4 on OLPC XO-1 NEW
    Port OKL4 and OK Linux to the one-laptop-per-child laptop.
  • IK41: Web Server for L4-based Devices NEW
    Any computer system worth its salt must be able to run a web server these days. At ERTOS we are building a research OS based on a component architecture and a microkernel. We already have a (simple) network stack, but we still don't have a web-server! What this project will accomplish is to design and build a componentised web server and OS. But, it doesn't end there. The system must be fast. Therefore a significant amount of effort will also be spent analysing and optimising the resulting system.
  • GHs27: Client-server vs. migrating threads
    Perform a thorough qualitative and quantitative comparison of the client-server (or active-objects) and migrating-threads models of computation, in the context of an L4-based implementation. Examine and compare the performance and resource usage of both approaches. Examples of both approaches are available in the form of the Mungi and Iguana systems, which share many commonalities (including a large fraction of their source code). This should help a fair comparison.
    more info
  • GHs70: 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.
    more info
  • DS10: Validation of performance counter based frequency scaling schemes
    Reducing the power and energy requirements of embedded systems is partly the responsibility of an operating system. Some new techniques for frequency scaling have been developed by NICTA, but it is not yet known whether they are generally applicable. The project will involve working closely with PhD and academic staff to implement and measure the performance of these new techniques on a number of embedded systems platforms, and the energy savings available.
    more info

Static Analysis and Verification Projects

The following summer projects are strongly related to the Goanna project on static analysis of C/C++ source codes. Goanna is a collaborative project between ERTOS and the Formal Methods research program. The summer projects are joint supervised by researchers and engineers of the two programs. Details can be found on the Goanna summer projects page, or from the links below.

  • Automatic Report Generation for Static Program Analyser
    The goal of the Goanna project is to improve the quality of system software by automatically detecting software defects (bugs). Our prototype tool analyses C/C++ source code and prints warnings much like compilers do.
    The goal of this summer project is to improve the tool so that it generates more sophisticated error reports in an easy to inspect format. It would be nice if programmers could browse source codes and the corresponding error messages with a web browser, easily linking similar or related bugs, ticking off false error reports and marking fixed problems.
    more info
  • IDE for Static Program Analysis
    The goal of the Goanna project is to improve the quality of system software by automatically detecting software defects (bugs). Our prototype tool analyses C/C++ source code, as well as embedded ARM assembly. Currently, it is a standalone command-line tool, which is explicitly started by the programmer or manually integrated into the development environment.
    The goal of this summer project is to integrate the Goanna tool into a real integrated development environment (IDE) like Eclipse or Microsoft Visual Studio. The IDE should support to individually select the properties that Goanna should check and to display valuable feedback on the location of found program defects.
    more info
  • Static Analysis of ARM Assembler Code
    The goal of the Goanna project is to improve the quality of system software by automatically detecting software defects (bugs). System software (like kernel code) often contains embedded assembler parts. An existing module analyses embedded ARM assembler code, but it does not yet check for a wide range of properties.
    The goal of this summer project is to extend the existing assembler analysis module by checking for many more interesting properties in embedded ARM assembler code, enabling the analysis of real operating system code.
    more info
  • Error Trace Generator for Static Program Analyser
    The goal of the Goanna project is to improve the quality of system software by automatically detecting software defects (bugs). Our prototype tool analyses C/C++ source code and prints warnings much like compilers do, i.e. it tells to programmer that a certain property is violated in a specific line of the source code.
    The goal of this summer project is to improve the tool so that it gives better understandable traces of how the suspicious line would be reached in the program (without actually having to execute it). Such a trace is of great value to the programmer, as it tells what is happening before the suspicious code.
    more info
  • Warning Suppression for Static Program Analyser
    The goal of the Goanna project is to improve the quality of system software by automatically detecting software defects (bugs). Our prototype tool analyses C/C++ source code and prints warnings much like compilers do. Some of these warnings are annoying to programmers, because the warnings are false positives or indicate problems that the programmers are well aware of.
    The goal of this summer project is to improve the tool so that it can suppress certain warnings or types of warnings. The tool should suppress the warnings even if the line numbers change, and show the warnings again if the affected code changes significantly.
    more info

Other Projects