SRG: NetOS:
Student Projects
UoCCL


Student Projects on Pegasus

Below is a list of possible Part II student projects involving the Nemesis operating system. If you feel interested in any of these, you should get in touch with one of the named contacts in the first instance. They will be happy to discuss the project and suggest suitable supervisors. Other SRG network-related Part II projects can be viewed at the these project pages. A list of previous Nemesis projects is also available.


Each of the below projects has an associated rating; these were compiled from the opinions of the various members of the groups, which in some cases varied wildly. Click on the relevant link to get the individual ratings.

DISCLAIMER: simply completing one of the projects listed below does not in any way guarantee a good result. Many of the projects are open-ended, and others are simply vague. In all cases, a discussion with one of the contact persons will aid in understanding the scope and degree of computer science required for a project.

For more details on Nemesis see the Pegasus area on the laboratory's anonymous ftp server, and also the Pegasus WWW area. In previous years a short seminar has been given by members of the Pegasus group for the benefit of Part II students interested and considering a project in the group. Details are yet to be announced. Last year a number of students worked in this area and went on to be Research Students or Research Assistants working in the group.

For all Nemesis projects the special resources "a computer lab account", and "access to pegasus group workstations and hardware" will be necessary. The group will provide sufficient disk space on its servers. There are some conditions to working on Nemesis; further information can be found in discussion document 15.


Real-time Audio Processing

Nemesis provides an environment in which continuous media streams can be handled efficiently. An audio processing suite could be implemented, perhaps including some of the following:

View Ratings

Contacts: Stephen Early, Dickon Reed.

Return to index of projects


Eyeball Tracking

Currently Nemesis provides mechanisms for Quality of Service, but no policies. It would be interesting to construct a system which tracks where the user is looking and gives the best quality of service to that application. This can be done using an infra-red LED and a camera; light from the LED is reflected from the eye, and a program works out the relative positions of the reflection and the pupil. Gaze information could then be integrated with the window system and QoS allocation mechanisms of Nemesis to move resources around based on which window the user is currently focused on. e.g. between multiple video windows.

This is likely to be a difficult project. Here is a current commercial version.

View Ratings

Contacts: Paul Barham.

Return to index of projects


Digital TV Director

Most Nemesis boxes have sufficient "poke" to deal with multiple video and audio streams from different sources and process them on the fly. One possibility here then would be to allow a "director" to choose from various version of a scene in real-time (or on recorded video streams) and to cut and paste video and audio together to make a presentation. e.g. using audio correlation (see audio project above) to locate the speakers at a conference and select an appropriate camera. Nemesis could then move processing resources around the system based on the relative importance of the various data sources, always reserving enough resources for the TV director to keep going in the background.

View Ratings

Contacts: Dickon Reed.

Return to index of projects


Video Tracking

Nemesis is designed for the processing of continuous media. One application of this is to arrange for a video camera to track interesting objects, where "interesting" might include an individual, any circular object or any yellow object!

Ideally this project would include driving a "pan and tilt" unit to keep the subject centered in the camera's field of view. However it is not yet clear that such an item will be available. Nonetheless, the difficulty and computer science in this project involves the determining of the subject's location and computing its motion vector.

View Ratings

Contacts: Dickon Reed, Stephen Early.

Return to index of projects


Video Processing

Nemesis is designed to support processing of continuous media streams. In the past some projects have been done using audio data streams. It should be possible to do the same sort of thing to video data streams; they can be merged, distorted, etc.

A key feature of this project should be to exploit the QoS guarantees of Nemesis to allow these processing elements to degrade or adapt in the face of resource scarcity.

View Ratings

Contacts: any.

Return to index of projects


Security Guard Application

Write an application to monitor many video streams. If anything interesting is detected, record it and display it at the same time. This is completely open ended! Perhaps the application could recognise various well-known people. Perhaps it could "track" perpetrators around the room. Perhaps it could invoke some sort of high powered laser server to eliminate said perps. The choice .. is yours.

View Ratings

Contacts: Stephen Early, Dickon Reed.

Return to index of projects


Operating System Profiling

Recently, a number of tools have evolved for real-time profiling of operating system code (e.g. etp, ATOM). This project would involve applying either one of these tools, or a new one developed by the student, to profiling the Nemesis operating system, followed by analysis of the results.

