GAIA - University of Illinois at Urbana

advertisement
Gaia: An Operating System to Enable Active Spaces
Manuel Roman, Roy H. Campbell
{mroman1,rhc}@cs.uiuc.edu
Department of Computer Science.
University of Illinois at Urbana-Champaign
1304 West Springfield Avenue
Urbana, IL, 61801
Abstract
Ubiquitous computing promotes physical spaces with hundreds of specialized embedded devices that
increase our productivity, alleviate some specific everyday tasks and provide new ways of interacting
with the computational environment. With all these devices everywhere, personal computers lose the
focus of attention. The users’ view of the computational environment is finally extended beyond the
physical limits of the computer and placed into the physical space that surrounds the user. Applications
will be mapped not only to views associated to specific windows in a monitor but also to the physical
environment. Therefore, the physical space will become the computer system.
We claim that ubiquitous computing requires novel system software capable of seamlessly coordinating
the enormous hidden complexity. Our goal is to extend the model provided by current computer systems
to physical spaces, therefore turning them into “living entities” or Active Spaces.
1. Introduction
Ubiquitous computing promotes the proliferation of embedded devices specialized in specific tasks.
Devices will be everywhere: providing new functionality, enhancing user productivity and leveraging
everyday tasks. One of the main aspects of ubiquitous computing is invisibility. This means that users
perceive the functionality but not the devices that provide this functionality. Physical spaces, and not the
devices they contain, are identified as the providers of services.
We want users to take benefit of the functionality exported by the physical spaces. However this
task requires the definition of a model and a supporting software infrastructure to orchestrate the large
amount of devices contained in the space. Such a model provides a homogeneous interface that can be
customized to the particular requirements of each user.
There are several approaches that provide models for interacting with active spaces [1,2,9].
However, the solutions they provide are customized for particular scenarios or are targeted towards a
specific type of functionality. In this paper we describe a generic model that exports and coordinates the
resources contained in a physical space thereby defining a generic computational environment. The model
we present extends traditional operating systems. It manages heterogeneous computational resources and
exports them uniformly, facilitating the control of physical spaces and the development of arbitrary
applications that run in the context of a space.
The model we present in this paper is called Gaia and it is applied to convert physical spaces into
“living” or autonomous entities. The result of applying the Gaia model to a physical space is what we call
an active space, which is a general case of a computing system. It is important to note that Gaia does not
focus on particular applications or human computer interaction issues. Instead it provides the supporting
infrastructure to build applications. Without this proposed model, applications have to “reinvent the
wheel” to manage the physical space and the entities it contains.
2. Computer Systems and Active Spaces
In the introduction we have defined an active space as a generic computing system. This means that
traditional computing systems such as personal computers are particular cases of active spaces. In this
1
section we map the standard components defined for a traditional computing systems to their active space
counterparts. We assume a personal computer as an example of a standard computing system and an
active office as an example of an active space. We also assume that the active office contains some
personal computers and workstations, video cameras, an overhead projector, devices to detect the location
of users in the office and devices to configure the lights and temperature of the room.
Traditional computing systems can be divided into four components: hardware, operating system,
application programs and users [3]. The hardware component of a personal computer comprises one or
several processing units with their associated volatile memory, permanent storage and several peripherals.
The active office exports, at least, as many processing units as personal computers and workstations are
contained in the office. The active office coordinates all the existing processing units exporting them
uniformly by providing, for example, a multicomputer model composed of weakly coupled processors.
The active office also contains persistent storage. The total amount of persistent storage the active office
exports equals the sum of available persistent storage exported by each computing system contained in
the active office. However, the active office (and in general every active space) defines two types of
persistent storage: permanent persistent storage and temporary persistent storage. Before explaining the
difference between both types of persistent storage, we have to introduce the concept of home active
space. Every entity contained in an active space either belongs to the active space or is “visiting” the
active space. For an entity that belongs to the active space we say that the active space is its home. Every
single entity has at least one home active space. Home active spaces provide permanent persistent storage
to their associated entities, and temporary persistent storage to the “visiting” entities. Permanent persistent
storage stores data as long as required by particular entities. Temporary persistent storage keeps data only
for a specific amount of time. Upon reception of certain configurable events, the data stored in temporary
persistent storage associated to certain entities is flushed to the permanent persistent storage exported by
the home active spaces of those entities. Finally, and still dealing with hardware, come the peripherals. In
the case of the personal computer, there are standard protocols to interact with those peripherals. For
those peripherals attached to internal cards, some of the standards are: PCI, AGP and ISA. They define
the electrical signals required to enable interaction between the personal computer and the cards by means
of the internal bus. The active office also contains, coordinates and exports peripherals. The active office
defines a software bus to enable data distribution among peripherals. This is equivalent to the internal bus
contained in a personal computer. The software bus provides a well-defined protocol to enable
communication among entities contained in the active office. Examples of protocols for the software bus
are IIOP, DCOM and Java RMI. So far we have already introduced the hardware mapping from a
computing system (a personal computer) to an active space (an active office). Thereby we have a physical
space modeled as a computing system. However, it is not an active space yet. It is simply a physical space
with computational capabilities that can host software to control the resources exported by the physical
space. Most of the existing solutions stop at this point.
Initially computing systems did not have an operating system. Therefore, one of the many
problems was that each application had to implement the code to control the hardware devices it required
[3]. Modeling a physical space as a computing system without an operating system poses exactly the
same problems. We have a collection of uncoordinated hardware devices that each application has to
configure appropriately. However, this is not a major problem. Assume now that we have more than one
application running in the same space, or more than one user managing the resources exported by the
space. This is obviously a common situation that will arise in almost every active space. The solution is to
provide a generic software infrastructure to manage the resources contained in a physical space. In other
words, the physical space requires an operating system. This operating system converts the physical space
into an active space, or in other words, into a “living entity” aware of itself, with reactive behavior and
capable of interacting and coordinating the entities it contains.
The last two components of a computing system, Application Programs and Users, fit naturally
in the model presented. However, the traditional way of understanding applications and users changes
once the model is extended. In the context of active space, a user, from the point of view of an entity that
“uses” the operating system is not restricted to a person. It can be any entity in the active space. Consider
2
for example the case of an active car that checks its status continuously and takes specific actions
according to specific events. In this scenario there is no human interaction. Application programs benefit
from the new computational model we define because for their computational purposes they can use any
of the entities exported by the active space, included users. According to our new model users are
exported as resources of the active space.
An active space is thus a physical space with certain computational capabilities plus an operating
system that standardizes the mechanisms required to coordinate those computational capabilities. The
infrastructure we present, Gaia, enables active spaces and models them as generic computing systems.
Therefore it is possible to reuse most of the existing principles associated to standard computing systems.
3. Gaia
In the 1970s James Lovelock formulated and popularized the idea of the Earth - the collective
atmosphere, oceans, lithosphere, and biosphere - as a single, cybernetically self-functioning
superorganism, albeit one without self-consciousness. This global entity he called "Gaia", after the old
Greek Earth-Goddess.
The Gaia project conceives physical spaces as living entities. As such, spaces are aware of all
contained resources (physical and computational) and their status, export a contextual model and provide
a two-way interaction mechanism. Gaia is in fact an operating system that includes a kernel (GAUSS 2k),
an application support framework (GENOMA) and a model of the active space (GASM); these
components are depicted in figure 1. Gaia does not intend to define high-level policies or rules regarding
the behavior of the entities running in the space. It simply provides the tools and a minimum set of lowlevel policies on top of which arbitrary active spaces will be modeled.
Gaia is a distributed metaoperating system that runs on top of existing
native operating systems. Only a small fraction of Gaia has to be
implemented for each OS, while the rest of system services are offered
as CORBA services that can run in any processing unit exported by the
space.
GAUSS2k (GAia Ubiquitous Software System) is the Gaia
operating system kernel. It defines the comPonent mAnagement Core
(PAC) that is native OS dependent, specifies the distributed object
model and provides the core services required by the rest of
Figure 1. GAIA Architecture
components of Gaia. These services are implemented on top of the
distributed object model (CORBA in our case) and are native OS independent. GAUSS2k provides
infrastructure support such as dynamically instantiating and reconfiguring entities, managing inter-entity
dependencies and bootstrapping Gaia on top of native operating systems. It is also responsible for runtime
support tasks such as remote entity interaction, naming, entity notification and security.
GENOMA (Gaia ExecutioN envirOnment Model for Applications) is an extension of the traditional
Model-View-Controller [4] that is the central concept behind traditional multiwindowed interactive
interfaces. This model is a generalization that takes into account the fact that views are not only windows
but any collection of entities (physical or computational) capable of externalizing a model in the most
convenient way. For example, activating a microphone, switching on a set of lights and projecting and
image on a screen is one of the views associated to a videoconferencing model that uses the position of
the user inside the active space as the controller. An active space provides a collection of models (each
entity can be considered as a model) that need to be coordinated. Finally a controller is not only a mouse
or a keyboard but in general any entity contained in the space capable of altering the state of a model or a
view. Also related to the model-view-controller is the task of scheduling the active focus in an Active
Space, resolving conflicts when more than one view needs to be mapped to the same physical region and
delivering events produced by one or more controllers to the active view.
3
GASM (Gaia Active Space Model) is similar to the user-level layer in traditional operating
systems. It is similar in that it hosts the user-defined software running in the space but it provides a
software model of the active space managed by Gaia. In general we use the term entity to denote any
physical and computational object contained in the space. GASM does not enforce any particular
hierarchy of entities but provides mechanisms to manage them. Although the active space model is not
enforced, templates for common active spaces will be provided. GASM is responsible for tasks such as
entity location, user interaction, entity navigation, monitoring, discovery and in general any service
suitable for the particular active space. All the entities implemented at this level are simply built using the
functionality exported by Gaia. They are a clear example of high-level policies.
3.1 Gaia OS Kernel: GAUSS2k
GAUSS2k stands for GAia Ubiquitous System Software. The 2k exponent denotes that GAUSS is built on
2k technology [5]. Therefore, the main architectural aspects of Gaia are inherited from 2k. Briefly, 2k is a
component-based, reflective, adaptable and user-centric metaoperating system. It is based on the premise
“What You Need Is What You Get”
(WYNIWYG) that means that the system
Resource
dynamically reconfigures itself to provide the
Manager
exact functionality required by each particular
application.
QoS
GAUSS2k is a metaoperating componentSecurity
based kernel that runs on top of existing OSes. As
Object
depicted in figure 2, GAUSS2k is composed of two
central components, the PAC (comPonent
Component
mAnagement Core) and the Object Bus, and seven
Repository
PAC
peripheral services built on top of those two
Environment
central ones. The peripheral components are
Service
Bus
implemented according to the Object Bus
Automatic
specification and therefore are native OS
Configuration
independent. On the other hand, the central
Data
Service
components are native OS dependent.
Management
Service
Figure 2. GAUSS2k Architecture
he
PA
C defines the component model, which includes the specification of the execution environment for the
components (Component Containers), a software pattern to enforce and manage inter-component
dependencies [6] and finally an interface to dynamically manage those components, their dependencies
and their execution environments. One of the key design targets of PAC was to make it independent of
the Object Bus specification. For this reason the PAC is unaware of the distributed object model
associated with the components implemented on top of it. Even though we use CORBA, it is possible to
use the PAC with other specifications such as DCOM or Java RMI.
The PAC exports the tools to manage components and defines the low level mechanisms to
implement any Gaia component. However there is still missing a communication bus and its associated
communication protocol. This is the task of the Object Bus, which in our case is CORBA. We are
currently using two CORBA implementations: dynamicTAO [7] for PCs and workstations and LegORB
[8] for handheld and palm-size computers.
From the point of view of handheld, palm-size and in general any embedded device with
computational capabilities, the GAUSS2k architecture expands their functional capabilities. By
implementing the PAC and the Object Bus core (an ORB in our case) they can be integrated in the active
space and therefore have access to any of the exported services. If required, Gaia can dynamically adapt
some of the services to the capabilities of those devices.
4
T
We currently have implemented the PAC and the Object Bus for Windows, and are finishing the
Windows CE implementation. In the future we have plans to port the implementation to PalmOS and
probably also EPOCS.
4. Related Work
There are several projects related to digitally enhancing physical spaces. They provide solutions for
particular scenarios and specific types of applications.
The Microsoft Easy Living project [1] focuses on home and work environments and states that
computing must be as natural as lighting. The main properties of their environments are self-awareness,
casual access and extensibility.
HP is working on CoolTown [2], which proposes adding web presence to physical spaces. The
Web paradigm is extended to physical spaces, which contain infrared beacons that provide URLs related
to the physical space. The web browser is used as the standard application GUI and one of the key aspects
is the dynamic creation of customized web pages according to contextual parameters.
Finally Georgia Tech’s Classroom 2000 [9] preserves and augments electronic notes taken by
students and teachers by attaching and synchronizing audio, video and annotations to class notes.
5. Conclusion
Gaia offers a generic infrastructure to manage arbitrary physical spaces with large collections of
ubiquitous devices. The result is what we call an active space that allows developing applications without
a strict knowledge of the underlying infrastructure provided by the physical space. Gaia is responsible for
mapping those applications to the specific entities of the physical space. We have extended existing
concepts for traditional computing systems to model active spaces. We believe this strategy facilitates the
understanding of this new concept called active space. The generic computing system allows reusing
existing knowledge about traditional computing systems, such as for example theory about operating
systems and the model-view-controller.
When considering a traditional computing system and an active space, it is not correct to consider
the active space as a particular case of the traditional computing system. It has to be understood the other
way around. That is, a traditional computing system is a particular case of an active space. It can be
defined as a micro-active space.
Gaia extends the computational environment beyond the PC, but not only to rooms or buildings
but also to campuses, cities and in general any arbitrary physical space. Active spaces will not exist in
isolation but instead will interoperate among them to provide a distributed computational grid. Entities
will have an associated permanent execution environment independent of particular active spaces that will
be mapped and adapted to different active spaces as the entity moves from one active space to another.
References
[1] The new EasyLiving Project at Microsoft Research.
Steve Shafer, John Krumm, Barry Brumitt, Brian Meyers, Mary Czerwinski,
Daniel Robbins. Microsoft Research
[2] Creating a Web Representation for Places.
Deborah Caswell. Internet Systems and Applications Laboratory
[3] Operating System Concepts.
Silbershatz and Galvin. Addison Wesley, 1994
[4] Applications Programming in Smalltalk-80™: How to use Model-View-Controller.
Steve Burbeck
5
[5] 2k: A Reflective, Component-Based Operating Systems for rapidly changing
environments. F. Kon, A. Singhai, R.H. Campbell, D. Carvalho, R.Moore, and
F.J.Ballesteros. Proceedings of the ECOOP’98 Workshop on Reflective Object Oriented
Programming and Systems, Brussels, Belgium, July 1998.
[6] Dependence Management in Component-Based Distributed Systems.
Fabio Kon and Roy H. Campbell. in IEEE Concurrency, 8(1), February 2000
[7] Design and Implementation of Runtime Reflection in Communication Middleware: the
dynamicTAO Case. Manuel Román, Fabio Kon and Roy Campbell. ICDCS'99 Workshop on
Middleware. Austin, Texas. May 31 - June 5, 1999.
[8] LegORB and Ubiquitous CORBA. Manuel Roman, M. Dennis Mickunas, Fabio Kon and
Roy Campbell. RM200, Workshop on Reflective Middleware. New York, 7-8 April 2000.
[9] Classroom 2000: An experiment with the instrumentation of a living educational
environment. G. D. Abowd. IBM Systems Journal. Vol. 38, No 4 – Pervasive Computing
6
Download