Nicholas Fitzroy-Dale

Learn More
Running device drivers as unprivileged user-level code, encapsulated into their own process, has often been proposed as a technique for increasing system robust-ness. However, in the past, systems based on user-level drivers have generally exhibited poor I/O performance. Consequently, user-level device drivers have never caught on to any significant degree.(More)
The reliability of device drivers is of critical importance to the overall stability of computer systems. This paper presents the software architecture used for user-level device drivers in the Mungi operating system. We argue that this framework provides a safer environment in which to run device drivers, while making device driver implementation easier(More)
Smartphones have come to resemble PCs in software complexity, with complexity usually leading to bugs and vulnerabilities. Moreover, as smartphones are increasingly used for financial transactions and other privacy-sensitive tasks, they are becoming attractive targets for attackers. Unfortunately, smartphones are quite different from PCs in terms of(More)
Use of hardware-based memory protection to implement a componentised system is an effective way to enforce isolation between untrusted software components. Unfortunately this type of system design can lead to poor performance. Manual optimisation is error-prone and difficult. Instead, we describe a system to perform automatic optimisation of components,(More)
A key advantage of the component methodology is a sharp distinction between components themselves, which are relatively static, and the composition of those components, which tends to change frequently. It is a common practice to take advantage of this distinction through the use of a systems language to construct components, and a scripting language to(More)
This dissertation describes architecture optimisation, a novel optimisation technique .Architecture optimisation improves the performance of software components or applications by modifying the way in which they communicate with other components, or with the operating system. This is a significantly different focus to traditional compiler optimisations,(More)
Todd Proebsting's 1998 pronouncement that compiler optimisation research only results in marginal performance improvements was accompanied by the gloomy suggestion that perhaps researchers should spend their time in areas more likely to yield large performance gains, such as research into programmer productivity. This paper revisits Proebsting's claims, and(More)
Embedded devices such as mobile phones are offering increasingly more powerful environments to users, but the hardware is still characterised by low-power processors, limited system memory, and less than optimal battery life. Second generation micro-kernels like OKL4 optimise for embedded hardware and offer high-performance with a minimal memory footprint.(More)
We describe Currawong, a tool to perform <i>system software architecture optimisation</i>. Currawong is an extensible tool which applies optimisations at the point where an application invokes framework or library code. Currawong does not require source code to perform optimisations, effectively decoupling the relationship between compilation and(More)
  • 1