TOPSY
TOPSY (a Teachable OPerating SYstem) ist ein multithreaded, sehr portables Betriebssystem, welches an der Eidgenössischen Technischen Hochschule (ETH) Zürich am Computer Engineering und Networks Laboratory entwickelt wurde.
Der Kernel ist ein von George Fankhauser in ISO-C geschriebener multithreaded Mikrokernel, welcher zirka 20 KB umfasst. TOPSY bietet Einblicke in die Bereiche Nebenläufigkeit, Treiberprogrammierung und Betriebssystemkonzepte und wird deshalb ausschließlich für Unterrichtszwecke verwendet. Obwohl TOPSY portabel ist, wurde die eigentliche hardwareabhängige Implementation ursprünglich für die Plattform IDT MIPS R3052E geschrieben. In verschiedenen Semester- und Diplomarbeiten wurde TOPSY auf eine PC-kompatible (Lukas Ruf und George Fankhauser), Palm-V- (Gabriele Giambonini und Lukas Ruf), IXP1200- (David Reist, Silvio Dragone, Boris Lutz, Claudio Jeker und Lukas Ruf) und HP-iPAQ-Plattform (Thomas Brunner und Lukas Ruf) portiert.
TOPSY zeichnet sich durch folgende Eigenschaften aus:
- Einfachheit: Im Gegensatz zu mächtigen Kernels wird TOPSY bewusst einfach gehalten. Dies gilt insbesondere für die Algorithmen, da sie nicht auf Geschwindigkeit optimiert sind.
- Lesbarkeit: Der Betriebssystemcode ist einfach lesbar, es wird nur das Minimum an nötiger Hardware unterstützt
- Hardware-Unabhängigkeit: Da TOPSY einfach gehalten wird, ist die Portierung auf andere Systeme einfacher
- Transparenz: Das Betriebssystem ist für Lernzwecke sauber geschrieben und nicht auf Effizienz optimiert
Moderne Betriebssystemkonzepte wurden in der Diplomarbeit von Boris Lutz und Claudio Jeker zu TOPSY v3 unter der Leitung von Lukas Ruf umgesetzt. TOPSY v3 unterstützt u. a. folgende Konzepte:
- Priorisierbare Protection Domains
- Dynamisch aus Komponenten zusammensetzbarer Netzwerkstack
- Nachladen von Komponenten
- Effiziente Inter-Protection-Domain-Kommunikation
Die Lehre und Forschung mit TOPSY wird durch MIPS-R3052E-Emulatoren unterstützt. Ein plattformunabhängiger, Java-basierter Emulator (George Fankhauser) und ein hinsichtlich Ausführungsgeschwindigkeit optimierter, modularer C++-basierter (GNU C++) (Florian Kaufmann und Lukas Ruf) stehen zur Verfügung.
TOPSY wird an der ETH Zürich und verschiedenen Universitäten in Europa und Australien in der Lehre eingesetzt. Eine mehr als 70-seitige Dokumentation und Übungsunterlagen stehen zur Verfügung. Eine Mailingliste<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20060529201524
| {{#ifeq: 20060529201524 | *
| {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20060529201524}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2019-05-17 01:28:16 InternetArchiveBot | 2019-05-17 01:28:16 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20060529201524}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2019-05-17 01:28:16 InternetArchiveBot | 2019-05-17 01:28:16 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2019-05-17 01:28:16 InternetArchiveBot | 2019-05-17 01:28:16 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }} ({{#if: {{#if: 2019-05-17 01:28:16 InternetArchiveBot | 2019-05-17 01:28:16 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Mailingliste | {{#invoke:WLink|getEscapedTitle|Mailingliste}} | {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/}} }}
}}}}}}}}{{#if:2019-05-17 01:28:16 InternetArchiveBot
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20060529201524|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.topsy.net/mailman/listinfo/topsy/}}
|| {{#if: || }}
}}{{#if: Mailingliste
| {{#if: {{#invoke:WLink|isBracketedLink|Mailingliste}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.topsy.net/mailman/listinfo/topsy/%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.topsy.net/mailman/listinfo/topsy/%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.topsy.net/mailman/listinfo/topsy/ }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref> sowie ein Wiki-FAQ<ref>{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://topsyfaq.virtualwiki.net/
| {{#if: FAQ | FAQ }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: 2019-05 | , festgestellt im {{#invoke:DateTime|format|2019-05|F Y}} }}. Suche im Internet Archive ){{#if: 2019-05-17 01:28:16 InternetArchiveBot
| {{#if: | | Vorlage:Toter Link/archivebot }}
}}
| (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: 2019-05 | , festgestellt im {{#invoke:DateTime|format|2019-05|F Y}} }}.)
}}{{#switch:
|no|0|=
|#default={{#if: || }}
}}{{#invoke:TemplatePar|check
|opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
|errNS = 0
|template = Vorlage:Toter Link
|format =
|preview = 1
}}{{#if: http://topsyfaq.virtualwiki.net/
| {{#if:{{#invoke:URLutil|isWebURL|http://topsyfaq.virtualwiki.net/}}
|| {{#if: || }}
}}
| {{#if: FAQ
| {{#if: || }}
| {{#if: || }}
}}
}}{{#if: 2019-05
| {{#if:{{#invoke:DateTime|format|2019-05|F Y|noerror=1}}
|| {{#if: || }}
}}
}}{{#switch:
|checked|deadurl|=
|#default= {{#if: || }}
}}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://topsyfaq.virtualwiki.net/ Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: 2019-05 | , festgestellt im {{#invoke:DateTime|format|2019-05|F Y}} }}. (Suche im Internet Archive. ) {{#if: 2019-05-17 01:28:16 InternetArchiveBot
| {{#if: | | Vorlage:Toter Link/archivebot }}
}}Vorlage:Toter Link/Core{{#switch:
|no|0|=
|#default= {{#if: || }}
}}{{#invoke:TemplatePar|check
|all = inline= url=
|opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
|errNS = 0
|template = Vorlage:Toter Link
|format =
|preview = 1
}}{{#if: http://topsyfaq.virtualwiki.net/
| {{#if:{{#invoke:URLutil|isWebURL|http://topsyfaq.virtualwiki.net/}}
|| {{#if: || }}
}}
}}{{#if: 2019-05
| {{#if:{{#invoke:DateTime|format|2019-05|F Y|noerror=1}}
|| {{#if: || }}
}}
}}{{#switch:
|checked|deadurl|=
|#default= {{#if: || }}
}}[http://topsyfaq.virtualwiki.net/ }}</ref> unterstützen den Erfahrungsaustausch.
Einzelnachweise
<references/>
Weblinks
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Betriebssystem
- Abkürzung