Speicherschutz-FAQ

$VER: Speicherschutz-FAQ 0.2 (24.09.1997)

!Legende

F: Was ist das Thema dieser FAQ?
F: In welchen Sprachen liegt diese FAQ vor?
!F: Wo kann man die neueste Version dieser FAQ finden?
F: Wohin kann man Kritik, Berichtigungen von Fehler, Ergänzungen zur FAQ
   schicken?
F: Was gibt es an Literatur zum Thema Speicherschutz?


Glossar

F: Was ist ein stabiles, was ist ein robuste Betriebssystem?


Speicherschutz allgemein

F: Was ist Speicherschutz?
F: Wie funktioniert Speicherschutz?
F: Wie können Programme trotz Speicherschutz miteinander kommunizieren?
F: Welche Nachteile hat Speicherschutz????
F: Macht Speicherschutz ein OS langsamer?
F: Auf welche Weise bremst Speicherschutz das OS aus?
F: Kann Speicherschutz die Fragmentierung des Speichers verhindern?
F: Benötigt man für Speicherschutz eine MMU?


Schutz vor Fehlern in Programmen

F: Gibt es fehlerfreie Programme?
F: Schützt Speicherschutz vor fehlerhafter Software?
F: Kann man mit Speicherschutz ein fehlerhaftes Programm lokalisieren?
F: Erhöht Speicherschutz die Anzahl der Programmabbrüche?
F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
F: Was passiert wenn ein Treiber fehlerhaft ist, abstürtzt?
F: Können die Speicherschutz-Funktionen eines OS in der Praxis fehlerfrei
   sein?


Für wen ist Speicherschutz wichtig?

F: Ist Speicherschutz für einzelne UserInnen wichtig?
F: Ist Speicherschutz für EntwicklerInnen wichtig?
F: Benötigt ein Multiuser-OS Speicherschutz?
F: Ist ein Multiuser-OS für Firmen wichtig?
F: Ist eine Multiuser-OS für den Heimbereich wichtig?
F: Benötigt der Amiga Speicherschutz, um Erfolg im Massenmarkt zu haben?


Speicherschutz im Amiga

F: Welche Eigenschaften könnte eine Speicherschutz Erweiterung fürs
   Amiga-OS enthalten?
F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS um Speicherschutz?
F: Was ist Shared-Memory?


Speicherschutz in anderen Betriebssystemen

F: Besitzt pOS Speicherschutz?
F: Wird das OS der A\Box Speicherschutz besitzen?
F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
F: Laufen 32-Bit Windows 95 Programmen robuster als 16-Bit?


Stabile Betriebssysteme

F: OS xyz hat Speicherschutz und läuft trotzdem nicht stabil?
F: Ist es möglich ein stabiles OS ohne Speicherschutz zu implementieren?
F: Ist das derzeitge Amiga OS 3.1 stabil?


Virtual Memory

!F: Was ist virtual Memory?


MMU

F: Was ist eine MMU?
F: Welche 680x0 Prozessoren haben eine MMU?

Dank an
History
-------------------------------------------------

!Legende

!      !: Seit der letzten öffentlichen Version neue oder
!         geänderte Zeile
!      <: Hier wurden Zeilen gelöscht
!   TODO: Kennzeichnet zu ergänzenden Bereich


F: Was ist das Thema dieser FAQ?
A: Thema dieser FAQ ist Speicherschutz(memory protection) bezogen
   auf die Hardware und Software(OS) des Amigas. Dabei versucht diese FAQ
   neutral möglichs alle Aspekte, Vor- und Nachteile, Meinungen sowie die
!  Probleme, die es bei der Erweiterung des Amiga-OS um Speicherschutz
   Funktionen gibt aufzuführen ohne jedoch einen Anspruch auf
   Vollständigkeit und Korrektheit der enthaltenen Informationen zu
   erheben.

F: In welchen Sprachen liegt diese FAQ vor?
A: Bisher nur in deutsch. Schön wären Übersetzungen der FAQ in andere
   Sprachen, wobei es sich anbietet dann zunächst die englische Version zu
   erweitern und diese dann in die anderen Sprache zu übertragen. Wer
   Lust hat diese FAQ zu übersetzen und die Übersetzung nach Möglichkeit
   zumindest für eine Weile zu pflegen kann sich an Sven Drieling
   wenden(Adresse in Wohin kann man Kritik, Berichtigungen[...]  schicken?).

!F: Wo kann man die neueste Version dieser FAQ finden?
!
!  WWW
!    http://olis.north.de/Speicherschutz-FAQ.html
!
!
!  Fido
!    Filename: "Speicherschutz-FAQ.lha" (ca. 11KB) - ASCII Latin-1
!    OL-MEDIC BBS (2:2426/2270.0)
!    +49 (4 41) 9 35 07 31  (analog 28.800)
!
!
!  Mailbox
!    Filename: "Speicherschutz-FAQ.lha" (ca. 11KB) - ASCII Latin-1
!    BLACK-ZONE BBS:
!      +49 (61 42)  4 62 78 (19.2)    +49 (61 42) 92 40 80 (64.0)
!      +49 (61 42)  4 39 30 (33.6)    +49 (61 42) 92 40 81 (64.0)
!      +49 (61 42) 92 60 75 (33.6)
!
!
!  E-Mail
!    Sven Drieling, indy@welcome.north.de


F: Wohin kann man Kritik, Berichtigungen von Fehler und Ergänzungen zur FAQ
   schicken?
A: Sven Drieling    E-Mail: indy@welcome.north.de
   Am Breithof 5    Fido  : 2:2426/2270.13
   27804 Berne      Tel.  : (0 44 06) 53 12

F: Was gibt es an Literatur zum Thema Speicherschutz?
A: Memory Protection for AmigaOS
   http://www.informatik.tu-muenchen.de/~stieber/AmigaOS-Speicherschutz
   Vorschlag für eine Erweiterung des Amiga-OS um Speicherschutz, die
   auf shared-memory mit Zugriffsprotokollen basiert.


Glossar

F: Was ist ein stabiles, was ist ein robuste Betriebssystem?

A: Ein stabiles Betriebssystem ist ein Betriebssytem, das selbst
   keine Fehler enthält und somit absturzfrei und korrekt läuft. Allerdings
   können fehlerhafte Programme das Betriebsystem oder parallel laufende
   Programme zum Absturz bringen oder andere Fehler erzeugen, es sei denn
   das Betriebssystem ist robust.

   Ein robustes Betriebssystem ist ein Betriebssystem, das nicht durch
   fehlerhafte Programme zum Absturz oder fehlerhaften Verhalten
   gebracht werden kann und auch parallel laufende Programme entsprechend
   voreinander schützt.


Speicherschutz allgemein

F: Was ist Speicherschutz?
A: Speicherschutz schützt Speicherbereiche vordem (un)gewollten Überschreiben
   und vor dem (un)gewollten auslesen durch ein Programm. Da ein Fehler
   eines Programms damit verbunden sein kann, Speicherbereiche anderer
   Programme zu schädigen und dies dann zu Fehlern und zum Abstürzen dieser
   Programme führen kann, obwohl die Programme eigentlich fehlerfrei sind,
   schützt Speicherschutz so andere Programme vor fehlerhaften Programmen
   und erhöht damit die Stabilität eines Systems.

F: Wie funktioniert Speicherschutz?
A: Speicherschutz weist jedem Programm einen eigenen geschützten
   Adreßraum ("Speicherbereich") zu und verhindert, daß fremde Programme auf
!  diesen Speicherbereich lesend oder schreibend zugreifen können. Dies
!  gilt nicht nur für von Anwender gestartete Programme, sondern auch das
!  OS erhält, bei konsequenter Anwendung des Speicherschutzes, einen eigenen
!  Adressraum und ist so vor den Anwenderprogrammen geschützt und getrennt.

   Problem ist dabei u.a., daß nun Mechanismen für eine möglichs schnelle
   Kommunikation zwischen im Multitasking laufenden Programmen geschaffen
   werden müssen. Dies kann durch z.B. kopieren von Nachrichten(relativ
   langsam), gemeinsam genutzten Speicherbereichen(wieder die Gefahr eines
!  gegenseitigen störens von Programmen) oder den nur lesenden Zugriff für
   ein Programm auf den Speicherbereich eines anderen Programm geschehen.

F: Wie können Programme trotz Speicherschutz miteinander kommunizieren?
A: - Shared memory
   - TCP/IP
   - Messagequeues
   - Semaphoren
   - Signale

F: Welche Nachteile hat Speicherschutz????
A: - Aufwendigere Kommunikation zwischen gleichzeitig laufenden Pogrammen.
   - Aufwendigeres durchreichen von Informationen zwischen der Hardwarebene,
     den verschiedenen Ebenen eines OS und den laufenden Anwenderprogrammen.
   - Eingeschränkte DMA
   - spezieller SuperVisor-Modus für alle OS-Aufrufe
     (da diese den Speicherschutz wieder durchbrechen können
      müssen, z.B. Linux-Systemcalls und Interrupt-Calls)
      (TODO: [Sven] Hatte ich AFAIK aus einem Posting von Andreas Kleinert
       gezogen, die letzten beiden Punkte sollten noch besser erklärt werden)

F: Macht Speicherschutz ein OS langsamer?
A: Zumindest wird ein OS mit Speicherschutz nicht schneller als ein OS ohne
   Speicherschutz sein.

   Für Speicherschutz sind sowohl vom Prozessor aus als auch vom OS
   zusätzliche Verwaltungsaufgaben zu erledigen - die Zeit kosten, wodurch
   in der Regel ein OS mit Speicherschutz gegenüber demselben OS ohne
   aktiven Speicherschutz langsamer sein wird, d.h. aber nicht, daß
   alle Betriebssystemen mit Speicherschutz allen anderen ohne
   Speicherschutz von der Geschwindigkeit her unterlegen sein müssen.

   Wieviel Zeit für die zusätzlichen Verwaltungsaufgaben nötig ist,
   ist abhängig vom Prozessor, dem Speichersystem und dem jeweiligen OS.
   Bei den heutigen CPUs dürfte sich der zeitliche Aufwand dazu im Grenzen
   halten und gegenüber der Zeit, die z.B. nach einer Zerstörung des
!  Dateisystems für ein aufspielen des BackUp benötigt wird, ist
!  dieser Rechenzeitverlust gering. Spürbar bemerkbar könnte er sich
!  jedoch z.B. bei Berechnungen von langen 3D-Animationen machen, sofern
   diese absturzfrei ablaufen.

F: Auf welche Weise bremst Speicherschutz das OS aus?
A: - Abfrage ob Speicherzugriff gültig, ungültig.
   - Verwaltung zusätzlicher Informationen bei der Reservierung von Speicher.
   - Rettung zusätzlicher Informationen beim Taskswitching.

F: Kann Speicherschutz die Fragmentierung des Speichers verhindern?
A: Nein, dies ist aber mit einer entsprechenden Virtual Memory
   Implementation möglich.

F: Benötigt man für Speicherschutz eine MMU?
A: Ja, ohne MMU ist Speicherschutz zwar theoretisch auch denkbar
   (Trace-Modus, Virtuelle Maschine) aber ohne MMU ist keine akzeptale
   Geschwindigkeit erzielbar.


Schutz vor Fehlern in Programmen

F: Gibt es fehlerfreie Programme?
A: Ja, in der Regel aber nur in der Theorie. In der Praxis besitzen
   fast alle Programme, die ein wenig komplexer sind, Fehler. Die
   Wahrscheinlichkeit, daß ein OS, eine Textverarbeitung oder ein anderes
   Programm fehlerfrei ist, ist verschwindend gering und ein solches
   Programm fehlerfrei zu machen dürfte die Kosten für ein solches Programm
   vervielfachen.

   Wenn man ein Programm aber lange benutzt weiß man, daß die von einen
   benutzen Funktionen stabil sind bzw. kennt die Funktionen, die nicht
   fehlerfrei arbeiten und vermeidet deren Gebrauch. In diesen Fall kann
   man davon ausgehen, daß ein Programm relativ stabil läuft und man daher
   auch keinen Speicherschutz braucht. Sobald man aber eine neue Version
   dieses Programm benutzt oder ganz neue Software einsetzt hat man dieses
   Wissen nicht mehr und muß es sich erst mit der Zeit wieder aneignen.

!  Wenn es um Fehlern in Programmen geht, darf man auch nicht vergessen, daß
   Compiler selbst komplexe Programme sind, die einen eigentlich
!  fehlerfreien Quellcode in einen fehlerhaften Programmcode übersetzen
   könnten und letzendlich ist auch die Hardware eine Quelle für Fehler.

F: Schützt Speicherschutz vor fehlerhafter Software?
A: Nein, es schützt nur davor, daß ein Fehler in einen Programm nicht
   dazu führt, daß Daten oder Programmcode eines anderen Programms
   zerstört werden. Ein einzelnes Programm kann weiterhin seine eigenen
!  Daten zerstören und andere Fehler aufweisen, die dann aber theoretisch
   nur dieses Programm betreffen.

F: Kann man mit Speicherschutz ein fehlerhaftes Programm lokalisieren?
A: Jein, abhängig von der Implementation ist es möglich, daß das OS
   das Programm anzeigt, daß den Fehler ausgelöst hat allerdings muß
   dies nicht das fehlerhafte Programm sein. Beispiel:
   - Programm X fordert Speicherblock vom OS an
   - OS gibt falschen Zeiger zurück
   - Programm X schreibt mittels dieses falschen Zeigers Nullen in den
     Speicher
   - Speicherschutz zeigt nicht erlaubten Schreibzugriff an

   In diesen Fall liegt der Fehler im OS allerdings können die
   Sicherheitsroutinen nur anzeigen, daß der Fehler von Programm X ausgelöst
   wird, die eigentlich Ursache, den Fehler in der Speicherreservierungs
   Funktion des OS, läßt sich nur durch Analyse des Programms finden, so
   daß das Programm schnell zu Unrecht eines Fehlers bezichtigt werden kann.

F: Erhöht Speicherschutz die Anzahl der Programmabbrüche?
A: Ja, durch Speicherschutz werden alle unerlaubten Zugriffe auf
   Speicherbereiche erkannt. Ohne Speicherschutz müssen diese nicht
   zwangsläufig zu Abstürzen oder Fehlern führen, da sie in nicht
   genutzte Speicherbereiche geschehen oder sie Daten betreffen, die
   nicht benötigt werden, während bei Speicherschutz jeder Verstoß erkannt
   wird und damit zu einem Programmabbruch führt. Es ist allerdings
   möglich diese Zahl herabzusetzen, indem nur Zugriffe auf
   rerservierte Speicherblöcke zu Programmabbrüchen führen und
   andere optional nur als Fehler gemeldet werden aber das Programm nicht
   abbrechen.

!  Es besteht allerdings auch die Möglichkeit fehlerhafte Programme weiterhin
!  recht sinnvoll benutzen zu können, da nur das jeweils fehlerhafte Programm
!  und nicht der gesamte Rechner abstürtzt.

F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
A: Das hängt von den ProgrammiererInnen, UserInnen und der Implementation
   des Speicherschutzes ab. Da mit Speicherschutz ein fehlerhaftes Programm
   nicht unbedingt Schaden im System anrichten muß, muß der Fehler
   auch nicht unbedingt beseitigt werden. Wenn die Implementation den
   UserInnen jedoch deutlich jeden nicht erlaubten Zugriff anzeigt und die
   UserInnen darauf bestehen, daß Programme diese Fehler nicht aufweisen
   dürfen, dann dürfte mit Speicherschutz die Anzahl von Fehlern in
   Programmen nicht unbedingt steigen auch wenn Speicherschutz
   ProgrammiererInnen dazu ermuntern könnte diese Fehler nicht zu beheben,
   da sie ja keinen Schaden anrichten.
   (TODO: Könnte man mit der vorigen Frage noch besser abgleichen)

F: Was passiert wenn ein Treiber fehlerhaft ist, abstürtzt?
A: Dann arbeiten alle Programmen, die diesen Treiber benötigen, auch
   nicht mehr fehlerfrei, bleiben stehen, stürzen ab bzw. lassen sich
   im Idealfall kontrolliert ("Sichern von Daten") beenden.

F: Können die Speicherschutz-Funktionen eines OS in der Praxis fehlerfrei
   sein?
A: Speicherschutz ist auch Software(und Hardware) und unterliegt
   damit den allgemeinen Gesetzen der Fehlerfreiheit. Allerdings
   muß Speicherschutz - abhängig vom OS - nicht unbedingt übermäßig
   komplex zu implementieren sein, so daß eine relativ hohe Chance bestehen
   kann, daß die entsprechenden Funktionen möglichs fehlerfrei sind.
   Zudem ist es im Fall von Speicherschutzfunktionieren recht lohnungswert,
   diese intensiv auszutesten und erkannte Fehler zu beseitigen. Eine
   100% Sicherheit gibt es für eine fehlerfreie Speicherschutzimplementation
   aber nicht.


Für wen ist Speicherschutz wichtig?

F: Ist Speicherschutz für einzelne UserInnen wichtig?
A: Speicherschutz ist für einzelne UserInnen praktisch, weil es die
   Laufzeiten des Gesamtsystems erhöht es ist aber nicht unbedingt ein
   muß und abhängig von der jeweiligen Person wird sie Speicherschutz
   unbedingt haben wollen, nichts dagegen haben, wenn Speicherschutz
   vorhanden ist oder Speicherschutz nicht brauchen und dagegen sein,
   weil es z.B. die Performance des Systems verringert.

