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.
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.
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.
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.
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.
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:
The issue of using SCHEMESTATION source code for extraneous projects should be discussed with the authors of the SCHEMESTATION. Please email to firstname.lastname@example.org.
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
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
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.
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.
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.
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.
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 email@example.com.
Inquiries concerning the SSDOC product should be sent to the email address firstname.lastname@example.org. Bugs can be reported interactively via WWW.
Terminology relevant to the system is specified in Terminology specifications.
The SCHEMESTATION operating system concept is described in Operating system specification.
The manual is divided in three parts: