Manual

Manual
SchemeStation documentation





One night, in my dream,
I heard a voice that pronounced ``Scheme!''
And suddenly, all me knew
that taking place was something new.
In my dream, I saw the nations
filled with working SCHEMESTATIONs.




1 Abstract

This is the comprehensive manual for the users and administrators of the SCHEMESTATION operating system simulator for UNIXtm'es, version 1.0.0, released in Spring 1998.

The SCHEMESTATION operating system simulator is the result of a software project in Helsinki University of Technology. Its purpose is to enable research on distributed operating system concepts.

The simulator consists of two main components: the domain simulator ss and the network simulator ssnetsim. Together they form a complete simulation environment for the SCHEMESTATION operating system concept. Domain simulators model roughly "workstations" and the network simulator a virtual network between them. Usually one network simulator and multiple domain simulators are run. Both can be started e.g. from a shell. X11 is required in order to get console display. Domain simulators can be run without console displays, though.

The domains are persistent in the sense that the execution of a domain simulator can be terminated and later revived from a core file generated by the simulator.

The domain simulators run agents, which are asynchronously communicating concurrent processes. New agents are incorporated into the simulation by first compiling agent source code with the SCHEMESTATION cross-compiler---which is a part of the distribution---and then injecting the resulting byte code objects into the SCHEMESTATION domain via object servers. Object servers are like file servers in traditional operating systems.

To help with writing agents, there exist a SCHEMESTATION standard [Scheme] library, containing useful code that can be incorporated into one's own agent.

External programs can be made to communicate with the SCHEMESTATION domains via external agent interface. The external agent interface is implemented in a library which can be linked against applications that are planned to interoperate with the simulator.

The hardware requirements for the simulator are quite minimal, but in order to gain reasonable efficiency a fast CPU is required with at least 32 Mb memory.

The SCHEMESTATION simulator is distributed in source code. In order to build the executables, GNU Make and GNU C compiler are required. In addition, a Scheme interpreter is required to make the cross-compiler work. The recommended interpreter to be used is Matthias Blume's VSCM.

There is a bug report template in WWW that can be used to report bugs and shortcomings found from the system. Active support is not necessarily provided.

The system can be used for non-commercial purposes freely. Rights to the system are owned by the developers. No warranty, implicit or explicit, is given.

2 Preface

THE LANGUAGE ONE SPEAKS is an integral part of the speaker's identity. The limitations and shortcomings as well as the capabilities and the potential of one's thinking are reflected in the words one uses. In the same way, the programming language one uses reflects and affects the level and properties of one's thinking as a computer technician.

A programmer is a person who wanders in the landscape of the Computer Science, exploring its limitless unknown beauties. If he has chosen to use a low-level language his view on the landscape is also earthly and low. It lacks an understanding of the wholeness and focuses on little details, just like a person walking in a forest sees only the trees nearby. However, if the programmer's choice has been to use a high-level language, he sees the landscape from far above. The little details have become more or less unimportant and the features of the landscape form one, uniform and coherent picture. There he flies! The high-level programming language blows as the wind under his wings, rising him to the sky to look the world with an understanding that can never be achieved from the surface.

The future of the Computer Science is on the high; thus operating systems must also be adapted to be high-level rather than low-level. The SCHEMESTATION project is one approach to this direction. We are trying to experiment with an operating system that is programmed with a high-level language from the bottom to the top. At the same time, SCHEMESTATION is an advanced totally distributed operating system that shows its full power in mobile open networks.

I welcome you to fly along us on this journey; I hope you will enjoy your trip.


Antti Huima
principal designer

3 Introduction

3.1 The subject of this manual

This manual documents the SCHEMESTATION operating system simulator for UNIXtm'es, version 1.0.0 released in Spring 1998.

The manual is now divided in three sub-documents: users' manual, administrators' manual and developers' manual.

3.2 Welcome

You have made an excellent choice in deciding to familiarize yourself with the emerging technologies of the next millennium. We thank you for getting your hands on the SCHEMESTATION operating system and wish you many exciting moments with it.

3.3 Intended Audience, assumed knowledge

This SCHEMESTATION operating system simulator is the product of a software project in Helsinki University of Technology. The purpose of the project has been mainly to gain insight in the possibilities and pitfalls of agent oriented programming as well as investigating new operating system technologies.

In other words, the resulting software is not a highly customed commercial product with a polished interface, but a test bed for enthutiastic researchers and agent programmers.

Therefore, this manual expects a certain level of knowledge on operating system issues, scheme language, but also on unix programming. The intention has been to categorialize the document so that those aiming for merely write and test few scheme agents can quickly find the adequate information. On the otherhand we aim to provide insight in the core of the system, so that those willing to extend their research in to the system itself will find the needed information.

For agent programming, we expect some experience on scheme programming and perhaps on unix usage also. A first or second year computer science student should be familiar enough with these subjects.

For administrating (that is, installing and configurating the system) one should have some experience on unix style make utility, unix usage and perhaps also on C programming.

The system itself is written in both C and scheme. Adequate experience of programming in those languages is a must, if you plan to be a kernel hacker. We have tried to document every interface and code module as carefully as possible, but a person with no C experience will most propably find those specification incomprehensible.

3.4 Intellectual Rights; No Warranty