F: Ist Speicherschutz für EntwicklerInnen wichtig?
A: Ja, bei der Entwicklung eines Programms kommt es zwangsläufig häufig
   zu Fehlern. Ein entsprechend implementierter Speicherschutz kann einmal
   helfen diese Fehler schneller zu lokalisieren und verhindert, daß der
   Rechner nach jeden Absturz neu gebootet und die Programmierumgebung neu
   gestartet werden muß. So wird Zeit eingespart, die sich schnell bezahlt
   machen kann.

   Alternativen dazu wären, das zu testende Prgramm in einer
   virtuellen Maschine laufen zu lassen. Dadurch wird es zwar langsamer
   aber es läßt sich auch besser nachvollziehen was das Programm
   gerade macht(Debugger: Einzelschrittmodus), so daß Fehler leichter zu
   finden sind. Man kann das zu testende Programm auch auf einen zweiten
   Rechner laufen lassen, so würde der Testrechner zwar abstürzen aber
   der Entwicklungsrechner unberührt bleiben und während des Neubootens
   des Testrechners könnte auf dem Entwicklungsrechner schon weiter
   gearbeitet werden. Gegenüber Speicherschutz ist die letzte Lösung
   allerdings in der Anschaffung relativ teuer.

F: Benötigt ein Multiuser-OS Speicherschutz?
A: Ja, ohne Speicherschutz gäbe es quasi keinen Schutz. Alle gerade
   aktiven UserInnen im System könnte problemlos andere aktive UserInnen
   stören oder deren Daten ausspähen. Ein sinnvolles Arbeiten wäre in einen
   Multiuser-OS ohne Speicherschutz in der Praxis nicht möglich.

F: Ist ein Multiuser-OS für Firmen wichtig?
A: Ja.

F: Ist eine Multiuser-OS für den Heimbereich wichtig?
A: Im Moment nicht, falls aber in Zukunft eine Vernetzung in Haushalten
   etwas ganz normales sein sollte, dann könnte statt ein Rechner pro
   BewohnerIn eventuell ein größerer, schnellerer Rechner für alle
   die bessere Wahl sein und dann würde ein Multiuser-OS auch
   für den Heimbereich wichtig werden.

F: Benötigt der Amiga Speicherschutz, um Erfolg im Massenmarkt zu haben?
A: Recht wahrscheinlich. Speicherschutz gehört neben 32-Bit OS, preemptiven
   Multitasking, Virtual Memory, 64-Bit Dateisystem, Multiuser Fähigkeit,
   Internet Unterstützung und zumindest als Kür symmetrisches
   Multiprocessing zu den Grundeigenschaften die ein heutiges OS haben muß,
   um überhaupt erst einmal auf eine Auswahlliste aufgenommen zu werden.
   Trotzdem könnte das Amiga-OS auch ohne Speicherschutz Erfolg haben
   eventuell sogar wegen des fehlenden Speicherschutzes und der dadurch
   höheren Effizients. Beispiele dafür wären z.B. Set-Top-Boxen, Point of
   Sale/Information Systeme, Spielkonsolen, Steuerungsrechner etc., die
   auch alle einen großen Markt bedienen.


Speicherschutz im Amiga

F: Welche Eigenschaften könnte eine Speicherschutz Erweiterung fürs
   Amiga-OS enthalten?
A: - Das OS läuft auch auf Rechner ohne MMU, dann natürlich auch ohne
     aktiven Speicherschutz -> Speicherschutz optional abschaltbar
   - Alte Programme sind weiterhin lauffähig

F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS um Speicherschutz?
A: Unabhängig vom Amiga-OS ist es so, daß Speicherschutz eine fundamentale
   Eigenschaft eines OS ist. Wenn diese Eigenschaft nicht von Beginn an
   eingeplant ist, dann ist die Wahrscheinlichkeit hoch, daß sich das
   vorhandene Konzept nur schwer und umständlich, um diese neue
   Eigenschaft ergänzen läßt.

   Im Amiga-OS speziell ist es so, daß das OS eigentlich gerade im Grunde
   dafür ausgelegt ist, daß es keinen Speicherschutz hat. So werden beim
   Verschicken von Nachrichten zwischen verschiedenen Programmen deren
   Inhalte nicht vom Speicherbereich eines Programms in den Speicherbereich
   eines anderen kopiert, sondern es wird nur ein Zeiger auf die Nachricht
   weitergegeben. Vorraussetzung dafür ist, daß zumindest die an den
   Nachrichtenaustausch beteiligten Programme lesenden und auch
   schreibenden(MENUCANCEL) Zugriff auf den Speicherbereich dieser Nachricht
   haben. Da in diesen Fall nur Zeiger ausgetauscht werden, ist das
   verschicken von Nachrichten im Amiga-OS sehr schnell nur verträgt es
   sich schwer mit der Idee des Speicherschutz und von diesen Fällen gibt
   es eine Reihe im Amiga-OS.

   Verschicken von Nachrichten
     Das Verschicken von Nachrichten erfolgt im Amiga-OS derzeit(bis
     3.1) nicht über das Kopieren der Nachricht, sondern nur über die
     Weitergabe eines Zeigers auf einen gemeinsam zugänglichen
     Speicherbereich(lesend, schreibend) mit dieser Nachricht. Diesen
     Austausch von Nachrichten findet man an vielen Stellen des
     Amiga-OS(Intuition(IDCMP), DOS-Library(Packets), Devices(DoIO)).


