Navigation
« 

Anonymous




Register
Login
« 
« 

Amiga Future

« 

Community

« 

Knowledge

« 

Last Magazine

The Amiga Future 167 was released on the March 5th.

The Amiga Future 167 was released on the March 5th.
The Amiga Future 167 was released on the March 5th.

The Amiga Future 167 was released on the March 5th.
More informations

« 

Service

« 

Search




Advanced search

Unanswered topics
Active topics
« 

Social Media

Twitter Amigafuture Facebook Amigafuture RSS-Feed [german] Amigafuture RSS-Feed [english] Instagram YouTube Patreon WhatsApp
« 

Advertisement

Amazon

Patreon

« 

Partnerlinks

Thomas Richter

Description: Amiga Aktuell Ausgabe 7/99

Categories: [DE] Interviews

Link to this article: Select all

[url=https://www.amigafuture.de/app.php/kb/viewarticle?a=1850&sid=b60127b91a9db1775ed3075240d99c30]Artikeldatenbank - Thomas Richter[/url]

Interview mit Thomas Richter, Entwickler der mmu.library

Thomas Richter werkelt derzeit an der mmu.library, die für Entwickler unentbehrlich werden könnte. Er hat den Sourcecode von Enforcer von Manfred Sinz erhalten, die Software als MuForce und den ersehnten und nie fertiggestellten GuardianAngel als MuGuardianAngel nachprogrammiert. Da sie von der MMU Gebrauch machen (mmu.library), übersteigen sie die alten Tools in ihrer Effizienz um Größenordnungen. Es könnte sogar von Speicherschutz gesprochen werden.

Thomas Richter:

Wenn ich hier schon mal dazwischenbrabbeln darf: (-: Ich würde nicht soweit gehen und von Speicherschutz sprechen. Unter Speicherschutz verstehe ich, dass Programm A nicht in den Daten von Programm B herumfuhrwerken kann, und umgekehrt. Leider ist das Amiga- Betriebssystem aber so aufgebaut, dass alle Programme auf einen gemeinsamen Speicherbereich zugreifen, man spricht auch von "shared memory". Das bedeutet insbesondere, dass ein Task problemlos Speicher allozieren kann, diesen an einen zweiten Task weiterreichen kann, und der Speicher dann von einem dritten Task freigegeben wird, ohne dass das OS von der Weitergabe der Resourcen erfahren muss. Die Effizienz des Amiga-OS begründet sich nicht zuletzt auf diesem Mechanismus - es müssen zur Kommunikation zwischen Prozessen, also Tasks, keine großen Datenmengen umgeschaufelt werden. Dies war bei der Einführung von AmigaOS auf einem einfachen 68000 mit 7MHz Takt von Bedeutung, an Speicherschutz hatte damals noch niemand denken wollen oder können - er lag in unnahbarer Ferne. Leider hat sich dieses Konzept heutzutage überlebt.

AMIGA aktuell:

Für den normalen User ist dies zwar keine Alternative, da das System durch dieses Tool stark abgebremst wird. Für Amiga-Softwareentwickler bedeutet dies jedoch ohne Frage eine Revolution. Unterstützt werden alle 68k-MMUs, von 68551 (020) bis 68060.

Thomas Richter:

Die Idee von MuGuardianAngel ist nicht neu, sie ist recht alt, und dieses Tool ist nicht die erste Implementierung der Idee, wie Sie ja schon oben bemerken. Die erste Version eines solchen Tools wurde seinerzeit von CBM intern verwendet, ich weiß aber nicht, wer das Programm geschrieben hat (Mike Sinz?).

Leider hat es nie richtig funktioniert und die Entwicklung wurde eingestellt, so dass sonst niemand - und ich schließe mich hier ein - dieses Programm jemals zu Gesicht bekommen hat. Im Cyberguard findet sich mit der "Guard"-Option ein ähnliches Werkzeug, und auf dem Aminet gibt es ebenfalls ein GuardianAngelRemix. Allerdings sind dies alles "stand-alone" Tools, die sich nicht in eine Reihe von untereinander kompatiblen Tools eingliedern lassen und die zum Teil nicht einmal, wie der Cyberguard, kompatibel zur eigenen Firmware sind - ppc.library und Cyberguard GUARD laufen nicht zusammen.

Ich denke, dass "Otto Normaluser" ein solches Tool normalerweise nicht verwenden wird, genausowenig wie er - oder sie - den Enforcer oder MuForce wird laufen lassen. Für Software-Entwickler ist es aber dennoch von einigem Interesse, so hoffe ich zumindest.

AMIGA aktuell:

Für User ist diese Library ebenfalls von großer Bedeutung. Viele Anwendungen/Tools werden durch diese Library erst sauber zu realisieren bzw. überhaupt erst ermöglicht werden.

Warum haben Sie sich entschieden, an der mmu.library 'rumzuwerkeln'?

Thomas Richter:

Die neueren Amiga-Modelle haben mit der MMU - und was das ist sage ich vielleicht unten - ein Stück Hardware, das sehr effizient zur Speicherverwaltung verwendet werden kann. Diverse Programme verwenden die MMU demgemäß für ihre Zwecke, angefangen mit dem Enforcer zum Aufspüren von Fehlern in der Software, weiterhin der OxxyPatcher, Systeme, die "virtuellen Speicher" implementieren, diverse Emulatoren und einiges mehr. Leider gibt es im gesammten Amiga-Betriebssystem keine dokumentierte Schnittstelle für diese Hardware, so dass Tool A nicht mit Tool B kompatibel ist und man nur mit etwas Glück eine hoffentlich einigermaßen stabile Konfiguration hinbekommt.

Die augenblickliche Situation ist etwa so absurd als würde man den Amiga ohne die Graphikbibliothek ausliefern und jedes Programm müsste seine Fenster selbst mit der Hardware malen. Es ist insofern nur zu leicht verständlich, dass das nicht wirklich klappen kann.

Was hat mich nun persönlich dazu bewogen, dies zu ändern? Nunja, als Mathematiker habe ich vielleicht ein berufsbegründetes Interesse an kniffligen Problemen und deren Lösung, vielleicht kann man es so ausdrücken. Das Problem ist einerseits schwierig genug, um interessant zu sein, und andererseits dringend genug, um gelöst zu werden. Für einen Hobbyprogrammierer reicht dies als Motivation aus. Würden wirtschaftliche Interessen eine Rolle spielen, so dürfte man heute auf dem Amiga wohl gar nichts mehr schreiben, so bedauerlich das ist.

AMIGA aktuell:

Was erhoffen Sie sich dadurch?

Thomas Richter:

Ein konsistentes Interface zur MMU und damit eine Serie von Tools und Applikationen, die für den Benutzer problemlos zusammenarbeiten - und nicht zuletzt habe ich wieder etwas zum Herumkniffeln lerne eine ganze Menge neues über die Hardware. Letztendlich bekomme ich auch Tools, die mir selbst bei der eigenen Entwicklerarbeit helfen.

AMIGA aktuell:

Seit wann entwickeln Sie an dieser Library?

Thomas Richter:

Die Idee zur mmu.library trage ich schon seit mehr als einem Jahr in meinem Kopf herum. Auslöser diese Library nun wirklich zu schreiben, war eine Diskussion in der News-Group comp.sys.amiga.programmer, insbesondere mit Karl Uwe Lockhoff und vielen mehr. Das Design der Library war knifflig genug, so dass ich erst nach gründlichem Überlegen im Herbst/Winter letzten Jahres damit angefangen habe, sie zu implementieren, und, dank vieler hilfsbereiter Leute, zu testen - an dieser Stelle nochmal einen herzlichen Dank an die Gemeinde netter Tester, deren Rechner und Festplatten ich in Beschlag nehmen durfte. Es wäre wohl weitaus schwieriger geworden!

AMIGA aktuell:

Werden alle 68k-MMUs vollständig unterstützt? Gibt es vielleicht kleine Einschränkungen? Nicht alle unsere Leser sind mit dem Begriff 'MMU' vertraut. Könnten Sie bitte kurz die Funktionsweise erläutern?

Thomas Richter:

Es werden alle verfügbaren Mc68Ks unterstützt, angefangen von der 68851, die externe MMU des 68020, bis zum 68060 - die Unterstützung der MMUs ist so komplett, wie ich sie machen konnte, angefangen von der Möglichkeit, mehrere MMU-Tabellen zu erstellen und damit jedem Task im Prinzip seinen eigenen Addressraum zu geben - interessant für Emulatoren z.B. - über die Programmierung der Seitengröße der MMU innerhalb des technisch Möglichen bis zur Verwaltung der MMU-Ausnahmezustände wie etwa ausgelöst durch Zugriffe auf geschützte Speicherbereiche. Z.B. enthält der "Enforcer" - oder "MuForce", wie das Programm jetzt heißt, enthält demnach keinerlei CPU/MMU spezifischen Code mehr, es verwendet allein ein konsistenten Softwarelayer der Library.

Da sich die einzelnen MMUs zum Teil etwas unterscheiden, gibt es natürlich ein paar Einschränkungen, das ist klar. Das Interface soll - muss - ja immer das gleiche bleiben, so dass ich zum Teil gewisse Features einer MMU auf einer anderen emulieren muss, sofern dies überhaupt möglich ist. Ohne jetzt wirklich ins Detail gehen zu wollen, sonst werde ich zu technisch, unterstützt die Library zum Beispiel keine der exotischeren Features der 68851-MMU, da diese auf keinem anderen Mitglied der MC68K-Familie auch nur annähernd vorhanden sind oder durch Trickserei eingebaut werden könnten. Für die oben genannten Applikationen sind diese Spezialitäten auch nur von geringem Interesse.

Eine weitere große Einschränkung ist die Unterstützung eines PPC mit der ppc.library, d.h. durch PowerUp. Da man sich seitens P5 geweigert hat, mir die ppc-Library-Internals zu dokumentieren, wird es hierzu entgegen meiner ursprünglichen Planung keinerlei Support geben. WarpUp wird im Gegensatz dazu jedoch unterstützt, einfach weil es sehr viel sorgfältiger und mit Bedacht implementiert ist, so dass ich mich letztendlich gar nicht um eine Sonderbehandlung des PPC habe bemühen müssen - es funktioniert "auch so". Da jedoch von Frank Wille eine Emulation der ppc.library für WarpUp entwickelt wird, stellt dies hoffentlich auch keine wirkliche Einschränkung dar.

Eventuell wird es auch Unterstützung für einen von der PPC CPU emulierte 68040 geben, sollte es überhaupt Bedarf für eine solche "Sonderbehandlung" geben.

Ein drittes Problem sind Festplattenkontroller mit DMA, die entgegen den Richtlinien gewisse Os-Funktionen nicht aufrufen. Für den Normalbetrieb der Library und der Tools ist dies relativ bedeutungslos, aber z.B.

Anwendungen, die etwa mit der MMU den Speicher defragmentieren, also eine effizientere Speicherverwaltung implementieren, werden dann mit diesen Boards nicht funktionieren - etwas dieser Art gibt es im Augenblick sowieso noch gar nicht.

Dies betrifft einerseits wieder die Boards von P5, sowie GVP-Adapter. Letztere können durch Aufrüsten mit dem Guru-ROM allerdings "MMU-tauglich" gemacht werden, nichtzuletzt weil sich Ralph Babel netterweise so hilfsbereit zeigte und mir einige Internals dokumentierte. Bekannte PIO- Adapter wie das bekannte oktagon.device von Oliver Kastl haben hiermit überhaupt keine Probleme, das Problem entsteht konstruktionsbedingt gar nicht.

Vielleicht nun zur letzten Frage, die ich zuerst hätte beantworten müssen:

MMU bedeutet "memory management unit", etwa "Einheit zur Speicherverwaltung".

Die MMU ist eine der eigentlichen Recheneinheit vorgeschaltete Logik - heutzutage meist in gleichen Chip untergebracht - die alle Speicherzugriffe abfängt, ggf. umlenkt, ggf. der CPU das Schreiben auf die Speicherbereiche verbietet, die Art, wie die CPU mit dem eingebauten Cache umgeht, kontrolliert und einiges mehr. Zugriffe der CPU auf den Speicher werden gewissermaßen durch die MMU "zensiert", so dass eine Speicheraddresse, wie sie einem Programm erscheint, nicht mit der physikalischen Speicheraddresse übereinstimmen muss, die auf dem Bus des Rechners zu sehen ist.

Die MMU kann somit etwa RAM auf die Addressen des Kickstart-ROMS "spiegeln" und damit langsamere ROM-Zugriffe durch schnellere RAM-Zugriffe erstetzen. Das bekannte "CPU FastROM" in der Startup-Sequence macht genau dies. Beim "Enforcer" wird z.B. der Zugriff auf nicht existente Speicherbereiche gesperrt, so dass fehlerhafte Software damit einen Ausnahmezustand auslöst und damit seinerseits den Enforcer zum "Meckern" bringt.

AMIGA aktuell:

Welche Rolle kann diese Library/die MMU für das AmigaOS spielen, da die Implementierung von z B. Speicherschutz eh nicht möglich ist?

Thomas Richter:

AmigaOS wird meiner Einschätzung nach sowieso keine Rolle mehr spielen, insofern wird die Library vermutlich auf dem "Hobby"-Niveau verbleiben. Ich würde mich natürlich über Interesse seitens kommerzieller Softwarehersteller freuen, aber aufgrund der Marktposition des Amigas halte ich das für extrem unwahrscheinlich.

Einerseits hilft die Library dem Entwickler durch Bereitstellen von entsprechenden Tools, andererseits hilft sie durch Bereitstellen von Funktionen, die bislang nur schwierig oder gar nicht, oder nur unter Kompatibilitätseinbußen zu erreichen waren. Typische Anwendungen der mmu.library - neben den oben genannten Entwicklertools - wären etwa Emulatoren oder Programme, die in einer "rauhen" Umgebung arbeiten müssen und demnach aktiv vor der Modifikation durch fehlerhafte Software - oder zum Teil sogar durch sich selbst - geschützt werden wollen. Debugger oder Mailbox-Systeme und Server kommen mir da in den Sinn. Dieser Schutz muss aber explizit von der mmu.library angefordert werden, erfolgt also nicht automatisch durch das Os, und erfordert ebenso eine geeignete Programmgestaltung. Ein gewisser Vorläufer zur Nachbearbeitung von Programmen liegt dem augenblicklichen Archiv in Form des "MuLink" Programmes bereits vor, allerdings erfolgt der Programmschutz nur soweit Kompatibilitätsprobleme dies zulassen und ist damit unvollständig. Letztendlich muss der Entwickler einer Software zur Library greifen und selbst tätig werden. AmigaOS lässt sich nachträglich ein *automatischer* Schutz nicht aufstülpen.

AMIGA aktuell:

Was exakt bedeutet die Library für den Entwickler und für den User (abgesehen von bugfreier Software)?

Thomas Richter:

Für den Entwickler schnelleres Finden von Fehlern, ganz klar. Für den User ein Bundle von "Power-Software", die garantiert zusammenarbeitet und sich nicht untereinander von den Resourcen abschneidet oder sich selbst auf die Füße trampelt.

Erste Schritte dazu gibt es bereits mit den "MuTools", einer der Distribution beigelegten Toolsammlung mit "typischen" MMU-Anwendungen vom ROM-Remapper bis zum Enforcer-artigen Debugging Tool.

Im Grunde genommen ist dies die Motivation der Library: Eine vernünftige Plattform schaffen, auf der aufbauend - entsprechend einer Graphikbibliothek - Applikationen miteinander die MMU ausnutzen und ausreizen können.

Letztendlich bedeutet das auch, dass sich Programmideen realisieren lassen, die vorher in dem Maße nicht möglich waren, oder nur mit einer ungleich längeren Entwicklungsarbeit und Spezialversionen für jeden Prozessor und jede Konfiguration. Dieser Entwicklungsvorteil ist dann letztendlich auch ein Vorteil für den "Endverbraucher", so hoffe ich zumindest.

AMIGA aktuell:

Wann wird es eine erste öffentliche Release geben?

Thomas Richter:

Die Releases sind bereits öffentlich auf meiner Homepage (http://www.math.tu-berlin.de/~thor/thor/index.html; Anm. d. Red.) abzugreifen, und die stabilieren Versionen erscheinen regelmäßig auf dem Aminet, wobei ich mich allerdings etwas zurückhalte. Ich möchte das Aminet einfach nicht mit "beta"-Software überschwemmen, einfach weil "beta = beta than nothing" für "Otto Normaluser" Enttäuschungen bedeuten können. Es ist einfach noch nicht alles in dem Maße getestet, wie es getestet sein sollte.

Vom Umfang der Library ist das augenblickliche Release - die 0.35 - schon komplett. Sollten sich nicht irgendwelche neuen Schwierigkeiten einstellen, so hoffe ich, dass eine Gamma-Version in einem Monat und die endgültige Version im August oder September verfügbar sein wird.

AMIGA aktuell: Welche Entwicklung kann man in Verbindung mit der mmu.library noch erwarten? Vielleicht eine memory.library, neue 680x0-Libs?

Thomas Richter:

Ich werde vermutlich noch eine "Virtual Memory" Applikation schreiben, die wieder auf einer Bibliothek aufbauen wird, dies ist die geplante "memory.library", die Sie erwähnen. Diese Bibliothek wird natürlich wieder auf der "mmu.lib" aufbauen. Auf der "memory.library" aufbauend plane ich einen VMM-artigen Patch, der "virtual memory" auch für die üblichen Applikationen bereitstellt, allerdings mit den damit verbundenen "Risiken und Nebenwirkungen", die ein solcher Patch mit sich bringt.

Ob es eine neue 68040.library geben wird, habe ich noch nicht entschieden. Im Prinzip wäre es nötig, da die augenblicklichen Versionen Dinge "doppelt" machen - eine rudimentäre MMU-Verwaltung nämlich - die die mmu.library besser und komfortabler erledigen kann. Gewisse Programmteile der 68040.library, wie z.B. die Emulation einiger FPU (Fließkomma) Befehle finden sich auf den Motorola-Seiten und liegen bereits auf meinem System. Ob ich mich einmal an die Implementierung wage, steht allerdings noch in den Sternen.

Eine 68060.library werde ich leider nicht schreiben können, da mir einfach ein entsprechendes '060-basiertes System fehlt - es war knifflig genug, den MMU-Support für einen Prozessor zu schreiben, den ich nicht habe und auf dem ich demnach nicht testen kann, nicht zu reden von dem Aufwand, die FPU-Emulation "blind" zu stricken. Das ist mir dann doch ein paar Nummern zu groß.

AMIGA aktuell:

Wird bzw. könnte es einen PowerPC-Port geben?

Thomas Richter:

Ja und nein. Ich denke, ich werde versuchen, die mmu.library unter einer PPC-Emulation zum Laufen zu bekommen. Dazu sollte nicht allzuviel zu tun sein, da die von Sam Jordan entwickelte 68040-Emulation sehr vollständig ist - vermutlich beschränkt es sich auf das Anpassen einiger Details in der Verwaltung von MMU-Ausnahmezuständen, wenn ich überhaupt irgendetwas anpassen muss.

Es wird aber vermutlich keine mmu.library auf der PPC-Seite geben, einfach weil WarpOS schon selbst Funktionen zur Programmierung der MMU bereitstellt und die Library damit einfach unnötig ist. Über den Umfang der MMU- Unterstützung seitens WarpOs kann ich allerdings recht wenig sagen, da ich mich noch nicht eingehend damit beschäftigt habe, wie die PPC MMU funktioniert. Sie unterscheidet sich von der MC68K MMU konzeptionell doch ein wenig, insofern lassen sich die Designgrundlagen der mmu.library nicht notwendig vollständig auf den PPC übertragen.

AMIGA aktuell:

Vielen Dank für das Interview. Ich wünsche Ihnen alles Gute!

Thomas Richter:

Vielen Dank auch für Ihr Interesse und weiterhin viel Spaß!

Das Interview wurde geführt von Sofiane Ben Hassine.