Geo's Research



The information in this page is outdated... but if you're looking for stuff I've written, check these out:

I am a student in Professor Frans Kaashoek's Parallel and Distributed Operating Systems group at the MIT Lab for Computer Science. I have a vague idea of what I want to do for my thesis and that is, most probably, something along the lines of secure abstraction sharing in the context of the exokernel architecture. Some of the stuff I've worked on before:

Loadable Scheduling Policies (1997)

Last summer I was an intern in the Operating Systems group at Microsoft Research and worked with Mike Jones. The main motivation behind this work was my belief that operating systems should be different from what they are today. An OS should take from applications a set of requirements and then try to satisfy them, as opposed to forcing applications to conform to a set of fixed policies. An example would be process/thread scheduling.

General purpose computer systems need to execute a group of increasingly diverse jobs, so they end up with a single scheduling algorithm that represents a compromise. Such a compromise that is quite common today are priority-based schedulers. However, it is extremely hard to properly map requirements such as predictability, throughput, fairness, turnaround time, waiting time, or response time onto a fixed set of priorities. In addition, applications do not have access to global information when choosing priorities, which can lead to chaos in the system. Priorities are a rather primitive way of describing the relative performance requirements of processes.

In order to provide optimal scheduling performance, the operating system would need the ability to predict the future. However strange this may seem, it is not all that hard to do when semantic information exists regarding an application's intentions. Therefore, we need a system in which applications have the ability to express their requirements and then the operating systems can cater to them.

I am currently writing a paper with Mike in which we present a system that separates policy (scheduler) from mechanism (dispatcher) and externalizes the policy component. Scheduling policies can be dynamically loaded and unloaded at run-time and they are concurrently used by the kernel's dispatcher. The characteristics of a certain scheduling class need only be known to the particular policy component for that class and to the process that declares itself as belonging to the class. We describe a "proof-of-concept" real-time scheduler that can coexist with the native scheduler. Our results are encouraging: while most applications run unaware of the multiple scheduling policy, real-time applications get predictable scheduling to within a few microseconds.

Such flexibility not only enhances applications' performance (such as multimedia using the real-time scheduler), but it also changes the programming paradigm. It becomes much easier for programmers to write applications because the OS does not have to be tricked into doing what app writers want it to do: the applications states explicitly its requirements and the OS either guarantees that it will satisfy them or it informs the application that this might not be possible. We show that an operating system with multiple scheduling policies can offer applications much greater flexibility than traditional operating systems.



RFS (1996-1997)

I used to work together with Anthony Joseph, Josh Tauber, and Frans Kaashoek on a toolkit for mobile information access, called Rover. Most of my work is described in RFS: A Mobile-Transparent File System for the Rover Toolkit, which we presented as a Works-In-Progress poster at the 16th ACM Symposium on Operating Systems Principles (SOSP).

Rover addresses the challenges of mobile environments, such as intermittent connectivity, limited bandwidth, and channel-use optimization. The toolkit combines two new ideas to solve these issues for ``roving'' mobile applications: Relocatable Dynamic Objects (objects with a well-defined interface that can be dynamically loaded into a client computer from a server, or vice versa, to reduce client - server communication requirements) and Queued Remote Procedure Calls (a communication system that permits applications to make non-blocking RPC requests even when a host is disconnected, with requests and responses being exchanged upon network reconnection).

I wrote the Rover File System, that enables applications to run without any modification on Rover clients. The goal was to provide the last component of a complete development environment for mobile applications. Appication designers now have a simple choice: those portions of an application's state that are difficult to port, that change infrequently, or exhibit update conflicts that are easy to detect and resolve can rely on RFS for storage. On the other hand, application state that is sensitive to bandwidth and latency, or where conflicts may be complicated to detect or handle, can use the full functionality of Rover's object management support as well as conflict resolution and detection. We expect this to significantly ease the process of adding mobile-awareness to applications.



VNP (1996)

While an intern at IBM Research (T.J. Watson Center) I wrote the Virtual Network Protocol (VNP), which enables mobile computers to interconnect via Personal Messaging Units (PMU), such as pagers.

The motivation behind this research was the fact that the recent PMU's had advanced to the point where using them as network interfaces for the paging network was feasible. Skytel had released their 2-way pagers, which, unlike traditional pagers, allow the units to initiate pages (messages), not only receive them. These pagers can also be connected via a serial cable to the COM port of a PC or laptop, thus allowing the pager to be programmed. Even though the purpose of the new devices was to send alphanumeric pages, any type of data could be sent, with appropriate encoding, over the paging network. What made this solution to mobile network communication very attractive was that it could be done without having to purchase any hardware in addition to the 2-way pager that most users would be wearing anyway as part of their job duties.

VNP provides most of the services that a TCP/IP stack provides, in a manner absolutely transparent to the mobile application. It tailors the packets according to the specifics of short messaging networks. VNP performs packet retransmission and reordering to provide reliable stream communication and provides an interface for easy plug-in of encryption, compression, and encoding modules. The latter two are crucial because the networks with which VNP works have small maximum packet sizes and they don't always support the entire range of byte values (some even restrict the data to being purely alphanumeric).