View Ratings

Contacts: any.

Return to index of projects


Microprocessor Performance Analysis

Nemesis, along with other real-time operating systems, is designed to enable fine-grained quality of service guarantees to be made to applications. This means that the processor must context switch between different applications at a much higher frequency than on conventional operating systems.

Modern processors are not designed to do this- they are pretty fast but they can't turn corners. They contain internal state that records past behaviour of a program in order to optimize current execution (instruction, data, branch prediction, and jump target caches etc.) Unfortunately, context switches typically cause all the accumulated state to be discarded.

The aim of this project is to measure how context switch frequency affects the performance of modern processors like the Alpha 21164 and Pentium Pro. This can be done by devising suitable experiments in which multiple applications (such as those in the SPEC benchmark suite) are run in parallel on a single processor. The end result could be a new set of Operating System and processor benchmarks which give an indication of how well the CPU can be multiplexed between a number of concurrent tasks.

This project is research. It requires some good experimental computer science, but needn't be particularly difficult for someone with reasonable knowledge of C and the operation of microprocessors.

View Ratings

Contacts: Ian Pratt, Steve Hand.

Return to index of projects


Real-time Performance Benchmark Suite

Nemesis is supposed to provide an environment for soft-real-time processing of audio and video streams etc. Standard benchmarks measure batch jobs and so are inappropriate. This project would develop some soft-real-time benchmarks such as context switch time, interrupt latency, device driver performance and so on and use them to measure (and perhaps improve) Nemesis.

View Ratings

Contacts: Paul Menage, Steve Hand.

Return to index of projects


C++ Runtime Support

The Nemesis operating system is structured around a set of interface types, resulting in a strongly object-based style of programming. Currently C is used throughout, with certain restrictions on its use.

The investigation of how C++ can be mated to the Nemesis model of objects could form a student project. The project would involve design work on mapping the MIDDL interface definition language and type system onto C++, followed by the implementation of a C++ back end to the middlc compiler and a C++ runtime system over Nemesis.

View Ratings

Contacts: Dickon Reed, Steve Hand

Return to index of projects


Modula-3 Runtime Support

The Nemesis operating system is structured around a set of interface types, resulting in a strongly object-based style of programming. Currently C is used throughout, with certain restrictions on its use.

The investigation of how Modula-3 can be mated to the Nemesis model of objects could form a student project. The project would involve design work on mapping the MIDDL interface definition language and type system onto Modula-3, followed by the implementation of a Modula-3 back end to the middlc compiler and a Modula-3 runtime system over Nemesis.

View Ratings

Contacts: Paul Menage, Dickon Reed.

Return to index of projects


State Expunger

Nemesis manages state in a more explicit manner than Unix does: shared code is not allowed to keep state. The upshot of this is that porting a stateful shared library from Unix is tedious. This project would consider ways of encapsulating the state of a library in a way which is as transparent as possible. In C this corresponds to removing "static" and global variables. (Hence a good name for this project could be "anti-static". Ho ho.) This may involve pre-processing the code, or possibly re-writing the assembly output from gcc. You should be happy with using the standard Unix binary utilities such as 'ld' and 'as', and with assembly programming.

View Ratings

Contacts: Dickon Reed, Austin Donnelly.

Return to index of projects


Native Threads Packages

Nemesis domains are guaranteed regular amounts of CPU time by the operating system. The Nemesis "Virtual Processor" abstraction is designed to allows the development of a variety of application specific user-level thread schedulers which know how to partition the CPU resource between cooperating threads in the same application. Currently only two or three default thread schedulers have been implemented and none of them pass on QoS guarantees to user-level threads.

This project will involves designing and implementation a suitable selection of thread schedulers incorporating various QoS and scheduling policies.

View Ratings

Contacts: Paul Menage, Steve Hand.

Return to index of projects


Exception Handling

The Nemesis operating system defines a method of raising and catching exceptions, in a manner similar to that of Modula-3. This is currently implemented rather inefficiently using C setjmp() and longjmp() facilities.

A better system would be to use PC-range tables for working out where exception handling clauses in the code are positioned when unwinding the call stack after an exception has been raised. Some code for this already exists.

View Ratings

Contacts: Herbert Bos, Paul Menage.

Return to index of projects


Dynamic Code Synthesis for Networking