!  Verschicken von übermäßig vielen Nachrichten
!    Da sich Nachrichten im derzeitigen Amiga-OS sehr schnell verschicken
!    lassen, werden teilweise viele Nachrichten erzeugt(MouseMove,
!    IntuiTicks etc.), wobei schon derzeit darauf hingewiesen wird
!    diese Nachrichten möglichs schnell abzuarbeiten. Wenn durch
!    Speicherschutz sich das verschicken von Nachrichten verlangsamen
!    sollte, könnte dies aufgrund der vielen Nachrichten zu einen
!    spürbaren Performanceverlust führen.
!
!    Dies gilt z.B. auch für aktive BOOPSI Gadgets, denen ungefiltert
!    alle Ereignisse zugeschickt werden, die das input.device im Augenblick
!    zu bieten hat. Bei einen Multiuser fähigen Amiga-OS käme hinzu, daß
!    es mehr als ein aktives BOOPSI-Gadget geben kann.


   Shared Libraries
     Shared Libraries bilden das Grundkonzept des Amiga-OS - es besteht aus
     einzelnen Libraries(Exec, Intuition, Graphics etc.), die sich leicht
     durch neuere Versionen austauschen lassen und die Funktionalität des
     Amiga-OS läßt sich auch leicht durch zusätzliche Shared Libraries
     erweitern.

     Diese Shared Libraries sind für alle Tasks("Programme") zugänglich und
     wenn ein Task eine Funktion einer Library aufruft, dann wird der
     Code der Library Teil des Codes des Tasks. Dies bedeutet, daß dieser
     Code der Library auf den Speicherbereich des aufrufenden Tasks
     zugreifen kann, weil er während der Laufzeit Teil dieses Tasks ist.
     Zudem besitzt eine Library selbst Daten auf den die Funktionen
     der Library jederzeit zugreifen können müssen.

     Realisiert sind die Libraries über Funktionstabellen in denen
     direkt mit JSR  der Befehl zum Ausführen des Codes
     steht. Die Einträge dieser Tabellen lassen sich mit Exec.SetFunction()
     verändern, wovon viele Programme zur Eingliederung von Patches
     gebraucht machen. Zumindest für bestehende Programme, muß dieses
     Patchen auch in Zukunft erlaubt sein auch wenn es absolut gegen die
     Idee des Speicherschutzes spricht, da jedes Programm sich direkt
     ins OS einklinken kann, obwohl eigentlich OS und Anwenderprogrammen
     durch Speicherschutz voneinander getrennt sein sollten.


   Exec-Devices
     Exec-Devices stellen Funktionen in Form von Servern zur Verfügung.
     Tasks schicken an diese Server Aufträge im Form von Nachrichten
     ab(DoIO) und erhalten die Ergebnisse in Form von Nachrichten oder
     durchs direkte Schreiben der Server der Ergebnisse im vom Task
     gewünschte Speicherbereiche zurück.


   DOS-Handler("Filesysteme")
     Hierfür gilt dasgleiche wie für Devices über Nachrichten(Packets) -
     auch wenn Funktionen der Dos-Library wie Read, Write, Seek etc.
     benutzt werden - werden Aufträge an einen Handler abgeschickt, der
     die Ergebnisse in Form von Nachrichten und durch das direkte
     Schreiben in angegebene Speicherbereiche zurückgibt.


   DMA(Direct Memory Access)
     DMA ermöglicht eine Hardware direkt ohne den Umweg über einen
     Prozessor schreibend und lesend auf einen Speicherbereich
     zuzugreifen. Hiervon macht nicht nur Amiga-Hardware sehr intensiven
     gebrauch, weil es die Geschwindigkeit eines Systems um mehrere
     Faktoren erhöht nur wird damit in der Regel auch die MMU einer
     CPU umgangen.


