summaryrefslogtreecommitdiff
path: root/overview.rst
blob: 4faee52a22c3ba8939527c33768980e15f8d83c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Overview
--------

EUMEL is different from conventional operating systems in a lot of ways. Some
of them were neccessary due to hardware constraints at the time and others
were deliberatly designed this way. EUMEL’s key features are:

Hardware independence
    The OS has *two* hardware abstraction layers, significantly improving its
    portability_. The first one, Software/Hardware (SHard), provides functions
    for a concrete machine, such as the Olivetti M20, Amiga ST or IBM PC
    AT/XT. EUMEL0 (Urlader), the second layer, implements a virtual machine on
    top of a specific processor architecture like Z80 or x86. Programs are
    compiled into bytecode for the virtual EUMEL0 machine, making them portable
    across different machines.
Single-level store
    Every object (dataspace) lives in a single, virtual address space. A
    dataspace is divided into pages, which can reside in memory or on disk.
    The operating system transparently moves (swaps) pages to disk if they have
    not been in use lately and reads them back as soon as a process needs the
    data.  Every file and every task is a dataspace.
Copy on write
    Pages are shareable and can be copied without a cost. EUMEL automatically
    unshares them if changes are made to one of the copies.
Persistence
    Since everything resides in the single-level store the machine can powered
    off and back on again, with all tasks restarting execution from the last
    snapshot. These are created on request and every 15 minutes.
Time-sharing, multi-user and network-transparency
    A single machine running EUMEL is capable of serving multiple “thin
    clients” connected via serial lines. Additionally users can share files and
    start remote processes by linking multiple machines with *EUMEL-Netz*.
One-language concept
    *ELAN* is system implementation language, programming language, shell
    language and documentation language.

.. _portability: hardware_