Nemesis is written in a way which means that device drivers can demultiplex data directly from the network to the application memory - the protocol code is located in the applications for Quality of Service reasons. This is achieved using "packet filtering". One means of specifying a packet filter is by using a program written in a (often overly) restrictive bytecode which the device driver executes. These "programs" must obviously change when a network connection is created or deleted.

Whilst this bytecode is a simple means of describing a packet filter, it is often hideously inefficient. A more sensible implementation would be to dynamically synthesize native code. Common packet filters could be "hand-crafted" so long as they conform to the same MIDDL interface.

You should be competent at assembly language programming before attempting this project.

View Ratings

Contacts: Neil Stratford, Austin Donnelly.

Return to index of projects


Marshaling Bytecode Engine

Nemesis uses an Interface definition language (similar in concept to Modula-3) called MIDDL to specify all major interfaces within the operating system and between clients and servers. A compiler written in the python scripting language converts this into Remote Procedure Call (RPC) stubs which transparently marshal arguments and results of a procedure call and perform the remote invocation.

Currently it is the case that all necessary marshaling code and RPC stubs must be compiled into the boot image or explicitly loaded by application code. This is both inconvenient and can take up a lot of memory. An alternative would be to have a single marshaling engine which operated on a compact "bytecode" representation of the MIDDL interface. RPC stubs could then be dynamically synthesized whenever required. The same representation would also be useful for communicating MIDDL interfaces between interface repositories on different Nemesis machines.

This project would design the byte code, write the marshaling engine, and change the python to generate the byte codes instead of the C stubs.

You should be happy doing assembler programming to attempt this project.

View Ratings

Contacts: Dickon Reed, Richard Hayton?

Return to index of projects


Porting Nemesis to Unix

Since Nemesis runs within a single address space, it is possible to run it as single process under Unix. This project would take Nemesis and add support for running over the "virtual hardware" provided to a Unix process: for example, timer interrupts can be emulated using alarm signals, mprotect(2) to emulate the MMU, etc. Once the basic features work, some device drivers might be written, e.g. a frame-buffer using X11, or a network driver using SOCK_RAW sockets.

View Ratings

Contacts: Stephen Early, Austin Donnelly.

Return to index of projects


ATM Network Debug Tool

The Alpha based Nemesis machines are more than powerful enough to deal with a 155Mbit/sec ATM network at full load in both directions. This project would modify the device driver so that the network receiver all cells and then writing some software that would use this machine as an ATM network debugging tool doing this like:

An alternative might be to attempt to measure the kinetic entropy of passing traffic which is of substantial research interest.

View Ratings

Contacts: Ian Pratt, Simon Crosby.

Return to index of projects


Remote Video Game Technology

As bandwidth gets cheaper it may become feasible to play games remotely - rendering would be done at a central location, and the video would be distributed to the players. Latency would be the biggest problem. To investigate this, a "remote play" system could be constructed to enable a console in Glasgow to be used from Cambridge over our ATM link. It's pretty simple to cut the end off a controller for a Sony Playstation and send the 8 bits of data across a network, but how do you send the data from a "light gun" across a network so that it means something to the other end?

This project would probably involve building a small amount of hardware and programming microcontrollers.

View Ratings

Contacts: Paul Barham, Stephen Early.

Return to index of projects


High-level Security Models over Nemesis Bindings

At the moment Nemesis enforces no single high-level security abstraction. At the lowest level, of course, the operating system ensures that peer-to-peer communication bindings (event channels) can not be 'faked'. Over the top of these mechanisms it should be possible to efficiently implement a number of security and acces-control schemes.

One interesting example is the security model developed by Richard Hayton as his Ph.D. thesis. This project would port his code onto Nemesis and apply it to application-level RPC/IDC service binding so that clients could only bind to servers "if permitted".

View Ratings

Contacts: Paul Menage, Richard Hayton?

Return to index of projects


Native Filesystem on Nemesis

Traditional UNIX file systems are not in general capable of delivering consistently quality bandwidth data streams to and from hard discs. Nemesis provides a platform upon which device drivers present applications with a guaranteed Quality of Service (QoS) and so a general purpose filesystem could be designed so as to be equally suitable for multimedia and conventional data storage.

View Ratings

Contacts: Paul Barham, Neil Stratford.

Return to index of projects