!  Taskswitching
!    Bei einen Amiga-OS mit Speicherschutz wird wahrscheinlich das
!    Umschalten zwischen "gleichzeitig" laufenden Tasks länger dauern
!    als jetzt. Problem ist dabei, daß dies nicht beim Amiga-OS
!    berücksichtigt worden ist, sondern das Amiga-OS sich am derzeitigen
!    schnellen Taskwechsel orientiert. So wird der input.device-Task
!    z.B. 60 mal in der Sekunde aufgerufen, was sich schon spürbar
!    bemerkbar machen könnte. Dieses häufige Aufrufen gerantiert
!    andererseits aber auch wieder die schnelle Reaktion der GUI auf
!    Aktionen der UserInnen.

F: Was ist Shared-Memory?
A: a) Ein Speicherbereich, der verschiedenen Tasks zur Verfügung steht.
   b) Ein Speicherbereich eines Tasks, den dieser Task über ein Protokoll
      für einen oder mehrern anderen Tasks zum direkten Zugriff freigegeben
      hat.


Speicherschutz in anderen Betriebssystemen

F: Besitzt pOS Speicherschutz?
A: Bisher(07-Aug-1997) meines[Sven] Wissens nicht, ob Speicherschutz für
   zukünftige Versionen geplant ist, weiß ich nicht.

F: Wird das OS der A\Box Speicherschutz besitzen?
A: Zur Zeit ist geplant, daß das OS der A\Box auf einen Unix-Kernel
   basiert. Da Unix über Speicherschutz verfügt, wird somit auch das
   OS der A\Box Speicherschutz besitzen. Inwieweit es Einzug in dem
   auf diesen Unix-Kernel aufsetzen Amiga-OS einzug halten wird ist
   mir[Sven] nicht bekannt.
   (TODO: URL A\Box OS auf www.phase5.de)

F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
A: TODO: Tja, schreibt mal.

F: Laufen 32-Bit Windows 95 Programmen robuster als 16-Bit?
A: Ja, weil sich alle 16-Bit Programmen eine Speicherbereich teilen
   ohne gegenseitig durch Speicherschutz voreinander geschützt zu sein,
   während 32-Bit Programme jeweils einen eigenen geschützten Speicherbereich
   für sich haben.


Stabile Betriebssysteme

F: OS xyz hat Speicherschutz und läuft trotzdem nicht stabil?
A: Nur das angegebene Feature "Speicherschutz" selbst garantiert noch kein
   stabiles System. Speicherschutz selbst muß vollständig, gut und
   fehlerlos im OS implementiert sein.

F: Ist es möglich ein stabiles OS ohne Speicherschutz zu implementieren?
A: Ja, stabil und robust sind zwei verschiedene Dinge. Stabil ist ein OS,
   wenn es selbst in allen Situationen fehlerfrei läuft. Robust ist ein OS,
   wenn es durch fehlerhafte Programme nicht zum Absturz gebracht werden
   kann.

F: Ist das derzeitge Amiga OS 3.1 stabil?
A: Ja, das Amiga OS 3.1 ist recht stabil. Die Ursache von Abstürzen dürfte
   in der Regel eher an einen Programm als am Amiga-OS liegen.



Virtual Memory

!F: Was ist Virtual Memory?
!A: Ohne Virtual Memory gibt es nur einen Adressraum und alle Programme
!  müssen sich diese einmal real vorhandenen 8MB, 16MB, 32MB etc.
!  an Speicher teilen. Bei Virtual Memory bekommt jedes Programm seinen
!  eigenen Adressraum - in der Regel in der Größe des Adressraums den
!  die CPU maximal verteilen kann. Bei einer CPU mit 32-Adressleitungen
!  wären dies 4GB. Diese sind natürlich nicht real als RAM vorhanden,
!  sondern werden mittels einer MMU auf real vorhandenen Speicher abgebildet,
!  für Programm 1 würde die virtuelle Adresse 1024 z.B. im real vorhandenen
!  Speicher bei 3000 liegen und für Programm 2 1024 bei 75 000. Für
!  die Software ist das egal, da die MMU automatisch diese Abbildung
!  übernimmt. Dank dieser virtuellen Adressen lassen sich Speicherbereiche
!  auch auf Festplatte auslagern, dadurch wird der Speicherbereich im
!  real vorhandenen RAM frei und kann anders genutzt werden bis der
!  ausgelagerte Speicherblock wieder gebraucht wird. Dafür wird dann ein
!  anderer gerade nicht benötigte Speicherblock auf die Festplatte
!  geschrieben wird und der vorher gerettete wieder ins RAM geladen. Dies
!  ist natürlich langsamer als wenn genügend RAM für alle Programme da wär
!  aber so lassen sich oft Programme, die große Datenmengen verarbeiten,
!  besser bzw. überhaupt erst nutzen als wenn diese Möglichkeit nicht
!  vorhanden wär.
!
!  TODO: Liste VM Implementationen für Amiga-OS

