Research Interests


Operating Systems

I am a co-investigator of a research project which aims to build an operating system known as Stardust that supports the deployment of services in the Cloud, with Prof Alan Dearle and Dr Jonathan Lewis. Stardust is a library operating system that permits a service to execute in a virtual, light-weight and secure environment on the Xen hypervisor. It also features a pre-emptive thread scheduler with multi-core support, and provides standard libraries including minimal TCP/IP stack and complete support for POSIX threads. Recently, we have started evaluating the implementation of Stardust in terms of security, performance, and scalability compared to Unix-like operating systems and modern software containers. This project is now being used in supporting the teaching and research activities at the University of St Andrews.

Distributed Systems and Cloud Computing

During my doctoral studies, I engineered a decentralised service orchestration system for managing workflows which represent precise specifications of computational tasks that can be executed based on the data flow dependencies between them. Using a heuristic approach that relies on real-time analysis of the network condition, this system provides the ability to split workflows into smaller parts which may then be transmitted to the most appropriate network locations (e.g., close to data sources) for execution. This approach reduces the overall data transfer between distributed resources and improves the execution time of workflows. It has been evaluated using resources from Amazon Web Services and Microsoft Azure. I was supervised by Prof Adam Barker and Prof Alan Dearle.

Research Grant

Dataflow Programming Languages

I designed a functional data coordination programming language called Orchestra that permits data flows between distributed services to be specified using high-level abstractions. The specification of a data flow application written in this language can be translated using a generative compiler into a highly scalable form of the application which consists of smaller executable components. The language compiler provides the ability to detect parallelism automatically by analysing the data flow dependencies between computational tasks. The design of this language has been published in peer-reviewed academic articles and documented in my doctoral thesis.

Related Talks