CS 656, Spring 2005
CS 656, Spring 2005
Note: Many of the projects below are large enough to support multiple
- An Operating System Kernel for Swarm Computing. Swarm computing
is a new computing paradigm enabled by the development of
mass-producible micro-electro-mechanical devices (MEMs) with
limited computing and (wireless) communication capabilities.
Thousands of such devices, for
example, can be sprayed around a volcano crater, submerged to the
ocean floor, or injected into a human bloodstream. They would
typically perform measurements and coordinate actions (such as
emitting certain chemicals or even performing cooperative
micro-surgery). These devices would typically run a suite of
coordination protocols which control their communication,
relay information to and from outside observers, interact with
the physical environment, and provide suitable high-level
abstractions to programmers and operators of the swarm.
The collection of these protocols may define the next generation
operating system for swarm computing. In this project,
we shall lay the main architecture of such operating systems
and implement a chosen subset of Swarm communication and
coordination protocols that belong to it.
- Priority-aware UNIX Sockets for High Performance Servers.
UNIX is the most popular
server platform today. Servers typically listen to a well-known port
for client connection requests. These requests are queued
in FIFO order until they are accepted by the server. In reality,
clients may have different priorities and should be handled
accordingly by the operating system. This project has two parts.
First, UNIX socket implementation will be modified to support
priority queuing of incoming client requests to a high-performance
server. Second, a new operating system interface will be designed for
applications (i.e., servers)
to define how priority values should be assigned to
requests coming off the network interface. The modified operating
system will be tested by running an Apache Web server on top
and demonstrating that high priority clients suffer less queuing
delays as a result of the new extensions.
- Group Communication Protocols for Weak Consistency.
Group communication protocols ensure consistency of global state
in a distributed system by providing communication primitives
that implement virtual synchrony. In many cases, virtual
synchrony is an overkill. For example, a set of cooperative
web caches need only to be loosely synchronized.
Loose synchrony allows a bounded deviation of the local
member state from the global state. A member
can purchase a ``de-synchrony ticket'' from the communication
protocol. The ticket allows the member to alter its state locally
by a certain maximum amount specified in the ticket without causing
communication messages to other group members. Once the maximum
state deviation is exceeded, the
communication subsystem produces a broadcast message re-synchronizing
the member with the global state. Hence, the ``inconsistency''
of each member remains bounded at all times by a user-defined
parameter. Successful protocols for implementing parameterized
weak consistency may be
the key to applications such as replicated e-commerce, reservation,
and trading servers. The next generation of such applications
would allow online users to interact with and alter the state of
local replicas without going through
centralized bottleneck components. This may be the enabler of
active Web caching technology; a technology that allows
on demand caching (i.e., replication) not
only of static files but also of scripts that generate dynamic
- Operating System Support for Computing under Uncertainty.
Unmanned, autonomous, possibly intelligent, robotic vehicles,
actuators, and probes are increasingly needed for operating in
high risk environments such as exploring planetary surfaces, deep
underwater exploration, emergency operations in disaster
areas, and military defense applications. Such vehicles will be
computer controlled. They will perform their missions in
highly dynamic, and perhaps poorly modeled environments. They
will have to execute multiple (computational) tasks and make
time critical decisions under uncertainty. In the absence of
sufficient information and time, an operating system would have
to allocate resources to these tasks in such a way that maximizes
the probability of mission success. A key architectural feature
in such an operating system would be the use of sensory feedback
from the environment for
adapting resource allocation. In an analogy with human psychology,
the next generation feedback-based operating system
will implement the ``reflex'' actions
of the autonomous system. Application programs (possibly involving
AI techniques) will implement higher level ``cognitive''
actions that are slower in response but are more ``intelligent''.
In this project we shall develop the architectural vision for
the new operating system and
implement a simple prototype to be used
for mission-critical computing under uncertainty.