In this paragraph the word "product" refers to the implementation and documentation of the system resulting from the project plus the intellectual property linked with it, including the abstract design of the system. Full rights to the product are owned equally by all the individual project members, and the Laboratory of Information Processing Science in Helsinki University of Technology with the following clarifications:

  1. These rights do not include any commercial usage of the project; commercial rights will be discussed later elsewhere.
  2. The same terms about rights apply to all direct derivatives of the product. These rights are not exclusive. Full rights to a derivative can be owned by someone else ALSO. Note, that the commercial usage of any derivative is not discussed here.
  3. Concerning the original product or any direct derivatives of it, an announcement of these rights and terms must be present in
    1. source code,
    2. documentation and
    3. applications.
  4. A direct derivative of the product is a computer application or any amount of computer code that shares code with the product, except for source code that was incorporated into the product from outside the project and is available outside the product.
  5. Any party mentioned here is allowed to surrender his or her rights to the product or any of its direct derivatives if he or she wishes so.
  6. Any party mentioning here owning full rights to the product or a direct derivate of it is allowed to transfer these full rights to a third party. Note, however, that commercial usage is not discussed here.
  7. The full rights to the product include but are not limited to the following rights:
    1. right to use the product for any non-commercial usage
    2. right to create direct or other derivatives of the product
    3. right to distribute it freely and grant full rights to it to third parties
  8. Concerning any scientific publications that might concern the product or the project, the following applies:
    1. If a publication is about the product itself and its main topic is describing the design of the product or any other aspect of it, then the publication may be published, submitted to a conference etc. only if the original project members agree.
    2. Publishing other kinds of publications linked to the product is not restricted.

The issue of using SCHEMESTATION source code for extraneous projects should be discussed with the authors of the SCHEMESTATION. Please email to schemestation@schemestation.cs.hut.fi.

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

3.5 Background

Scheme the programming language is a LISP-derivative that has wide use as a educational and scientific programming language. It is a "semi-functional" language in the sense that it supports both purely functional and imperative programming. It was the first programming language to work as a full interpreter of the famous lambda calculus.

Agent-based operating systems are a complete counterpart for file-oriented operating systems (such as Plan 9). In a fully agent-based operating system a process-like entity called agent can model everything: all database services, kernel services, computational services etc. are --- or can be viewed as --- agents.

The aim of the project has been to implement a simulation of an agent-based operating system called SCHEMESTATION that uses Scheme as its primary systems and applications programming language. At the moment, there is no real implentation --- neither simulation nor native --- of SCHEMESTATION. The operating system is however specified in Operating system specification.

3.6 SCHEMESTATION operating system

SCHEMESTATION operating system is a agent-oriented system. This means that the basic unit of exeution is an agent rather than thread process or anything else. An instance of SCHEMESTATION is called a domain. Domain includes a kernel, virtual machine that executes byte code

Agents can migrate during their execution, which yields the ability to do dynamic run-time load-balancing.

The agents use a connetionless messaging protocol to communicate which each other. The messaging is transparently so, that a sending agent does not have to now where its the receiver resides. The communication is cryptographically secured.

Agents in SCHEMESTATION are programmed in scheme. There is a compiler that compiles the scheme code to a byte-code representation that the SCHEMESTATION virtual machine can execute. This maintains the architecture independence even duirng agent migration. To make agent programming easier, a standard scheme library is provided that implements most of the operating system and hardware related tasks the agent programmer might need to do.

After compiling (and assembling) the agents can be ran using the SCHEMESTATION terminal that is the (default) user interface to all functions of the Schemestation. The SCHEMESTATION does not provide a filesystem in the conventional sense, instead, it provides a object server that can be used to save eg. agents and their sources. The scheme is quite similar to that of Amoeba's.

3.7 The SCHEMESTATION Team and Technical Support

The SCHEMESTATION development team consists of four persons. The scheme language part of the system is mainly authored by Antti Huima, with a little help from Jari Kirma. All four have been authoring the C code.

Antti Huima
Email: antti@schemestation.cs.hut.fi
WWW: http://www.niksula.cs.hut.fi/~ahuima/
Responsible for: Compiler, assembler, integration, station implementation, terminal, standard library, agents.

Petteri Holländer
Email: pete@schemestation.cs.hut.fi
Tel. +358-50-529 4570
WWW: http://www.iki.fi/pete/

Jari Kirma
Email: jkirma@schemestation.cs.hut.fi
Tel. +358-9-468 2524
WWW: http://vulcan.tky.hut.fi/kirma/
Responsible for: Heap.

Ville Herva
Email: vherva@schemestation.cs.hut.fi
Tel. +358-50-51 64 500
WWW: http://iki.fi/v/
Responsible for: Networking simulation, message dispatching, address system, external agent interface.

During the project, the development was guided by Ph.D. Mikko Tiusanen, Mikko.Tiusanen@hut.fi. The software was produced for the Laboratory of Information Processing Science in Helsinki University of Technology. The representative of the laboratory consering this project is Prof. Heikki Saikkonen hsa@cs.hut.fi.

Inquiries concerning the SSDOC product should be sent to the email address schemestation@schemestation.cs.hut.fi. Bugs can be reported interactively via WWW.

3.8 References

Terminology relevant to the system is specified in Terminology specifications.

The SCHEMESTATION operating system concept is described in Operating system specification.

4 The manuals

The manual is divided in three parts: