fixed Forbid fallback
[aros:aros.git] / www / www.aros.org / www / Speicherschutz-FAQ.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>Speicherschutz-FAQ 0.2 (24.09.1997)</TITLE>
5 <LINK REV=made HREF="mailto:indy@welcome.north.de">
6 </HEAD>
7
8 <BODY>
9 <PRE>
10 Speicherschutz-FAQ
11
12 $VER: Speicherschutz-FAQ 0.2 (24.09.1997)
13
14 !Legende
15
16 F: Was ist das Thema dieser FAQ?
17 F: In welchen Sprachen liegt diese FAQ vor?
18 !F: Wo kann man die neueste Version dieser FAQ finden?
19 F: Wohin kann man Kritik, Berichtigungen von Fehler, Ergänzungen zur FAQ
20    schicken?
21 F: Was gibt es an Literatur zum Thema Speicherschutz?
22
23
24 Glossar
25
26 F: Was ist ein stabiles, was ist ein robuste Betriebssystem?
27
28
29 Speicherschutz allgemein
30
31 F: Was ist Speicherschutz?
32 F: Wie funktioniert Speicherschutz?
33 F: Wie können Programme trotz Speicherschutz miteinander kommunizieren?
34 F: Welche Nachteile hat Speicherschutz????
35 F: Macht Speicherschutz ein OS langsamer?
36 F: Auf welche Weise bremst Speicherschutz das OS aus?
37 F: Kann Speicherschutz die Fragmentierung des Speichers verhindern?
38 F: Benötigt man für Speicherschutz eine MMU?
39
40
41 Schutz vor Fehlern in Programmen
42
43 F: Gibt es fehlerfreie Programme?
44 F: Schützt Speicherschutz vor fehlerhafter Software?
45 F: Kann man mit Speicherschutz ein fehlerhaftes Programm lokalisieren?
46 F: Erhöht Speicherschutz die Anzahl der Programmabbrüche?
47 F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
48 F: Was passiert wenn ein Treiber fehlerhaft ist, abstürtzt?
49 F: Können die Speicherschutz-Funktionen eines OS in der Praxis fehlerfrei
50    sein?
51
52
53 Für wen ist Speicherschutz wichtig?
54
55 F: Ist Speicherschutz für einzelne UserInnen wichtig?
56 F: Ist Speicherschutz für EntwicklerInnen wichtig?
57 F: Benötigt ein Multiuser-OS Speicherschutz?
58 F: Ist ein Multiuser-OS für Firmen wichtig?
59 F: Ist eine Multiuser-OS für den Heimbereich wichtig?
60 F: Benötigt der Amiga Speicherschutz, um Erfolg im Massenmarkt zu haben?
61
62
63 Speicherschutz im Amiga
64
65 F: Welche Eigenschaften könnte eine Speicherschutz Erweiterung fürs
66    Amiga-OS enthalten?
67 F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS um Speicherschutz?
68 F: Was ist Shared-Memory?
69
70
71 Speicherschutz in anderen Betriebssystemen
72
73 F: Besitzt pOS Speicherschutz?
74 F: Wird das OS der A\Box Speicherschutz besitzen?
75 F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
76 F: Laufen 32-Bit Windows 95 Programmen robuster als 16-Bit?
77
78
79 Stabile Betriebssysteme
80
81 F: OS xyz hat Speicherschutz und läuft trotzdem nicht stabil?
82 F: Ist es möglich ein stabiles OS ohne Speicherschutz zu implementieren?
83 F: Ist das derzeitge Amiga OS 3.1 stabil?
84
85
86 Virtual Memory
87
88 !F: Was ist virtual Memory?
89
90
91 MMU
92
93 F: Was ist eine MMU?
94 F: Welche 680x0 Prozessoren haben eine MMU?
95
96 Dank an
97 History
98 -------------------------------------------------
99
100 !Legende
101
102 !      !: Seit der letzten öffentlichen Version neue oder
103 !         geänderte Zeile
104 !      <: Hier wurden Zeilen gelöscht
105 !   TODO: Kennzeichnet zu ergänzenden Bereich
106
107
108 F: Was ist das Thema dieser FAQ?
109 A: Thema dieser FAQ ist Speicherschutz(memory protection) bezogen
110    auf die Hardware und Software(OS) des Amigas. Dabei versucht diese FAQ
111    neutral möglichs alle Aspekte, Vor- und Nachteile, Meinungen sowie die
112 !  Probleme, die es bei der Erweiterung des Amiga-OS um Speicherschutz
113    Funktionen gibt aufzuführen ohne jedoch einen Anspruch auf
114    Vollständigkeit und Korrektheit der enthaltenen Informationen zu
115    erheben.
116
117 F: In welchen Sprachen liegt diese FAQ vor?
118 A: Bisher nur in deutsch. Schön wären Übersetzungen der FAQ in andere
119    Sprachen, wobei es sich anbietet dann zunächst die englische Version zu
120    erweitern und diese dann in die anderen Sprache zu übertragen. Wer
121    Lust hat diese FAQ zu übersetzen und die Übersetzung nach Möglichkeit
122    zumindest für eine Weile zu pflegen kann sich an Sven Drieling
123    wenden(Adresse in Wohin kann man Kritik, Berichtigungen[...]  schicken?).
124
125 !F: Wo kann man die neueste Version dieser FAQ finden?
126 !
127 !  WWW
128 !    http://olis.north.de/Speicherschutz-FAQ.html
129 !
130 !
131 !  Fido
132 !    Filename: "Speicherschutz-FAQ.lha" (ca. 11KB) - ASCII Latin-1
133 !    OL-MEDIC BBS (2:2426/2270.0)
134 !    +49 (4 41) 9 35 07 31  (analog 28.800)
135 !
136 !
137 !  Mailbox
138 !    Filename: "Speicherschutz-FAQ.lha" (ca. 11KB) - ASCII Latin-1
139 !    BLACK-ZONE BBS:
140 !      +49 (61 42)  4 62 78 (19.2)    +49 (61 42) 92 40 80 (64.0)
141 !      +49 (61 42)  4 39 30 (33.6)    +49 (61 42) 92 40 81 (64.0)
142 !      +49 (61 42) 92 60 75 (33.6)
143 !
144 !
145 !  E-Mail
146 !    Sven Drieling, indy@welcome.north.de
147
148
149 F: Wohin kann man Kritik, Berichtigungen von Fehler und Ergänzungen zur FAQ
150    schicken?
151 A: Sven Drieling    E-Mail: indy@welcome.north.de
152    Am Breithof 5    Fido  : 2:2426/2270.13
153    27804 Berne      Tel.  : (0 44 06) 53 12
154
155 F: Was gibt es an Literatur zum Thema Speicherschutz?
156 A: Memory Protection for AmigaOS
157    http://www.informatik.tu-muenchen.de/~stieber/AmigaOS-Speicherschutz
158    Vorschlag für eine Erweiterung des Amiga-OS um Speicherschutz, die
159    auf shared-memory mit Zugriffsprotokollen basiert.
160
161
162 Glossar
163
164 F: Was ist ein stabiles, was ist ein robuste Betriebssystem?
165
166 A: Ein stabiles Betriebssystem ist ein Betriebssytem, das selbst
167    keine Fehler enthält und somit absturzfrei und korrekt läuft. Allerdings
168    können fehlerhafte Programme das Betriebsystem oder parallel laufende
169    Programme zum Absturz bringen oder andere Fehler erzeugen, es sei denn
170    das Betriebssystem ist robust.
171
172    Ein robustes Betriebssystem ist ein Betriebssystem, das nicht durch
173    fehlerhafte Programme zum Absturz oder fehlerhaften Verhalten
174    gebracht werden kann und auch parallel laufende Programme entsprechend
175    voreinander schützt.
176
177
178 Speicherschutz allgemein
179
180 F: Was ist Speicherschutz?
181 A: Speicherschutz schützt Speicherbereiche vordem (un)gewollten Überschreiben
182    und vor dem (un)gewollten auslesen durch ein Programm. Da ein Fehler
183    eines Programms damit verbunden sein kann, Speicherbereiche anderer
184    Programme zu schädigen und dies dann zu Fehlern und zum Abstürzen dieser
185    Programme führen kann, obwohl die Programme eigentlich fehlerfrei sind,
186    schützt Speicherschutz so andere Programme vor fehlerhaften Programmen
187    und erhöht damit die Stabilität eines Systems.
188
189 F: Wie funktioniert Speicherschutz?
190 A: Speicherschutz weist jedem Programm einen eigenen geschützten
191    Adreßraum ("Speicherbereich") zu und verhindert, daß fremde Programme auf
192 !  diesen Speicherbereich lesend oder schreibend zugreifen können. Dies
193 !  gilt nicht nur für von Anwender gestartete Programme, sondern auch das
194 !  OS erhält, bei konsequenter Anwendung des Speicherschutzes, einen eigenen
195 !  Adressraum und ist so vor den Anwenderprogrammen geschützt und getrennt.
196
197    Problem ist dabei u.a., daß nun Mechanismen für eine möglichs schnelle
198    Kommunikation zwischen im Multitasking laufenden Programmen geschaffen
199    werden müssen. Dies kann durch z.B. kopieren von Nachrichten(relativ
200    langsam), gemeinsam genutzten Speicherbereichen(wieder die Gefahr eines
201 !  gegenseitigen störens von Programmen) oder den nur lesenden Zugriff für
202    ein Programm auf den Speicherbereich eines anderen Programm geschehen.
203
204 F: Wie können Programme trotz Speicherschutz miteinander kommunizieren?
205 A: - Shared memory
206    - TCP/IP
207    - Messagequeues
208    - Semaphoren
209    - Signale
210
211 F: Welche Nachteile hat Speicherschutz????
212 A: - Aufwendigere Kommunikation zwischen gleichzeitig laufenden Pogrammen.
213    - Aufwendigeres durchreichen von Informationen zwischen der Hardwarebene,
214      den verschiedenen Ebenen eines OS und den laufenden Anwenderprogrammen.
215    - Eingeschränkte DMA
216    - spezieller SuperVisor-Modus für alle OS-Aufrufe
217      (da diese den Speicherschutz wieder durchbrechen können
218       müssen, z.B. Linux-Systemcalls und Interrupt-Calls)
219       (TODO: [Sven] Hatte ich AFAIK aus einem Posting von Andreas Kleinert
220        gezogen, die letzten beiden Punkte sollten noch besser erklärt werden)
221
222 F: Macht Speicherschutz ein OS langsamer?
223 A: Zumindest wird ein OS mit Speicherschutz nicht schneller als ein OS ohne
224    Speicherschutz sein.
225
226    Für Speicherschutz sind sowohl vom Prozessor aus als auch vom OS
227    zusätzliche Verwaltungsaufgaben zu erledigen - die Zeit kosten, wodurch
228    in der Regel ein OS mit Speicherschutz gegenüber demselben OS ohne
229    aktiven Speicherschutz langsamer sein wird, d.h. aber nicht, daß
230    alle Betriebssystemen mit Speicherschutz allen anderen ohne
231    Speicherschutz von der Geschwindigkeit her unterlegen sein müssen.
232
233    Wieviel Zeit für die zusätzlichen Verwaltungsaufgaben nötig ist,
234    ist abhängig vom Prozessor, dem Speichersystem und dem jeweiligen OS.
235    Bei den heutigen CPUs dürfte sich der zeitliche Aufwand dazu im Grenzen
236    halten und gegenüber der Zeit, die z.B. nach einer Zerstörung des
237 !  Dateisystems für ein aufspielen des BackUp benötigt wird, ist
238 !  dieser Rechenzeitverlust gering. Spürbar bemerkbar könnte er sich
239 !  jedoch z.B. bei Berechnungen von langen 3D-Animationen machen, sofern
240    diese absturzfrei ablaufen.
241
242 F: Auf welche Weise bremst Speicherschutz das OS aus?
243 A: - Abfrage ob Speicherzugriff gültig, ungültig.
244    - Verwaltung zusätzlicher Informationen bei der Reservierung von Speicher.
245    - Rettung zusätzlicher Informationen beim Taskswitching.
246
247 F: Kann Speicherschutz die Fragmentierung des Speichers verhindern?
248 A: Nein, dies ist aber mit einer entsprechenden Virtual Memory
249    Implementation möglich.
250
251 F: Benötigt man für Speicherschutz eine MMU?
252 A: Ja, ohne MMU ist Speicherschutz zwar theoretisch auch denkbar
253    (Trace-Modus, Virtuelle Maschine) aber ohne MMU ist keine akzeptale
254    Geschwindigkeit erzielbar.
255
256
257 Schutz vor Fehlern in Programmen
258
259 F: Gibt es fehlerfreie Programme?
260 A: Ja, in der Regel aber nur in der Theorie. In der Praxis besitzen
261    fast alle Programme, die ein wenig komplexer sind, Fehler. Die
262    Wahrscheinlichkeit, daß ein OS, eine Textverarbeitung oder ein anderes
263    Programm fehlerfrei ist, ist verschwindend gering und ein solches
264    Programm fehlerfrei zu machen dürfte die Kosten für ein solches Programm
265    vervielfachen.
266
267    Wenn man ein Programm aber lange benutzt weiß man, daß die von einen
268    benutzen Funktionen stabil sind bzw. kennt die Funktionen, die nicht
269    fehlerfrei arbeiten und vermeidet deren Gebrauch. In diesen Fall kann
270    man davon ausgehen, daß ein Programm relativ stabil läuft und man daher
271    auch keinen Speicherschutz braucht. Sobald man aber eine neue Version
272    dieses Programm benutzt oder ganz neue Software einsetzt hat man dieses
273    Wissen nicht mehr und muß es sich erst mit der Zeit wieder aneignen.
274
275 !  Wenn es um Fehlern in Programmen geht, darf man auch nicht vergessen, daß
276    Compiler selbst komplexe Programme sind, die einen eigentlich
277 !  fehlerfreien Quellcode in einen fehlerhaften Programmcode übersetzen
278    könnten und letzendlich ist auch die Hardware eine Quelle für Fehler.
279
280 F: Schützt Speicherschutz vor fehlerhafter Software?
281 A: Nein, es schützt nur davor, daß ein Fehler in einen Programm nicht
282    dazu führt, daß Daten oder Programmcode eines anderen Programms
283    zerstört werden. Ein einzelnes Programm kann weiterhin seine eigenen
284 !  Daten zerstören und andere Fehler aufweisen, die dann aber theoretisch
285    nur dieses Programm betreffen.
286
287 F: Kann man mit Speicherschutz ein fehlerhaftes Programm lokalisieren?
288 A: Jein, abhängig von der Implementation ist es möglich, daß das OS
289    das Programm anzeigt, daß den Fehler ausgelöst hat allerdings muß
290    dies nicht das fehlerhafte Programm sein. Beispiel:
291    - Programm X fordert Speicherblock vom OS an
292    - OS gibt falschen Zeiger zurück
293    - Programm X schreibt mittels dieses falschen Zeigers Nullen in den
294      Speicher
295    - Speicherschutz zeigt nicht erlaubten Schreibzugriff an
296
297    In diesen Fall liegt der Fehler im OS allerdings können die
298    Sicherheitsroutinen nur anzeigen, daß der Fehler von Programm X ausgelöst
299    wird, die eigentlich Ursache, den Fehler in der Speicherreservierungs
300    Funktion des OS, läßt sich nur durch Analyse des Programms finden, so
301    daß das Programm schnell zu Unrecht eines Fehlers bezichtigt werden kann.
302
303 F: Erhöht Speicherschutz die Anzahl der Programmabbrüche?
304 A: Ja, durch Speicherschutz werden alle unerlaubten Zugriffe auf
305    Speicherbereiche erkannt. Ohne Speicherschutz müssen diese nicht
306    zwangsläufig zu Abstürzen oder Fehlern führen, da sie in nicht
307    genutzte Speicherbereiche geschehen oder sie Daten betreffen, die
308    nicht benötigt werden, während bei Speicherschutz jeder Verstoß erkannt
309    wird und damit zu einem Programmabbruch führt. Es ist allerdings
310    möglich diese Zahl herabzusetzen, indem nur Zugriffe auf
311    rerservierte Speicherblöcke zu Programmabbrüchen führen und
312    andere optional nur als Fehler gemeldet werden aber das Programm nicht
313    abbrechen.
314
315 !  Es besteht allerdings auch die Möglichkeit fehlerhafte Programme weiterhin
316 !  recht sinnvoll benutzen zu können, da nur das jeweils fehlerhafte Programm
317 !  und nicht der gesamte Rechner abstürtzt.
318
319 F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
320 A: Das hängt von den ProgrammiererInnen, UserInnen und der Implementation
321    des Speicherschutzes ab. Da mit Speicherschutz ein fehlerhaftes Programm
322    nicht unbedingt Schaden im System anrichten muß, muß der Fehler
323    auch nicht unbedingt beseitigt werden. Wenn die Implementation den
324    UserInnen jedoch deutlich jeden nicht erlaubten Zugriff anzeigt und die
325    UserInnen darauf bestehen, daß Programme diese Fehler nicht aufweisen
326    dürfen, dann dürfte mit Speicherschutz die Anzahl von Fehlern in
327    Programmen nicht unbedingt steigen auch wenn Speicherschutz
328    ProgrammiererInnen dazu ermuntern könnte diese Fehler nicht zu beheben,
329    da sie ja keinen Schaden anrichten.
330    (TODO: Könnte man mit der vorigen Frage noch besser abgleichen)
331
332 F: Was passiert wenn ein Treiber fehlerhaft ist, abstürtzt?
333 A: Dann arbeiten alle Programmen, die diesen Treiber benötigen, auch
334    nicht mehr fehlerfrei, bleiben stehen, stürzen ab bzw. lassen sich
335    im Idealfall kontrolliert ("Sichern von Daten") beenden.
336
337 F: Können die Speicherschutz-Funktionen eines OS in der Praxis fehlerfrei
338    sein?
339 A: Speicherschutz ist auch Software(und Hardware) und unterliegt
340    damit den allgemeinen Gesetzen der Fehlerfreiheit. Allerdings
341    muß Speicherschutz - abhängig vom OS - nicht unbedingt übermäßig
342    komplex zu implementieren sein, so daß eine relativ hohe Chance bestehen
343    kann, daß die entsprechenden Funktionen möglichs fehlerfrei sind.
344    Zudem ist es im Fall von Speicherschutzfunktionieren recht lohnungswert,
345    diese intensiv auszutesten und erkannte Fehler zu beseitigen. Eine
346    100% Sicherheit gibt es für eine fehlerfreie Speicherschutzimplementation
347    aber nicht.
348
349
350 Für wen ist Speicherschutz wichtig?
351
352 F: Ist Speicherschutz für einzelne UserInnen wichtig?
353 A: Speicherschutz ist für einzelne UserInnen praktisch, weil es die
354    Laufzeiten des Gesamtsystems erhöht es ist aber nicht unbedingt ein
355    muß und abhängig von der jeweiligen Person wird sie Speicherschutz
356    unbedingt haben wollen, nichts dagegen haben, wenn Speicherschutz
357    vorhanden ist oder Speicherschutz nicht brauchen und dagegen sein,
358    weil es z.B. die Performance des Systems verringert.
359
360 F: Ist Speicherschutz für EntwicklerInnen wichtig?
361 A: Ja, bei der Entwicklung eines Programms kommt es zwangsläufig häufig
362    zu Fehlern. Ein entsprechend implementierter Speicherschutz kann einmal
363    helfen diese Fehler schneller zu lokalisieren und verhindert, daß der
364    Rechner nach jeden Absturz neu gebootet und die Programmierumgebung neu
365    gestartet werden muß. So wird Zeit eingespart, die sich schnell bezahlt
366    machen kann.
367
368    Alternativen dazu wären, das zu testende Prgramm in einer
369    virtuellen Maschine laufen zu lassen. Dadurch wird es zwar langsamer
370    aber es läßt sich auch besser nachvollziehen was das Programm
371    gerade macht(Debugger: Einzelschrittmodus), so daß Fehler leichter zu
372    finden sind. Man kann das zu testende Programm auch auf einen zweiten
373    Rechner laufen lassen, so würde der Testrechner zwar abstürzen aber
374    der Entwicklungsrechner unberührt bleiben und während des Neubootens
375    des Testrechners könnte auf dem Entwicklungsrechner schon weiter
376    gearbeitet werden. Gegenüber Speicherschutz ist die letzte Lösung
377    allerdings in der Anschaffung relativ teuer.
378
379 F: Benötigt ein Multiuser-OS Speicherschutz?
380 A: Ja, ohne Speicherschutz gäbe es quasi keinen Schutz. Alle gerade
381    aktiven UserInnen im System könnte problemlos andere aktive UserInnen
382    stören oder deren Daten ausspähen. Ein sinnvolles Arbeiten wäre in einen
383    Multiuser-OS ohne Speicherschutz in der Praxis nicht möglich.
384
385 F: Ist ein Multiuser-OS für Firmen wichtig?
386 A: Ja.
387
388 F: Ist eine Multiuser-OS für den Heimbereich wichtig?
389 A: Im Moment nicht, falls aber in Zukunft eine Vernetzung in Haushalten
390    etwas ganz normales sein sollte, dann könnte statt ein Rechner pro
391    BewohnerIn eventuell ein größerer, schnellerer Rechner für alle
392    die bessere Wahl sein und dann würde ein Multiuser-OS auch
393    für den Heimbereich wichtig werden.
394
395 F: Benötigt der Amiga Speicherschutz, um Erfolg im Massenmarkt zu haben?
396 A: Recht wahrscheinlich. Speicherschutz gehört neben 32-Bit OS, preemptiven
397    Multitasking, Virtual Memory, 64-Bit Dateisystem, Multiuser Fähigkeit,
398    Internet Unterstützung und zumindest als Kür symmetrisches
399    Multiprocessing zu den Grundeigenschaften die ein heutiges OS haben muß,
400    um überhaupt erst einmal auf eine Auswahlliste aufgenommen zu werden.
401    Trotzdem könnte das Amiga-OS auch ohne Speicherschutz Erfolg haben
402    eventuell sogar wegen des fehlenden Speicherschutzes und der dadurch
403    höheren Effizients. Beispiele dafür wären z.B. Set-Top-Boxen, Point of
404    Sale/Information Systeme, Spielkonsolen, Steuerungsrechner etc., die
405    auch alle einen großen Markt bedienen.
406
407
408 Speicherschutz im Amiga
409
410 F: Welche Eigenschaften könnte eine Speicherschutz Erweiterung fürs
411    Amiga-OS enthalten?
412 A: - Das OS läuft auch auf Rechner ohne MMU, dann natürlich auch ohne
413      aktiven Speicherschutz -> Speicherschutz optional abschaltbar
414    - Alte Programme sind weiterhin lauffähig
415
416 F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS um Speicherschutz?
417 A: Unabhängig vom Amiga-OS ist es so, daß Speicherschutz eine fundamentale
418    Eigenschaft eines OS ist. Wenn diese Eigenschaft nicht von Beginn an
419    eingeplant ist, dann ist die Wahrscheinlichkeit hoch, daß sich das
420    vorhandene Konzept nur schwer und umständlich, um diese neue
421    Eigenschaft ergänzen läßt.
422
423    Im Amiga-OS speziell ist es so, daß das OS eigentlich gerade im Grunde
424    dafür ausgelegt ist, daß es keinen Speicherschutz hat. So werden beim
425    Verschicken von Nachrichten zwischen verschiedenen Programmen deren
426    Inhalte nicht vom Speicherbereich eines Programms in den Speicherbereich
427    eines anderen kopiert, sondern es wird nur ein Zeiger auf die Nachricht
428    weitergegeben. Vorraussetzung dafür ist, daß zumindest die an den
429    Nachrichtenaustausch beteiligten Programme lesenden und auch
430    schreibenden(MENUCANCEL) Zugriff auf den Speicherbereich dieser Nachricht
431    haben. Da in diesen Fall nur Zeiger ausgetauscht werden, ist das
432    verschicken von Nachrichten im Amiga-OS sehr schnell nur verträgt es
433    sich schwer mit der Idee des Speicherschutz und von diesen Fällen gibt
434    es eine Reihe im Amiga-OS.
435
436    Verschicken von Nachrichten
437      Das Verschicken von Nachrichten erfolgt im Amiga-OS derzeit(bis
438      3.1) nicht über das Kopieren der Nachricht, sondern nur über die
439      Weitergabe eines Zeigers auf einen gemeinsam zugänglichen
440      Speicherbereich(lesend, schreibend) mit dieser Nachricht. Diesen
441      Austausch von Nachrichten findet man an vielen Stellen des
442      Amiga-OS(Intuition(IDCMP), DOS-Library(Packets), Devices(DoIO)).
443
444
445 !  Verschicken von übermäßig vielen Nachrichten
446 !    Da sich Nachrichten im derzeitigen Amiga-OS sehr schnell verschicken
447 !    lassen, werden teilweise viele Nachrichten erzeugt(MouseMove,
448 !    IntuiTicks etc.), wobei schon derzeit darauf hingewiesen wird
449 !    diese Nachrichten möglichs schnell abzuarbeiten. Wenn durch
450 !    Speicherschutz sich das verschicken von Nachrichten verlangsamen
451 !    sollte, könnte dies aufgrund der vielen Nachrichten zu einen
452 !    spürbaren Performanceverlust führen.
453 !
454 !    Dies gilt z.B. auch für aktive BOOPSI Gadgets, denen ungefiltert
455 !    alle Ereignisse zugeschickt werden, die das input.device im Augenblick
456 !    zu bieten hat. Bei einen Multiuser fähigen Amiga-OS käme hinzu, daß
457 !    es mehr als ein aktives BOOPSI-Gadget geben kann.
458
459
460    Shared Libraries
461      Shared Libraries bilden das Grundkonzept des Amiga-OS - es besteht aus
462      einzelnen Libraries(Exec, Intuition, Graphics etc.), die sich leicht
463      durch neuere Versionen austauschen lassen und die Funktionalität des
464      Amiga-OS läßt sich auch leicht durch zusätzliche Shared Libraries
465      erweitern.
466
467      Diese Shared Libraries sind für alle Tasks("Programme") zugänglich und
468      wenn ein Task eine Funktion einer Library aufruft, dann wird der
469      Code der Library Teil des Codes des Tasks. Dies bedeutet, daß dieser
470      Code der Library auf den Speicherbereich des aufrufenden Tasks
471      zugreifen kann, weil er während der Laufzeit Teil dieses Tasks ist.
472      Zudem besitzt eine Library selbst Daten auf den die Funktionen
473      der Library jederzeit zugreifen können müssen.
474
475      Realisiert sind die Libraries über Funktionstabellen in denen
476      direkt mit JSR  der Befehl zum Ausführen des Codes
477      steht. Die Einträge dieser Tabellen lassen sich mit Exec.SetFunction()
478      verändern, wovon viele Programme zur Eingliederung von Patches
479      gebraucht machen. Zumindest für bestehende Programme, muß dieses
480      Patchen auch in Zukunft erlaubt sein auch wenn es absolut gegen die
481      Idee des Speicherschutzes spricht, da jedes Programm sich direkt
482      ins OS einklinken kann, obwohl eigentlich OS und Anwenderprogrammen
483      durch Speicherschutz voneinander getrennt sein sollten.
484
485
486    Exec-Devices
487      Exec-Devices stellen Funktionen in Form von Servern zur Verfügung.
488      Tasks schicken an diese Server Aufträge im Form von Nachrichten
489      ab(DoIO) und erhalten die Ergebnisse in Form von Nachrichten oder
490      durchs direkte Schreiben der Server der Ergebnisse im vom Task
491      gewünschte Speicherbereiche zurück.
492
493
494    DOS-Handler("Filesysteme")
495      Hierfür gilt dasgleiche wie für Devices über Nachrichten(Packets) -
496      auch wenn Funktionen der Dos-Library wie Read, Write, Seek etc.
497      benutzt werden - werden Aufträge an einen Handler abgeschickt, der
498      die Ergebnisse in Form von Nachrichten und durch das direkte
499      Schreiben in angegebene Speicherbereiche zurückgibt.
500
501
502    DMA(Direct Memory Access)
503      DMA ermöglicht eine Hardware direkt ohne den Umweg über einen
504      Prozessor schreibend und lesend auf einen Speicherbereich
505      zuzugreifen. Hiervon macht nicht nur Amiga-Hardware sehr intensiven
506      gebrauch, weil es die Geschwindigkeit eines Systems um mehrere
507      Faktoren erhöht nur wird damit in der Regel auch die MMU einer
508      CPU umgangen.
509
510
511 !  Taskswitching
512 !    Bei einen Amiga-OS mit Speicherschutz wird wahrscheinlich das
513 !    Umschalten zwischen "gleichzeitig" laufenden Tasks länger dauern
514 !    als jetzt. Problem ist dabei, daß dies nicht beim Amiga-OS
515 !    berücksichtigt worden ist, sondern das Amiga-OS sich am derzeitigen
516 !    schnellen Taskwechsel orientiert. So wird der input.device-Task
517 !    z.B. 60 mal in der Sekunde aufgerufen, was sich schon spürbar
518 !    bemerkbar machen könnte. Dieses häufige Aufrufen gerantiert
519 !    andererseits aber auch wieder die schnelle Reaktion der GUI auf
520 !    Aktionen der UserInnen.
521
522 F: Was ist Shared-Memory?
523 A: a) Ein Speicherbereich, der verschiedenen Tasks zur Verfügung steht.
524    b) Ein Speicherbereich eines Tasks, den dieser Task über ein Protokoll
525       für einen oder mehrern anderen Tasks zum direkten Zugriff freigegeben
526       hat.
527
528
529 Speicherschutz in anderen Betriebssystemen
530
531 F: Besitzt pOS Speicherschutz?
532 A: Bisher(07-Aug-1997) meines[Sven] Wissens nicht, ob Speicherschutz für
533    zukünftige Versionen geplant ist, weiß ich nicht.
534
535 F: Wird das OS der A\Box Speicherschutz besitzen?
536 A: Zur Zeit ist geplant, daß das OS der A\Box auf einen Unix-Kernel
537    basiert. Da Unix über Speicherschutz verfügt, wird somit auch das
538    OS der A\Box Speicherschutz besitzen. Inwieweit es Einzug in dem
539    auf diesen Unix-Kernel aufsetzen Amiga-OS einzug halten wird ist
540    mir[Sven] nicht bekannt.
541    (TODO: URL A\Box OS auf www.phase5.de)
542
543 F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
544 A: TODO: Tja, schreibt mal.
545
546 F: Laufen 32-Bit Windows 95 Programmen robuster als 16-Bit?
547 A: Ja, weil sich alle 16-Bit Programmen eine Speicherbereich teilen
548    ohne gegenseitig durch Speicherschutz voreinander geschützt zu sein,
549    während 32-Bit Programme jeweils einen eigenen geschützten Speicherbereich
550    für sich haben.
551
552
553 Stabile Betriebssysteme
554
555 F: OS xyz hat Speicherschutz und läuft trotzdem nicht stabil?
556 A: Nur das angegebene Feature "Speicherschutz" selbst garantiert noch kein
557    stabiles System. Speicherschutz selbst muß vollständig, gut und
558    fehlerlos im OS implementiert sein.
559
560 F: Ist es möglich ein stabiles OS ohne Speicherschutz zu implementieren?
561 A: Ja, stabil und robust sind zwei verschiedene Dinge. Stabil ist ein OS,
562    wenn es selbst in allen Situationen fehlerfrei läuft. Robust ist ein OS,
563    wenn es durch fehlerhafte Programme nicht zum Absturz gebracht werden
564    kann.
565
566 F: Ist das derzeitge Amiga OS 3.1 stabil?
567 A: Ja, das Amiga OS 3.1 ist recht stabil. Die Ursache von Abstürzen dürfte
568    in der Regel eher an einen Programm als am Amiga-OS liegen.
569
570
571
572 Virtual Memory
573
574 !F: Was ist Virtual Memory?
575 !A: Ohne Virtual Memory gibt es nur einen Adressraum und alle Programme
576 !  müssen sich diese einmal real vorhandenen 8MB, 16MB, 32MB etc.
577 !  an Speicher teilen. Bei Virtual Memory bekommt jedes Programm seinen
578 !  eigenen Adressraum - in der Regel in der Größe des Adressraums den
579 !  die CPU maximal verteilen kann. Bei einer CPU mit 32-Adressleitungen
580 !  wären dies 4GB. Diese sind natürlich nicht real als RAM vorhanden,
581 !  sondern werden mittels einer MMU auf real vorhandenen Speicher abgebildet,
582 !  für Programm 1 würde die virtuelle Adresse 1024 z.B. im real vorhandenen
583 !  Speicher bei 3000 liegen und für Programm 2 1024 bei 75 000. Für
584 !  die Software ist das egal, da die MMU automatisch diese Abbildung
585 !  übernimmt. Dank dieser virtuellen Adressen lassen sich Speicherbereiche
586 !  auch auf Festplatte auslagern, dadurch wird der Speicherbereich im
587 !  real vorhandenen RAM frei und kann anders genutzt werden bis der
588 !  ausgelagerte Speicherblock wieder gebraucht wird. Dafür wird dann ein
589 !  anderer gerade nicht benötigte Speicherblock auf die Festplatte
590 !  geschrieben wird und der vorher gerettete wieder ins RAM geladen. Dies
591 !  ist natürlich langsamer als wenn genügend RAM für alle Programme da wär
592 !  aber so lassen sich oft Programme, die große Datenmengen verarbeiten,
593 !  besser bzw. überhaupt erst nutzen als wenn diese Möglichkeit nicht
594 !  vorhanden wär.
595 !
596 !  TODO: Liste VM Implementationen für Amiga-OS
597
598 MMU
599
600 F: Was ist eine MMU?
601 A: Eine MMU(Memory Management Unit) teilt den real vorhandenen Adreßraum
602    in Seiten ein. Auf diese physikalisch vorhandenen Adressen kann eine MMU
603    logische Adressen abbilden(Virtual Memory) und den lesenden und
604    schreibenden Zugriff auf die einzelnen Seiten überwachen(Speicherschutz).
605
606 F: Welche 680x0 Prozessoren haben eine MMU?
607 A: Prozessor  MMU     Typenbezeichnung
608    ----------------------------------------------
609    68000      Ja      extern, TODO: Bezeichnung?
610    68010      Ja      extern, TODO: Bezeichnung?
611    68020      Ja      extern, PMMU 68851
612    68EC020    Nein    TODO: [Sven] soviel ich weiß
613    68030      Ja      intern
614    68EC030    Nein[1]
615    68040      Ja      intern
616    68LC040    Ja[2]   intern
617    68EC040    Nein
618    68060      Ja      intern
619
620
621    Kompabilität:
622      Die PMMU 68851 und die interne MMU des 68030 sind identisch. Die MMU
623      des 68040 und des 68060 haben gegenüber ihren jeweiligen Vorgängern
624      an Funktionalität verloren und sind nicht 100% kompatibel, so daß
625      Programme, die eine MMU nutzen und z.B. speziell für den 68030
626      geschrieben worden sind, mit den 68040/68060 nicht laufen oder
627      Probleme bereiten.
628
629    [1] Eine Reihe von 68EC030(die u.a. in Amigas verbaut worden sind)
630        besitzen eine scheinbar funktionierende MMU(Enforcer, VM-Programme
631        laufen). Allerdings ist bei diesen 68EC030'ern die MMU nicht
632        getestet worden, so gibt es keine Garantie dafür, daß die MMU
633        ordnungsgemäßt funktioniert - dies gilt insbesonders für den
634        Dauerbetrieb. Für kritische Aufgaben wie Speicherschutz und Virtual
635        Memory sind diese CPUs daher nicht geeignet.
636
637    [2] Ja, der 68LC040 hat eine MMU ihm fehlt gegenüber dem 68040 nur
638        die FPU - auch wenns oft anders angegeben wird.
639
640
641 Dank an
642   - Allen SchreiberInnen der aktuellen(Juli/August 1997) Speicherschutz
643     Threads in z-netz/rechner/amiga/allgemein, comp.sys.amiga.misc,
644     de.comp.sys.amiga.misc.
645
646   - Christian Stieber für seinen "Memory Protection for AmigaOS" Text von
647     dem u.a. der "F: Wo liegen die Probleme bei der Ergänzung des Amiga-OS
648     um Speicherschutz?" Teil zugute gekommen ist.
649
650 ! - Der Taskswitching Abschnitt basiert auf einen Posting von Timmo
651 !   Stange in z.r.a.a. Timmo, keine Ahnung ob meine Mail angekommen ist,
652 !   mir waren ein paar verloren gegangen.
653
654
655 Todo
656 <
657   - FTP als Quelle
658
659   - Mehr Literatur zum Thema Speicherschutz
660
661   - F: Welche Nachteile hat Speicherschutz???? - zusätzliche Erläuterungen
662
663   - F: Erhöht sich durch Speicherschutz die Anzahl von Fehlern in Programmen?
664     (TODO: Könnte man mit der vorigen Frage noch besser abgleichen)
665
666   - F: Wird das OS der A\Box Speicherschutz besitzen?
667     (TODO: URL A\Box OS auf www.phase5.de)
668
669   - F: In welchen Betriebsystemen ist Speicherschutz gut implementiert?
670     TODO: Tja, schreibt mal.
671
672 ! - F: Was ist Virtual Memory?
673 !   TODO: Liste VM Implementationen für Amiga-OS
674
675 ! - Enforcer, Mungwall
676
677
678 Brainstorm
679   F: Schutz vor Schreiben in nicht vorhandene Speicherbereiche.
680
681   F: Bricht/muß brechen Multithreading MP?
682
683   - Zwei virtuelle Adressen auf eine physikalische Adresse einmal zum
684     Lesen einmal zum Schreiben
685
686   - Erst dann Kopie von Speicherbereich anlegen, wenn anderer schreibend
687     darauf zugreift(Mach Kernel).
688
689
690 History
691   V0.2 24.09.1997 sven add: Legende
692                        add: F: Wo kann man die neueste Version dieser FAQ
693                                finden?
694                        add: Verschicken von übermäßig vielen Nachrichten
695                        add: Taskswitching
696                        add: Virtual Memory
697   V0.1 03.08.1997 sven first public release
698
699 </PRE>
700 </BODY)
701 </HTML>