Review of Operating Systems
This page is under constant construction.
Please help me enrich it,
by sending annotations to existing pointers,
new pointers,
and the usual feedback.
Please tell me about any other interesting pointer you know,
that may relate somehow (anyhow)
to the Tunes project...
Updated October 9, 1999 by
Emmanuel Marty: Minor updates and fixes.
Contents
This index favors original and research operating systems.
In each category, systems are listed in alphabetical order.
Of course, do not forget languages
that are another side of computing systems.
Free OSes
Original Free OS Projects
-
2K (formerly known as SPINE) is
a distributed, reflective, component-based, adaptable operating system
being built by researchers at the Systems Software Research Group
from the University of Illinois at Urbana-Champaign
and the Systems and Communications Group
from the Universidad Carlos III - Madrid.
-
Aegis
(developed at MIT's Parallel and Distributed OSes group)
is an OS based upon the idea of an "ExoKernel"
(much like the NoKernel idea behind Tunes:
there is no more runtime kernel in the OS,
which yields up to 10000% performance gain).
Also see D. Engler's page, and the various
Exokernel and networking papers.
-
Andy Tanenbaum's
Amoeba,
the reference among distributed OSes,
is now free.
To take full advantage of its distributed programming model,
related programming language
Orca
has been codevelopped.
- The Cache kernel papers and actual implementations (in the
works): Freedows and
- Choices,
an OO OS in C++ (yuck).
- Jonathan S. Shapiro's
EROS:
Extremely Reliable OS
- Coyote from
Dublin Trinity College, an object-oriented, reflective operating system
supporting meta-object protocols, distribution, and runtime reconfiguration in
order to meet changes in non-functional requirements (ie.
dynamic customisation).
-
The Flux project
at university of Utah has been developing
an OS toolkit
(mirrored in Australia),
now release 0.97,
so anyone can make their own OS from bricks.
It is also developing its own Fluke microkernel on top.
-
The
Fox
project from CMU to write an OS using (an extension to)
the programming language SML.
-
Grasshopper,
the orthogonally persistent distributed OS from Australia
(mirror in UK;
also
here)
-
HOPE
at the Oregon Institute of Science and Technology, a set of
primitives on top of a virtual machine, for optimistic programming,
i.e. guessing the result of operations in order to increase
parallelism.
-
ITS
(Incompatible Timesharing System) was a famous operating system
written by hackers at MIT for the DEC PDP-6 and PDP-10 family
during the 1960's and 70's.
-
L3 and L4
by Jochen Liedtke at GMD
are microkernels to demonstrate how optimizing performance
requires OS kernels to be completely hardware-dependent,
and even CPU-version dependent in a same family of CPUs.
Due to copyright problems, authors are rewriting a clone of it
under GNU GPL: Fiasco.
L4/MIPS (+L4 manual).
-
Jecel's
Merlin
project of a SELF-based OS
(and here
a paper about it).
-
Mungi is the OS project that originally proposed
a one global distributed shared memory
(starting with 64-bit virtual address space).
- NOW (at Berkeley) is
a operating system allowing inexpensive workstations to work in
cluster, harnessing their resources to match a large computer. It
uses an high-speed, high-bandwidth, switched network, in order to
dispatch the load over the physical hardware.
-
Off
is a distributed microkernel that transparently
migrates light-weight processes ("shuttles") over the network,
communicating by distributed IPC ("Portals"),
in a one global distributed shared memory space.
By Francisco J. Ballesteros & Luis L. Fernandez
at University Carlos III of Madrid.
C/Web literate programming sources available.
Reminds of the Mungi project...
-
The Opal project,
yet another distributed single (wide) address space OS
with page-level protection,
implemented on top of Mach on Alphas.
- Pegasus
and Pegasus II
from the University of Cambridge, whose purpose is
to support applications requiring a constant quality of service.
- The PUMA
project from New Mexico, for distributed memory architectures.
- The SCOUT project, an operating system specifically aimed at
network appliances (webcams, ip routers..) from the University
of Arizona.
- The Sombrero project, an operating system, providing an
unique address to objects in a global address space, much like
Mungi.
- SPACE
from University of Santa Barbara, which implements protection as
multiple layers, rather than the classic kernel-user scheme. It allows
for running concurrent, different implementations of memory management
or threads scheduling, for instance, as they are implemented as
application code.
-
SPIN
OS from University of Washington, which allows applications to
migrate code in kernel space, implementing new functionality or
replacing default policies.
- The Sprite
distributed operating system from UCB (project terminated, but
still some useful information there).
-
Henry Massalin's
Synthesis kernel, the first of the modern OSes that dynamically
generated code at runtime. Although it was written in MC68000
assembler, it opened the path to projects like
Aegis and
Synthetix.
-
OGI's Synthetix
project of fine-grained incremental partial evaluation in OS kernels,
using a combination of highly isolated system components, and
dynamic code generation.
-
The irish Tigger
project is developing a framework for the construction of a family
of distributed object-support platforms.
-
TUNES,
the very project hosting this page,
encompasses an OS project, mind you,
even if it goes far beyond a mere conventional operating system.
-
VINO (at Harvard)
is an operating system built of reusable, replacable components
that can be organized by the end-user, even code running in
kernel mode. Their motto is that the kernel should provide
mechanisms, not policies, and let the end-user decide of what
policies to apply. A concept springing up in most new OS
projects and that we can only agree with.
Free Unix akins and likes
- The BSD family used to be the reference for Unix systems.
Since then, the standard has become POSIX,
and 4.4BSD has split into lots of diverging projects:
FreeBSD
(a successor of 386BSD) is mostly for the intel platform,
and is most up-to-date among BSDs regarding device drivers;
NetBSD
focuses on portability and networking
and supports tens of platforms;
OpenBSD
OpenBSD has split from NetBSD, and focuses on stability and security.
Lites is a BSD "singleserver"
over the Mach microkernel.
They all seem to have some binary compatibility with Linux,
at least on the i386 platform.
Here is a
comparison of FreeBSD and NetBSD
- GNUStep (european mirror
here)
is a project to implement a free clone of NeXTStep
(see FAQ).
- The HURD
is the OS from the GNU project,
also built on top of GNU Mach4
(alpha release here)
- Linux
is a free POSIX.1 compliant UNIX(tm) implementation
written by Linus Torvalds and lots of people on the Internet.
-
Though it was originally developed for 32 bit intel PCs,
it now also runs on
Alpha (64 bit!),
ARM,
Sparc,
Ultrasparc,
m68k [runs on
Atari and Amiga (also
here)
and even PalmPilot;
development underway for
Mac
(also here),
and for
NeXT Cube],
PowerMac
(including a version on top of the Mach microkernel
mklinux)
and other
PowerPC
(also here),
MIPS
(including some
SGI workstations),
HP-PA
(with mklinux), and perhaps more (?) with lots of other ports
in progress,
including
16-bit i8086
(aka ELKS, download here),
VAX,
etc.
-
Here are some canonical Linux WWW pages:
linux.org (slow),
linux.org.uk (fast, but in UK),
metalab.unc.edu,
kernelnotes.org,
redhat.com,
debian.org...
-
Documentation can be found from the
The Linux Documentation Project (LDP),
an effort to produce a series of books/articles/manuals
to document Linux.
(the LDP page also has many links to other Linux related sites).
Linux Manual pages WWW access can be found
here.
-
For us Kernel Hackers, here is the online
Kernel Hacker's Guide
-
If you seek help on Linux,
you should first check all the documentation above.
Also, individual packages have READMEs, FAQs,
and local documentation that you should check
(sometimes only available in the source distribution,
not in binary packages).
If you still don't succeed after carefully reading
the docs many times, you might ask for help
on one of the IRC networks:
OpenProjects
(channel #Linpeople),
Undernet (channel #Linux),
EFnet (channel #Linux),
DALnet (channel #Linux),
etc.
-
If you want to toy with both Linux and Open/Net/FreeBSD, a lot of
useful information is available in the
Linux+FreeBSD mini-HOWTO.
-
Finally, people who want to develop a graphics system
on their OS should definitely have a look at the
Linux project and standard to be,
GGI (the Generic Graphic Interface).
-
Linux is not just a fun OS.
it has lots applications in the so-called Real-World,
such as Linux Equipped Astronauts, rendering for the movie
Titanic,
or running mission-critical servers. Not even mentioning running
a growing number of
internet servers, and just as much in
large companies such as
Apple or
Novell.
-
Mach
is a free microkernel upon which many experimental OSes are built;
There exists "ports" of classical unices to Mach,
BSD (Lites)
and Linux (MkLinux),
consistently slower than their "monolithic" counterparts.
-
The original
CMU Mach
project is now ended with Mach3
(see
Published and Unpublished Mach Papers).
Some pretty interesting ones are available
here.
Two different groups are working
on two divergent further versions of it:
- The Open Software Foundation is officially developing
its version of (free) Mach,
MK4,
for use by its members' (commercial) OSes.
- Mach4 is now developed by GNU as the continued basis
for the HURD, its free microkernel-based OS.
-
The
Flexmach project itself tries to implement
objects above Mach in C++ (yuck)
according to the related
OMOS
model and implementation over plain unix.
(people at University of Utah have stopped maintaining
Mach4, as their terminated Flexmach,
and concentrate on their new
Flux project and Fluke microkernel)
- THix is a
deceased project of an unix implementation written from scratch for
the purpose of learning. The project hasn't been touched since 1996
but it boasts impressive functionality for a system developed
by a single person.
- Andy Valencia's
VSTa
fine QNX- and Plan9- inspired but free open-developed
microkernel-based OS; its
mailing list archive and its
distribution.
Free OS projects in early stages of development
Of course, I'd encourage you to join
Tunes if you are looking for a deep rethinking of an OS,
VSTa if you like custom microkernel-based message passing,
GNU HURD if you like the new wave for computer tradition,
Linux if you like the old traditional unixish approach.
Also, GGI might interest those who like display drivers
and tweaking.
OS-DeViLs seems to federate low-level PC OS hackers,
while LispOS gathers high-level language gurus.
But if none of these please you,
if you like doing things from almost scratch,
here are projects that might interest you (in alphabetical order):
- Alliance OS is a split from Freedows below. Its goal is
to implement a system based on isolated components, described with
the Corba IDL and communicating through a System ORB. This project is
currently very organized (I'd say, lots of bureaucracy) but
documentation and code are still sparse. Updated july 2nd with some
more code; most subteam websites are still empty though.
- J. Spencer Seidel's
Apostle Operating System
project, initiated early october 1999. This is a project for a new,
free operating system, but at this point they are still gathering
people and organizing themselves, so there is not much technical
information available, besides a small test kernel. Keep an eye on it though.
-
Alaric B. William's
ARGON
(has got a mailing list) are set out to write an operating system
which dynamically compiles high-level languages to machine code
as needed, and where all parts (ARGOT modules) are orthogonally
persistant, and communicate through a network-transparent messaging
protocol based on globally unique addresses, whether local to the system
or on the other side of the world.
- The Amiga Research OS project,
lead by Aaron Digulla
is rewriting a free software clone of AmigaOS from scratch
(however, current licensing status unclear -- beware!),
hoping to fix bugs and legal problems with the original OS,
and finally port it away
from the deceased (until further notice) Amiga hardware platform
to the i386 PC and other platforms (PPC, Alpha, whatever).
-
Brand Huntsman's
BRiX OS will be based on modular
functions that can be dynamically called by other functions. The
microkernel is being developed in assembler but the functions will be
written in a language native to BRiX. Its persistent object store,
automatically downloadable functions, and a new user interface will make
it very easy to use for both beginners and experts. From what I understand,
every function runs in a seperate thread. No sourcecode or useful binary
image have been released so far, though. Brand can be seen at times
on the OPN IRC network,
channel #tunes.
-
ChaOS, like
OpenBLT below, is a cleanroom implementation of an operating system
based on a microkernel (codenamed Storm), announced over the summer; there
is both code and documentation available on the site, as well as a
downloadable and bootable demo floppy that will let you try your hand at it
in no time. Like OpenBLT, the code seems pretty clean and nice so far, and
news/code updates are done regularily. Definitely a project to follow.
-
Samuel A. Falvo II's
Dolphin is an
operating system for PC and compatibles; the project has been going
for some time and has undergone several conceptual changes. Samuel
has adopted a virtual machine scheme, where only a VM runs in ring 0
and all the rest of the system is implemented as ring 3 shared
libraries (much like AmigaOS). These libraries use VM calls in order
to access the underlying hardware. There is actual code floating
around for this project, such as a bootsector
that you can tune to boot your own protected mode OS.
There seems to be actual progress this summer.
Check all of that out from their homepage.
-
Daniel Vila's
EROS (unrelated
to the extremely reliable OS), a microkernel
written in C++ and x86 assembler, and its Fenix subsystem currently
in planning stage.
- Reece Sellin's
Freedows Project for an OS that would be binary-compatible
with multiple existing OSes including Windows. Based on
the stanford "cache kernel" principle, it aims at providing
application kernels that in turn provide functionality of
Windows, Linux, MacOS or other systems, to unsuspecting applications
written for these systems, all at the same time. Most developers
however split to implement these goals in the
Alliance OS project. The site has undergone
a complete redesign, and we're announced in veiled words that
the entire team has been replaced and the system is being redesigned.
No actual code at this point, but the project is still alive.
-
Fabricio Rocha's
Geex! operating system,
where the philosophy is to make an OS with a very small footprint,
working on old computers, and completely free. The project is
still in the process of starting, and no code has been written yet.
However, the site has a lot of interesting documentation on OSes in
general. Documentation on Geex! itself is still sparse and sketchy, but
there are beginnings of several proposals.
- The JOS project wants to
create a free, open operating system based on the
Java(tm) technology, ie. a free clone of JavaOS(tm).
They have a mailing list you can subscribe to. The project looks
like it's starting to take off. Follow closely !
- Redhog's
KangaroOS, an operating system implementing multitasking
by providing a virtual machine to each process; processes can
also have subprocesses that they can schedule at their
liking. There is a lot of documentation and some sourcecode
available, currently completely in assembler, and building
under DOS (scroll down the left frame to get to the OS
pages proper).
-
Knewcleus
is a microkernel-based OS that aims for POSIX compliance; while
open sourced, the people behind it intend to make it a commercial
venture and release a packaged version that will include
additional things not present in the opensource version.
There is documentation on the site and code can be downloaded
via CVS. Work has just started on adding real-time capabilities
to the system.
- KOS is
a small project of developing an operating system being
worked on by a few French people. Like
LittleOS, it seems to be a nice
little project to work on if you're interested in
operating systems and want to hit the metal, but don't
know where to start. Progress seems to be very slow this
summer; hope it picks up speed again in the fall. Note
that the site has some pretty interesting OS documentation
as well.
- LispOS
has just appeared as a project to revive the still unequalled
systems that ran on Lisp Machines of the past,
this time making it free and running on standard/cheap hardware,
instead of proprietary and requiring non-standard/expensive hardware.
Relevant pages at
cathcart.sysc.pdx.edu,
[MIA] neosoft.com, and
Joe Marshall's
former www.eval-apply.com
Those interested in the discussions may read the
archives
of the mailing-lists, or subscribe to them (no more).
lispos,
and
lispvm.
-
LittleOS is a small
operating system experiment being developed by a group of individuals.
It hadn't been updated in some time and was thought to be dead, but
a 0.3.0 release came out recently. It has no big pretentions whatsoever
and is just meant to experiment with OS techniques and programming in group.
-
Julian R. Hall's
Moscow is about
implementing an operating system as libraries of reusable and
replacable objects. Julian is currently developing tools that will
later help him realize his goal (such as his
NetWide assembler (nasm),
so no OS code has been written yet, although design documents have
been updated.
-
Nitros-9
is basically a reconstruction of OS-9 for the 6809 Tandy CoCo3,
but refined for the Hitachi 6309 compatible CPU.
Development group is pretty small,
'cause the hardware is pretty rare these days,
but it is a fascinatingly loyal bunch of dedicated OS hackers.
-
Brice Rey's's
NTDIOS is a working
32-bit, multitasking, operating system for x86-based computers, running in
protected mode. Progress is constant, there is a bunch of code and
a lot of documentation available. However, note that the entire site
is in French :) as are all developers.
-
Brian J. Swetland's
OpenBLT cleanroom
implementation of a microkernel. Conventional implementation of
processes and threads, but the codebase was written from
scratch and works to some extent. A nice project to join if
you want to help build an OS that already went beyond the
bootloader stage. The system is updated on a regular basis,
seems to have gathered a few more developers and development
seems nicely organised.
-
"Joker" Josh MacDonald's
OSDEV
- OS-DeViLs project (with an hardware independence page
here),
is a federation of people hacking new OSes,
so they can debate ideas,
exchange experiences, and share code.
-
Balazs Miklos's
Phantom OS is a project for
an operating system for x86 PCs, based on a microkernel, and released
under the GNU General Public License. Currently the kernel is being
developed, but the plan is to make a full OS around it as time passes.
There is sparse documentation but also some actual code to download.
- Prool's Proolix is yet another Unix clone project
for the old 8086 PCs, from former USSR.
-
Raven (a new page soon
to appear here) is another
attempt at making an OS for x86 PCs from scratch. The project is
still in the bootblock phase and documentation is still at
wish-list stage, so I can't report much on the design goals of
the OS; but the more systems around, the better.
- Tom Novelli's
retro
is actually a prototype low-level infrastructure for
TUNES,
written in x86 NASMbly, and growing a FORTH environment.
- Frank Barrus'
ShagOS
is a (running) OO system based on a message passing kernel.
The OS itself hasn't received work in a while, however, this
site is still regularily updated, and it features several
very nice tools, such as SOLO (a very advanced bootloader,
that includes debugging, environment vars and filesystem
support, and reminds me of Sun computer PROMs), and DECO
(a "dynamic" C++ to C++ compiler).
-
Brian Klock's
ShawnOS is a small
system, written in 3 months entirely in assembler, that is functional
enough to run programs. It was written originally as a college exercise
but the author kept working on it.
-
SkyOS is yet another new operating
system for x86 PCs. Its design is pretty standard; monolithic kernel and
growing with a mushroom-like development, features and code being added as
needed without much planning. However, it boasts impressive
functionality (IMHO) for a project written from scratch: not only it
runs programs, features a GUI and all common drivers for pc hardware,
but as well a TCP/IP stack and other goodies. Even if there isn't
much thought put into design, the amount of work done deserves respect.
A nice project to join if you want to work with a large base of
already working code and a functional system.
-
SwarmOS is a pretty
standard, kernel based OS, but that actually boots and works to some
extent. There isn't much documentation available on the site (besides
a message board) but all sourcecode can be downloaded, and there are
docs in the archive.
-
Michael Gerhards'
UniqueOS plans to make
an OS based on no fixed data structures, using a technique
called tag items, borrowed from AmigaOS. More information
and documentation can be found on the site. A few sources
can be downloaded.
-
Jascha Wetzel's
XOS aims at being an
object-oriented, distributed, preemptively multitasked/threaded,
message-passing based system. While this would sound like pretty
standard marketroid talk, the site contains very interesting,
detailed and clear documentation about what the author has in
mind, an object-oriented microkernel where every part of the
system does one thing and does it well, without any of the other
parts knowing the details; a definite plus for scalability and
future expansion. The author also cares to define the concepts
he uses, so have a look at it even if you don't do C++ in your
sleep. The actual implementation hasn't started yet, but definitely
a spot to watch.
Apparently dead OS projects
The following OS projects seem to be dead, as in not having been
upgraded for years. However, they are still worth mentioning, as
learning tools, and also in the hope that maybe someone will want
to pick up the work where it stopped.
-
Kinfira's
Antares OS for x86 PCs, that seems pretty much dependent
on x86. Intended to become a microkernel type of design;
left dead at function loader and draft filesystem stage.
-
EOS
(ask Cleo Saulnier) was an operating
system specially designed to run games under. The project looks
like it has been abandoned. If you're interested in such a project,
probably the best would be to mail Cleo and see if you can profit
from what has already been done.
- JeniOS is
a project that started recently and then didn't give any updates.
It aimed to develop an operating system with a radically new interface
(a la Kai Power Tools) on top of the CMU's Mach
microkernel. They seemed to believe that Windows NT is based on Mach
as well though... Strange.
-
LOS was meant
to be another OS for gamers, like EOS. However, this
one booted and worked, and there were a few games for it (like an
arkanoid clone).
- Frank Kudermann's
O/OS
introduces a new GUI concept, and aims at architecturing the operating
system around reusable, replacable components. Work on the system
seems to have stopped, though.
-
Joel Utting's
Platform OS wanted to achieve platform-independence through a
low-level virtual machine. The project seems to have died during
planning and specification stage.
-
Bart Sekura's
TINOS
aimed at making a small, multipurpose OS that could be used as a learning
tool for the author and anyone else that cared to use it. However it has
been last updated in march of 1998.
Educational OSes
These are instructional OSes developed and used in some Universities
for their OS courses. They are freely available, and have some docs, too.
In portable C, unless stated otherwise.
- Minix
is Andy Tanenbaum's famous unix-like OS for x86, m68K and sparc.
- NachOS
from Berkeley,
demonstrates the principles of the traditional unix-like model.
- Topsy
by George Fankhauser is a microkernel,
ported to the R3000 architectures
(for which emulators exist).
Popular Commercial OSes and their clones
Original contributions from Commercial systems
- AmigaOS
-
Sony CSL's
Aperios (formerly Apertos),
a Reflective OO OS
- Be's BeOS.
- GEOS
(originally developped by
Geoworks,
now taken over by
New Deal)
is some very fine OO OS for various kinds of computers (including PCs),
that comes with a GUI and various office applications.
One of its most notable aspects is that it isn't a resource pig:
it already provided a GUI to 8-bit computers (C64, C128, Apple ][),
and multitasks fine even on 8088 computers
(but takes advantage of intel 32-bit mode when available).
It has consequently been ported successfully to various
hand-held platforms.
- MacOS X server,
the next version of Apple's highly proprietary system,
will not be based on the Copland development project, nor on
a cross with NeXTStep called Rhapsody, but is designed as the
friendly MacOS graphical layer over 4.4BSD on
top of the Mach microkernel. It will apparently
feature a way of running current MacOS software.
Here
is a good page about finding real OS software for MacIntoshes.
Conversely, ARDI
is selling a MacOS emulator for PCs
(more or less System 6/7 compatible):
Executor. You can also
find a good, free one for BeOS
and LinuxPPC called
SheepShaver.
-
Milan the
operating system. So this is what happened to the Atari ST
and its TOS; bought by Milan computer GmbH, who produced new
versions of the TOS: version 4.5, and a new, multitasking Milan
MultiOS 1.2.
- Multics
(also a mirror in UK)
is the "great" OS (written in PL/1)
whose design began in the late 60's,
that meant to become the be-all-end-all of OS technology
by having just every (un)imaginable feature,
and that was supplanted by Unix,
despite the fact that Multics was much better (?) designed,
because Unix' simple and stubborn design was much more adapted
to the very resource-poor architectures of the time.
- Apple's Newton OS was interesting.
However, Apple not only discontinued production
but also removed all links and documentation.
Former customers and developers will appreciate.
Dylan programmers will be rung a bell.
- RISC-OS
(see newsgroups comp.sys.acorn.*),
(a french mailing list
here
-- subscribe to here),
is the nifty OS that runs on
Acorn's ARM-based RISC PC.
Remember how they were the first to introduce inexpensive RISC
technology into consumer electronics
to compete with the usual bloated designs?
See also their
Thumb technology.
- Tao OS
(now called Elate)
is the only OS that currently can distribute code on heterogeneous
underlying networks
(here their internet contact,
and an old
introduction
to Tao OS).
Was renamed Tao OS from TAOS because of legal problems.
- The Taligent company
is the result of some counter-nature cross between Apple and IBM ;-)
it worked on a brand new operating system,
the CommonPoint application system,
that attempted to change the basic programming paradigm,
and which has been released on top of AIX in summer '95.
To know more about it, you can browse the first two chapters of
the book Inside Taligent Technology by
Sean Cotter.
All in all, it looks like yet another failure due to C++
introducing unmanageable complexity throughout the system.
Operating system for embedded devices
As embedded systems (PDAs, cellphones, point-of-sale devices,
VCRs, industrial robot control, or even your toaster)
become more complex hardware-wise with every generation,
and more features are put into them by the day,
applications they run require more and more
to run on actual operating system code
in order to keep the development time reasonable.
The good:
- eCos from Cygnus
Solutions, an operating system runtime compatible with the japanese norm
µITron, with complete source code available, and FREE.
- Many other free software embedded systems
are also available at
Cygnus' ftp site or on their
sourcecode page.
The ugly:
-
Chorus
is a proprietary microkernel rival of Mach, and a RTOS
(now acquired by Sun Microsystems) for telecommunication
devices (cellphones, etc.) and network appliances (webphones, set
top boxes..). See some
slides about it, and a
FAQ) is available here. There also are tech reports
here.
- Nexus'
coniX
small romable embedded operating system for ARM processors.
- Caldera Thin Clients' DR-DOS (OpenDOS) is
now being sold as a solution for embedded systems. Indeed, with a
full-featured web browser fitting in 4 MB of memory, this is less
of a bloat than WinCE.
- Sun's
JavaOS (with a more technical
page at
JavaSoft) is a standalone
virtual machine not running on top of any other OS; mainly targetted
at embedded systems.
- Microware's OS-9 real-time OS,
widely used, and still in good shape after so many years.
- QNX
is a an effective, scalable, POSIX emulation capable,
message passing, micro-kernel based, real-time, distributable, OS
that has proven successful in this embedded market
and/or on x86 systems.
See their QNX papers.
- Not surprisingly, Michael Podanoffsky's RxDOS
is also being marketed as a solution for embedded systems now.
- Wind River's
VxWorks
real-time operating system, micro-kernel based, POSIX and ANSI C compliant.
- Microsoft's attempts at fitting a large unstable desktop-PC
operating system, with a hammer, into the stringent requirements
of embedded systems are here:
Windows CE
and their latest monster,
Windows NT Embedded 4.0.
Commercial Unices and beyond
Lots of commercial vendors base their system
on the Unix family of design, as standardized in POSIX.
The existence of free Unix systems
like the great Linux
forces them to find justifications for charging so much
for systems that were so bad;
hence, recently, significant OS research has been done
by commercial companies, even though the benefit
for users and developers is not obvious,
as "protected" research is by definition not beneficial to people.
- Inferno
is a networked OS
from Bell labs and its limbo language,
successor of Plan9,
the system that reinvented scoping
for coarse-grained objects
(my, after they ignored it for 25 years,
which resulted in the whole world having
systems deprived of it,
the guys from Bell-labs rediscover it. All praise Hell-lahs!)
- MachTen
is a commercial version of BSD4.4 using Mach on 680x0 and PPC
MacIntoshes.
There are free alternatives to it,
like MacBSD.
- Plan9 OS, or what Unix should have been
(by AT&T from where Unix came).
It's a commercial OS, but freely available for academic use.
See its
FAQ.
It got everything right as for proposing a uniform
system interface
(the dynamic, per-process name->channel "filesystem" thing)
but is still wrong by using a low-level programming language
with coarse-grained system abstractions.
(another page
here)
See its successor, Inferno.
- Solaris-MC:
Sun is working in making a distributed OS out of Unix.
- Sun's
Spring
System (hmm, dead link at the moment).
DOS-class systems and extensions
Because DOS has been such a phenomenon in OS history,
that it ought to have a place here,
despite its absolute nullity
(the only service of it that is used rather than worked around
is the filesystem, which is the worst piece of junk ever implemented).
- A well-known company in Seattle has produced and mismaintained
the most crappy OS ever, known as DOS.
The dreaded name need not be mentioned here.
-
The
FreeDOS
project for a free DOS clone,
based on Pat Villani's
DOS-C kernel.
It currently works,
though not compatible with all known DOS extensions
and undocumented features (that some apps require), but they
are getting there. The project is currently under very active
development.
- Of course, there exist lots of DOS emulators
for lots of non-DOS systems.
For instance,
Linux has
quite a good free
DOS emulator
running on i386 architectures (also runs under *BSD).
But it is actually a hardware emulator,
and requires that you use an actual DOS software
(e.g. OpenDOS or FreeDOS) to run on top of the virtualized hardware.
Newer versions of DOSEMU will be released as a bundle with FreeDOS.
- Caldera
has released
DR-DOS 7.03
an free-for-non-commercial-use version of DOS
(was once released as OpenDOS,
but Caldera reverted to the historical name).
It's basically the very stable and complete
implementation of DOS by Digital Research,
with some networking and multitasking capability, ROMability, etc.
Sources for the kernel have been released,
but the free software community that gathered around that event
(FAQ
here and
there)
felt betrayed because Caldera did not make the system free of rights,
and did not release all the sources after all.
Go FreeDOS instead!
Caldera also sue the above-mentionned Seattle-based company
for unfair competition practice
in forcing people and vendors not to buy from competitors,
at the time DR-DOS was technologically way ahead.
- IBM's OS/2 is an OS that's halfway between DOS and Unix
(some say the best of both world, others say the worst).
It can emulate most DOS programs seamlessly,
has a nice GUI (users say),
but was never marketed well,
and is now abandoned by even IBM!
Good development information is available on the
Team OS/2 and Seattle OS/2 users group site.
FTP sites for OS/2 software:
Hobbes,
FTP-OS/2
- Other commercial DOS clones include:
- PTS-DOS is
a (commercial) DOS clone from Russia (fast mirror in
USA).
- Mike Podanovsky's
RxDOS is
a (commercial) DOS clone
as described and available in the author's book "Dissecting DOS".
- TSX-32 is
a 32-bit (commercial) OS for PCs
with small memory requirements that can also emulate DOS
(and run Windows ?).
- I've also been told about
SuperDOS,
ROM-DOS,
Real32,
Multiuser DOS.
Losedoze-class systems
The same company consistently produces the worst wimpy OS,
hence this section...
- The The Cygnus GNU-Win32 library
allows you to simulate a GNU system on top of Win32,
thanks to the cygwin32.dll
- Here are links to the unnamed horrors:
*NT Workstation and
*NT Server;
*95.
- WINE free WINdows Emulator for Unices
(also here).
- Jason Filby's
ReactOS project, aiming to produce a free Windows NT 4.0
clone distributed under the GPL license. The developers of
the project keep a low profile, however they are making big
strides. ReactOS is now able to boot and start simple
win32 console-based applications. Best luck to them for the
rest of the immense work.
- Note that there also exist commercial clones,
among which the Sun WABI that runs 16-bit Windows apps
(soon 32-bit apps too, they say)
on your X/Unix workstation.
Also exists for Linux, as commercialized by
Caldera.
OS Related Pointers
- Indices about OSes and related subjects:
- The FAQ
from the
comp.os.research
newsgroup;
also its
archive;
it is a good FAQ,
and anyone interested in OS implementation should have read it.
- 500mhz.net's
operating systems index, sorted by date of discovery (not
updated in a while).
- Brad Appleton's
links
to operating systems news sites and development resources.
- Sven Paas'
comprehensive
german page (in English).
Now moving here ?
- Patrick Bridges'
arizonian page
- Christopher Browne's
Novel OS work, featuring a detailed description of
several operating system projects.
- Vinny Cahill's
[MIA] irish page
- Hyogun Lee's own
OS page.
- Kang Sung's OS page in
korea.
- OGI's
oregonian page
- Nemo's
OSes links
- Embedded and Real-Time OSes.
- Patrick Gunn's
OS page
and webring.
- Seoul national university OS labs
operating systems links
- SIGOPS Create your own OS tutorial, describing the
basic steps involved in writing an operating system,
if you don't know where to start.
- Yahoo's
page about Operating Systems
- Gustavo Zamboni's
computer architectures and OSs on the web, a very comprehensive
list of links, sorted by the platform they relate to. No description
is made of what you will find in any of them (besides the site name),
but the list is very large and interesting.
- AltOS, "practical alternatives
to microsoft operating systems". A guide of all 'alternative'
systems like MacOS, Linux, BeOS, with screenshots and descriptions.
- OS/A65
is an insane (and functional project): a multitasking operating system
for old CBM computers like the C64, with TCP/IP and all. Not useful for
much, but still worth mentioning.
- OS doc at ftp.funet.fi
- Distributed Algorithms & Systems
- Process Migration & Load Balancing
- Checkpointing
- Here is some information on memory management issues and common policies:
- People working on Garbage Collection
have a LOT to teach us on memory management.
- A Virtual memory
tutorial, describing the motivations behind that common technique in
modern OS'es, its theory and potential problems, and actual
implementation issues.
- Proposal for a
Zone allocator
for Linux, and the homepage for Linux
memory management, by
Rik Van Riel. Quite informative about how kernel memory allocation works
in an OS used for real-life applications outside of the testing lab,
some problems with its current scheme and potential solutions.
- Dynamic memory allocation implementation in userspace under Linux/
glibc. Different policies than what the kernel does.
- The BGET memory
allocator; another set of policies for userspace memory management
and their implementation.
- FreeBSD's
newvm, the
new memory manager for that free BSD/Unix clone. Another
design and implementation for a real-world system, worth a look
for anyone developing a memory manager for their OS.
- Here are some research laboratories interested in
operating systems (send me more addresses):
- Here is some code that you can link into your OS
and relieve you from the hassles of blindly getting it to boot,
by providing you boot software and basic I/O:
-
Etherboot and its successor
NILO allow x86 PCs to boot an operating
system across the network; they include code and tools for producing
EPROMS that can be placed on the corresponding network card sockets so
that diskless PCs can download and start an operating system kernel, using
standard protocols (bootp, dhcp, tftp). They can boot systems like Linux
this way, but are easily adaptable to your own.
-
The Flux project's
OS toolkit.
The Flux OS kit is a complete modular infrastructure
that provides all the bricks needed to easily build an OS,
focusing on what interests you, and reusing components for the rest.
Newbies have reportedly transformed Unix programs into
standalone OSes in a matter of hours, using it.
- GRUB
the grand unified boot loader for PC and compatibles.
Originally written by
Erich Boleyn, it
has been taken over by the GNU
project, as Erich didn't have any more time for it, but GNU
depend on it for the HURD. The original (with documentation,
and also specification of the multiboot standard) could be
found here; the new
GNU GRUB is here
with even more impressive functionality.
As mentioned, GRUB is used by the HURD,
and it can also boot *BSD, Linux, DOS, and more.
It's got facilities for accessing the filesystem at boot time,
so you can safely write your loader as just another 32-bit process.
-
Dolphin bootsector is a bootsector primarily designed to
boot Dolphin, as the name says, but the author is nice enough to
have written documentation about how to boot your own OS project
from it; it handles all protected mode and paging setup for you;
the whole thing fits in 1 KB so it could be useful when you don't
have much room, like on a floppy.
- SOLO
the ShagOS boot loader,
includes useful x86 debugging features.
SOLO not only includes boot-time filesystem access,
but extended IO and debugging facilities;
might be great to hack your kernel.
Its license is now unrestricted,
so that you can now freely use it and distribute it with your code.
SOLO is definitely worth a look.
- Here are some sources of inspiration for people developping
a 32-bit OS on PC's:
- DOS extenders in the
x2ftp archive
(some interesting docs around, too, particularly the PCGPE)
- Free Embedded systems from
Cygnus FTP
- Some 32-bit FORTH systems from the
taygeta archive
- The
Guide to x86 bootstrapping describes the operations
performed by a PC compatible computer BIOS at boot time. Useful
for writing OS boot loaders, boot managers and such.
-
David Lindauer's software
-
FAQ about how to create bootable CD's for PC in the
"El torito" format. Useful when you'll have written an OS
large enough to fill a CD..
- os-dev page for the intel architecture
- 500mhz.net operating system development resources
- The Linux
Assembly-HOWTO
about better (more portable, maintainable, seamlessly integrated)
ways to include assembly code in your projects
(shameless plug for Fare).
- Gareth Owen's
Gaztek site, which contains
a lot of information on OS development and programming the PC
hardware, as well as a gimmick OS (GazOS) and even a small
webserver (ghttpd).
- and of course, the code for all the
free OSes above,
including Tunes.
- PC hardware information
Efficiency-aware OS implementors must have some idea
of how the underlying hardware behaves.
The cheapest bang/buck for a complete system currently is
available through old or new PC-compatible computers.
- OS programmers might be interested to get the CPU specs
directly from the chip builders:
Pentium,
Pentium II, and
Pentium III manuals,
as well as other documentation from
Intel,
Cyrix, and
AMD.
- Unofficial CPU information
Very extensive information (including undocumented features)
on the x86 family of processors is available at
Robert Collins' famous x86 site
and Christian Ludloff's sandpile.
- A great source of information, and a useful tool
for building and testing x86-based OSes is
Bochs
that fully emulates in software the 386+ PC hardware,
on any 32-bit+ machine. Able to boot Linux, FreeBSD, Win95,
Roadrunner and many other operating systems.
- Hardware and low-level programming information on common PC motherboard
components is available from
Craig Peacock's
Interfacing the
PC series : parallel port (
standard,
enhanced),
serial UARTs,
keyboard, and the
Programmable Interrupt Controller.
- There is an impressive amount of documentation on PC architecture
and associated peripherals (NICs, ATAPI/IDE, VGA, mouse, Flash
memory.. and also higher level like all network RFCs) at the
Ronis site.
A definite good starting point if you need documentation for writing your
own system.
- PC demo coders have also gathered information about the
underlying hardware, for instance on cdrom.com's demo coding
hardware pages,
or Cubic's very extensive
hardware archive.
- Other hardware
- Another widely used (albeit nowhere as much as x86) is the
PowerPC. Motorola provides programming documentation
in Adobe PDF format on their
tech support site., as well as documentation of their new
MMX-alike
AltiVec technology.
You can find some more programming info (also in PDF) at
this place.
- The CPU Info Center
covers all mainstream CPUs in the current competition.
- But MISC technology is not mainstream yet,
though very promising, and already the best
computation-horse-power/electric-power-consumption ratio.
See
Jeff Fox's page,
the
MISC mailing list
(now at
Elijah labs)
or iTV's page.
(the
SISC312
seems around the same design, too).
If you're interested in CPU design, Jeff Fox sells a
DYOP
(Do Your Own Processor) kit based on FPGA...
- The Chip Directory
talks about chips in general, CPU included,
but not exclusively
- For a historical point of view,
check this page about
Great Microprocessors of the Past and Present
- Other OS-related pages
More netsurfing
To Do on this page
- Write reviews of these OSes where missing.
- Talk about the open development model, as used in Linux.
- Send a note to all the OS pages that do not cite us.
- Differentiate full OSes from OS-less kernels,
putting two entries when the kernel could be used without the OS,
even though only one OS currently exists over it.
- Still have to add these...
-
Server OS Technical Comparison
- GLOBE
as well as to all pages pointed in various OS indexes...
- bibliographic pointers from the OS FAQ:
cstr,
German Bib,
Arizonian Bib,
bibliographies,
UFS 93.
- refdbms
- Find out more about
STAPLE,
a persistent lazy-functional-language based project
(FTP).
- FTP sites with OS-related stuff: in
France,
England,
Taiwan.
- FTP pointers from the OS FAQ:
Clouds,
Cronus,
Guide,
Horus,
Isis
(also here),
X kernel.
-
Rumor, a user-level version of Ficus, an optimistically
replicated file system (see
a summary of Ficus and a description of Rumor).
Unfortunately, Rumor is not yet being distributed.
- Books:
-
"OS Concepts and design" by Milan Milenkovic
- at AT&T, Mr Douglis' CCache paper (?)
- Brian Bershad or
Calton Pu
- Doug Jensen:
dynamic real-time distributed computer systems
- Neutrino: POSIX in 64K (see QNX)
- oslr2
is an idea of an OS much like IBM's VM/CMS:
provide people with a low-level
virtual hardware abstraction facility
that multitasks by spawning itself.
- Aditya Bansod's
OSS and
OSS2
are operating system simulators for Windows
that implement their own OS ontop,
and provide abstraction for local processes.
- Dave Hudson's
Artemis,
and now,
Constellation
-
Nicklaus Wirth's
Oberon
is not only a language, but also an OS...
- DVM
- Alto
- Trusted Information Systems offers information on
Trusted Mach, a B3 certified Mach, and Triad, an experimental
distributed, real-time, trusted operating system based on Trusted Mach.
- The Open Group is concerned with security
in the context of its DCE
- the MK++ kernel
Another project aiming at Mach compatibility and security is DTOS
- application of formal methods towards the MK++ microkernel.
- Distributed Trusted OS
- RTOS form
- RCOS.java
- fide-95-121
- theos software
- OS Sucks-Rules-O-Meter
- Grail
- EssenceOS
Back to the
Review subproject.
$Id: OSes.phtml,v 1.34 1999/10/09 08:11:22 core Exp $