I am a Reader in Computer Systems at the University of Cambridge Computer Laboratory. I work in the area of Networks and Operating Systems, which is part of the Systems Research Group. I am also the Course Director of the MPhil in Advanced Computer Science, and a Fellow of Wolfson College.
My main research areas are operating systems and networks, although I'm also interested in topics in concurrency, databases, computer/processor architecture, distributed systems, security, programming languages and algorithms. Phew! Major non-interests include almost anything to do with UML, XML, the W3C, the OMG, or the Grid.
I can be contacted by a variety of means, but I have a strong preference for email, voice mail or SMS messages. In particular I tend to spend a reasonable amount of time in far away time zones, and hence please avoid calling my mobile number unless you're sure where I am, and the matter is urgent. Note also that my spam filter is pretty aggressive, so if you don't hear back from me, can be worth sending a plain text email to me with my lab email address explicitly on the to: or cc: line.
I first got into operating systems research during my PhD, when I was one of the people who designed and built Nemesis, a radically different operating system designed from scratch to support continuous media applications. Nemesis used a single address space where protection was orthogonal to translation, provided independent temporal and spatial multiplexing of low-level resources (e.g. CPU, memory, disk, and network) and included a run-time type system, naming contexts and 'ORB'-style invocation between executing tasks. Working with Nemesis was a lot of fun, and very different from standard Unix or VMS/NT systems. If you're brave you can try to build it from the somewhat bit-rotted source.
In the past few years I've been involved in a number of different areas, ranging from unusual P2P storage systems (Mnemosyne, Palimpsest) to novel network architectures (Predicate Routing, Plutarch). However my main focus has been on four projects:
- XenoServers: we hope to design and build Xenoservers, network-connected machines which can run applications, or store data, on behalf of (untrusted) clients. A world in which a selection of Xenoservers are deployed at strategic locations within the Internet will allow the introduction of truly global computing. Challenges here include server selection, service deployment, auditing, accounting and trust management. You can read some papers we've published in these areas here.
- Xen: originally built as part of the XenoServer project, the Xen virtual machine monitor has taken on a life of its own. Xen allows a single machine to host multiple operating systems concurrently, providing secure isolation between operating systems while retaining unprecedented efficiency. There have been a number of public stable releases of Xen to date, the most recent being Xen 3.0.x. To read about our design and implementation, check out the publications here; to try it out, head over to the downloads page.
- Pervasive Debugging: debugging parallel and distributed systems is notoriously difficult. In this project we are investigating novel virtualization techniques to allow debugging sets of processes across multiple machines at the same time; the current focus is on using Xen for this purpose, although we have also looked at full emulation, model checking and binary rewriting approaches. Some early publications are available here.
- FutureGRID: this project is looking at ways in which to build a GRID infrastructure for the next decade. My particular interests here lie in the area of spread-spectrum computing, which involves designing a combined load-balancing and fault-tolerance scheme based around redundant and/or approximate computation techniques. Other parts of the project involve multicast media tools, resource discovery, and distributed storage.
In addition to the above, I'm involved in a variety of research areas with my students including P2P keyword search, multi-perspective operating systems, and intelligent memory management.
You can find a list of my research publications on the NetOS group web page.
From 1998-2010 I taught introductory undergraduate course on Operating Systems (also covering basic computer organnization). From 2011 I will be teaching an undergraduate course on Concurrent and Distributed Systems.
At graduate level, I teach a module entitled Advanced Topics in Computer Systems. This is a seminar-style course in which students read and critique a number of papers each week. The set of papers covered here changes each year, but you can see an illustrative example here.
I'm fortunate enough to have worked with or still be working with the following:
- Evangelos "Vangelis" Kotsovinos (graduated 2005, now a Vice President at Morgan Stanley, London)
- Andy Warfield (graduated 2006, now a Professor at UBC)
- Alex Ho (graduated 2007, now at Arista Networks)
- Chris Clark (pending, now at Citrix VMD)
- Evangelia Kalyvianaki (graduated 2008, now a post doc at Imperial College London)
- Bin Ren (now at super-secret start-up)
- Eric Yu-En Lu (graduated 2008, now a JRF at Wolfson and a post doc at the CUCL)
- Michael Fetterman (ABD, now at NVidia)
- Mark Williamson
- Grzegorz "Gregor" Milos (graduated 2009, now at Acunu)
- Periklis Akritidis (graduated 2010, now at super-secret start-up)
- Derek Murray (grduated 2011, now a post doc at Microsoft Research Silicon Valley Lab)
- David Simner (CPGS 2009)
- Amitabha Roy (graduated 2011, now a post doc at the CUCL)
- Bharath Venkatakrishnan (CPGS 2010)
- Steven Smith
- Chris Smowton
- Malte Schwarzkopf
Please read this if you're interested in applying to do a PhD with me (or in the SRG in general).
Dr Steven Hand
University of Cambridge
15 JJ Thomson Avenue
Cambridge CB3 0FD
|Phone:||+44 1223 3-34628|
|Fax:||+44 1223 3-34678|
|Email:||Steven.Hand at cl.cam.ac.uk|