|
Systemsoftwaretechnik (SST)7.5 ECTS (englische Bezeichnung: Systems Software Engineering)
(Prüfungsordnungsmodul: Vertiefungsmodul Verteilte Systeme und Betriebssysteme)
Modulverantwortliche/r: Daniel Lohmann Lehrende:
Wolfgang Schröder-Preikschat, Daniel Lohmann
Startsemester: |
SS 2015 | Dauer: |
1 Semester | Turnus: |
jährlich (SS) |
Präsenzzeit: |
90 Std. | Eigenstudium: |
135 Std. | Sprache: |
Deutsch |
Lehrveranstaltungen:
-
-
Betriebssystemtechnik
(Vorlesung, 2 SWS, Wolfgang Schröder-Preikschat et al., Di, 14:15 - 15:45, 0.031-113)
-
Übungen zu Betriebssystemtechnik
(Übung, 2 SWS, Gabor Drescher et al.)
-
Konfigurierbare Systemsoftware
(Vorlesung mit Übung, 2 SWS, Daniel Lohmann et al., Mo, 12:15 - 13:45, 0.031-113; Einzeltermin am 17.4.2015, 15:15 - 16:00, H4; ab 17.4.2015; Erste Vorlesung abweichend am 17.4. als Antrittsvorlesung im Rahmen des "Tag der Informatik")
-
Übungen zu Konfigurierbare Systemsoftware
(Übung, Gabor Drescher et al., Der Präsenzteil der Übungen findet gemeinsam mit den Übungen zu Betriebsystemtechnik statt!)
Empfohlene Voraussetzungen:
Es wird empfohlen, folgende Module zu absolvieren, bevor dieses Modul belegt wird:
Betriebssysteme-V+Ü (WS 2014/2015)
Systemprogrammierung (SS 2013)
Inhalt:
Schwerpunktthema der Veranstaltung ist die Verwaltung von Prozessadressräumen. Untersucht werden Verfahren und Techniken zur Trennung logischer Adressräume, zum Adressraumgrenzen überschreitenden Zugriff und zum Schutz von Prozessen. Vorgestellt wird die Implementierung von Systemaufrufen und seiten- wie auch segmentbasierte Techniken zur Abbildung logischer/virtueller Adressräume auf reale. Vor diesem Hintergrund werden verschiedene Betriebssystemarchitekturen verglichen und gängige Adressraummodelle von Betriebssystemen erläutert.
Letztlich sind Architektur und Abstraktionen des "idealen Betriebssystems" immer abhängig von der konkreten Anwendung und Hardware. Im Rahmen der Lehrveranstaltung werden daher außerdem moderne Methoden zum Entwurf und zur Implementierung von Software-Produktlinien betrachtet. Dabei wird ein besonderes Augenmerk auf die Eignung im Bereich von eingebetteter Systemsoftware gelegt, welche nicht nur schön, d. h. zum Beispiel wartungsfreundlich, sondern vor allem schlank, d. h. klein im Ressourcenverbrauch, sein muss.
Lernziele und Kompetenzen:
Studierende, die das Modul erfolgreich abgeschlossen haben:
erläutern und implementieren Entwurfsprinzipien für Systemaufrufe und diskutieren deren spezifischen Vor-/Nachteile.
vergleichen grundlegende BS-Architekturen (Monolith, Mikrokern, Makrokern, Exokern) anhand fundamentaler Charakteristika (Robustheit, Performanz, Portierbarkeit) und deren Einfluss auf die Implementierung von Mechanismen (Systemaufrufe, Addressraumschutz).
unterscheiden Hierarchiekonzepte des Softwareentwurfs (Benutzthierachie, funktionale Hierachie) und erläutern deren Implikationen beim Betriebssystementwurf.
klassifizieren Schutz-, Verwaltungs-, und Virtualisierungstechniken für Programmzustände (Seitennummerierung, Segementierung, Sprachbasierung, Capabilities) und implementieren diese auf der IA-32-Architektur
Diskutieren Adressraummodelle (Mehradressraummodell, Einadressraummodell, mehrstufige und inverse Seitenabbildungen, Mitbenutzung) und deren Implementierbarkeit auf gängigen Hardwarearchitekturen.
Implementieren Mechanismen und Abtraktionen zur Interprozesskommunikation.
Diskutieren das Zusammenspiel zwischen Kommunikation und Synchronisation im Bezug auf die besonderen Herausforderungen bei der Implementierung von Betriebssytemabstraktionen (lost wakeup, lost update, gepufferte/ungepufferte Zugriffe)
Diskutieren Prinzipien der Mitbenutzung von Code und Daten unter Berücksichtigung der Betriebssystem- und Addressraumarchitektur.
Erläutern die Funktionsweise eines Bindeladers und skizzieren effiziente Implementierungstechniken für positionsunabhängige Strukturen.
Erläutern Prinzipien der produktlinienbasierten Entwicklung statisch konfigurierbarer Systemsoftware.
Beherrschen Prinzipen des merkmalbasierten Softwareentwurfs (FODA) und die Modellierung einer Domäne mit Merkmalmodellen.
Unterscheiden Implementierungstechniken für statische Variabilität in Systemsoftware (dekompositional, kompositional, generativ) und deren spezifischen Vor-/Nachteile.
Verstehen und erläutern am Beispiel von Linux die softwaretechnischen Herausforderungen bei der Entwicklung hochgradig konfigurierbare Systemsoftware.
Implementieren Konfigurationsoptionen im Betriebssystem mit Hilfe aspektorientieter Entwurfs- und Programmiertechniken.
Beherschen die Sprache AspectC++ und setzen sie zielgerichtet zur Implementierung konfigurierbarer Systemabstraktionen ein.
erschließen sich typische Probleme (Nebenläufigkeit, Compilerverhalten, Debuggen ohne dedizierte Hilfsmittel) und Fehlerquellen bei der hardwarenahen Softwareentwicklung.
können in Kleingruppen kooperativ arbeiten.
können die ihre Entwurfs- und Implementierungsentscheidungen kompakt präsentieren und argumentativ vertreten.
reflektieren ihre Entscheidungen kritisch und leiten Alternativen ab.
können offen und konstruktiv mit Schwachpunkten und Irrwegen umgehen.
Literatur:
- Wolfgang Schröder-Preikschat. The Logical Design of Parallel Operating Systems. Prentice Hall.
Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language. Prentice Hall.
David M. Weiss, Chi Tau Robert Lai. Software Product-Line Engineering: A Family-Based Software Development Process. Addison-Wesley.
Krysztof Czarnecki, Ulrich W. Eisenecker. Generative Programming. Methods, Tools and Applications. Addison-Wesley.
Bjarne Stroustrup. The C++ Programming Language. Englewood Cliffs.
Richard M. Stallman. Using GCC: The GNU Compiler Collection Manual. GNU Press.
Robert Mecklenburg. Managing Projects with GNU Make. O’Reilly.
Richard M. Stallman, Roland Pesch, Stan Shebs. Debugging with GDB: The GNU Source-Level Debugger. GNU Press.
Weitere Informationen:
www: http://www4.informatik.uni-erlangen.de/Lehre/SS15/V_KSS/
Verwendbarkeit des Moduls / Einpassung in den Musterstudienplan:
- Informatik (Master of Science)
(Po-Vers. 2010 | Wahlpflichtbereich | Säule der systemorientierten Vertiefungsrichtungen | Vertiefungsmodul Verteilte Systeme und Betriebssysteme)
Studien-/Prüfungsleistungen:
Systemsoftwaretechnik (Vorlesungen mit Übungen) (Prüfungsnummer: 701398)
(englischer Titel: Systems Software Engineering)
- Prüfungsleistung, mehrteilige Prüfung, benotet
- Anteil an der Berechnung der Modulnote: 100.0 %
- weitere Erläuterungen:
30-minütige mündliche Prüfung + erfolgreiche Teilnahme an den Übungen + erfolgreiche Bearbeitung aller Übungsaufgaben
- Erstablegung: SS 2015, 1. Wdh.: WS 2015/2016
1. Prüfer: | Daniel Lohmann |
|
![](/img/anew/void.gif) |
![](/img/anew/void.gif) |
|
UnivIS ist ein Produkt der Config eG, Buckenhof |
|
|