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