MMU

F: Was ist eine MMU?
A: Eine MMU(Memory Management Unit) teilt den real vorhandenen Adreßraum
   in Seiten ein. Auf diese physikalisch vorhandenen Adressen kann eine MMU
   logische Adressen abbilden(Virtual Memory) und den lesenden und
   schreibenden Zugriff auf die einzelnen Seiten überwachen(Speicherschutz).

F: Welche 680x0 Prozessoren haben eine MMU?
A: Prozessor  MMU     Typenbezeichnung
   ----------------------------------------------
   68000      Ja      extern, TODO: Bezeichnung?
   68010      Ja      extern, TODO: Bezeichnung?
   68020      Ja      extern, PMMU 68851
   68EC020    Nein    TODO: [Sven] soviel ich weiß
   68030      Ja      intern
   68EC030    Nein[1]
   68040      Ja      intern
   68LC040    Ja[2]   intern
   68EC040    Nein
   68060      Ja      intern


   Kompabilität:
     Die PMMU 68851 und die interne MMU des 68030 sind identisch. Die MMU
     des 68040 und des 68060 haben gegenüber ihren jeweiligen Vorgängern
     an Funktionalität verloren und sind nicht 100% kompatibel, so daß
     Programme, die eine MMU nutzen und z.B. speziell für den 68030
     geschrieben worden sind, mit den 68040/68060 nicht laufen oder
     Probleme bereiten.

   [1] Eine Reihe von 68EC030(die u.a. in Amigas verbaut worden sind)
       besitzen eine scheinbar funktionierende MMU(Enforcer, VM-Programme
       laufen). Allerdings ist bei diesen 68EC030'ern die MMU nicht
       getestet worden, so gibt es keine Garantie dafür, daß die MMU
       ordnungsgemäßt funktioniert - dies gilt insbesonders für den
       Dauerbetrieb. Für kritische Aufgaben wie Speicherschutz und Virtual
       Memory sind diese CPUs daher nicht geeignet.

   [2] Ja, der 68LC040 hat eine MMU ihm fehlt gegenüber dem 68040 nur
       die FPU - auch wenns oft anders angegeben wird.


Dank an
  - Allen SchreiberInnen der aktuellen(Juli/August 1997) Speicherschutz
    Threads in z-netz/rechner/amiga/allgemein, comp.sys.amiga.misc,
    de.comp.sys.amiga.misc.

  - Christian Stieber für seinen "Memory Protection for AmigaOS" Text von
    dem u.a. der "F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS
    um Speicherschutz?" Teil zugute gekommen ist.

! - Der Taskswitching Abschnitt basiert auf einen Posting von Timmo
!   Stange in z.r.a.a. Timmo, keine Ahnung ob meine Mail angekommen ist,
!   mir waren ein paar verloren gegangen.


Todo
<
  - FTP als Quelle

  - Mehr Literatur zum Thema Speicherschutz

  - F: Welche Nachteile hat Speicherschutz???? - zusätzliche Erläuterungen

  - F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
    (TODO: Könnte man mit der vorigen Frage noch besser abgleichen)

  - F: Wird das OS der A\Box Speicherschutz besitzen?
    (TODO: URL A\Box OS auf www.phase5.de)

  - F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
    TODO: Tja, schreibt mal.

! - F: Was ist Virtual Memory?
!   TODO: Liste VM Implementationen für Amiga-OS

! - Enforcer, Mungwall


Brainstorm
  F: Schutz vor Schreiben in nicht vorhandene Speicherbereiche.

  F: Bricht/muß brechen Multithreading MP?

  - Zwei virtuelle Adressen auf eine physikalische Adresse einmal zum
    Lesen einmal zum Schreiben

  - Erst dann Kopie von Speicherbereich anlegen, wenn anderer schreibend
    darauf zugreift(Mach Kernel).


History
  V0.2 24.09.1997 sven add: Legende
                       add: F: Wo kann man die neueste Version dieser FAQ
                               finden?
                       add: Verschicken von übermäßig vielen Nachrichten
                       add: Taskswitching
                       add: Virtual Memory
  V0.1 03.08.1997 sven first public release