| Carl-Friedrich-Gauß-Fakultät | Informatik

Seminar Verteilte Systeme: Systems programming (Bachelor)

SemesterSommersemester 2019 [ Andere Semester: · Winter 18/19 · Sommer 18 · Winter 17/18 · Sommer 17 · Winter 16/17 · Winter 15/16 · Sommer 15 · Winter 14/15 · Sommer 14 · Sommer 13 · Sommer 12 ]
Studieng.Bachelor Informatik, Bachelor Informations-Systemtechnik, Bachelor Wirtschaftsinformatik
IBR Gruppe(n)DS (Prof. Kapitza)
PhotoProf. Dr. Rüdiger Kapitza
+49 531 3913294
Raum 135
PhotoInes Messadi
Wissenschaftliche Mitarbeiterin
+49 531 3913295
Raum 117
Ort & Zeit

*Kick-Off Meeting* Dienstag, 09.04.2019, 12:00 Uhr, IZ 105

Wöchentliches Treffen: TBA, IZ 105

Scheinerwerb Abgabe der Ausarbeitung, Programmierauftrag und erfolgreiche Präsentation. Die Note ist sowohl von der Beteiligung im Seminar als auch der Qualität der Ausarbeitung und Präsentation abhängig.
Inhalt The seminar is dedicated to exploring systems programming in a well-established environment. It will address problems of programming, tools and modern hardware. The topics covered in the seminar will include:
  • Modern Hardware: RDMA, Transactional memory
  • Trusted Execution: SGX, AMD SME, TrustZone
  • Tools: Pin tool, LLVM
  • OS examples: Linux drivers, Genode, PineOS
  • Virtualization


1) Using Remote Direct Memory Access (RDMA) efficiently to enable a fast network communication

RDMA is a technology that enables direct data movement between the memory of remote computers in a zero-copy manner, without the support of the operating system. Consequently, it helps to reduce the CPU load and to decrease the network overhead.

Task: Explain how to enable an RDMA-based network communication and implement a sample application using C or C++.


2) How to secure applications using SGX?

In the last years, cloud computing faced trust issues for applications managing sensitive data. To address this, Intel developed Software Guard Extensions (SGX) which allows the creation of one or more trusted execution environments inside an application, guarded against unauthorized accesses by higher privileged code and attackers.

Task: Explain how to secure applications using SGX and implement a sample application using C/C++.


3) How to update data in a distributed system via Conflict-free Replicated Data Types (CRDTs)?
Task: Explain how CRDT replication works and implement a sample application using C or C++. This includes to explore a few different CRDTs and show their benefits compared to traditional solutions. Also, it would be of interest to show how they are used in industry, examples include Redis, Riak, and Facebook.


4) Lessons learned from building applications completely in Rust
Task: In the last year, there has been a lot of interest to Rust programming language, which promises security properties and is claimed to be the next fastest language. Your task is to explain what features Rust provides, and implement a benchmark comparing its performance with the C language.


5) Understanding Transactional Memory
Task: Transactional Memory is a general concurrency mechanism that uses transactions instead of locks with a strong guarantees of no parralelism issues (deadlocks, race conditions, etc). Your task is to present a hands-on result from using a TM library, and explain its benefits over the usual mutex and locks mechanisms.


6) How to implement fundamental operating system services?
Task: The idea is to present the fundamentals to implement operating system services, such as device drivers, file systems, multi-tasking processing and to rely on educational Unix-like OS such as MINIX.


7) How to implement a Linux device driver?
Task: The role of a driver is provide mechanisms to users to access particular protected part of hardware. Your task is to present hands-on results of how we can implement a linux device driver in order to gain access to a particular device that is of interest.


8) Atomic operations, from basics to advanced
Task: When parallel threads are accessing data, mutual exclusion prevents data races. Atomic operations are alternatives to locks, relatively quick and do not suffer from deadlocks. Your task is to present hands-on results explaining atomic operations from basics to advanced.


9) Using Rust SGX SDK
Task: Exploring the Rust SGX SDK that connects Intel SGX and Rust programming language


Das Seminar

Die Präsentation und die Ausarbeitung muss auf Englisch vorbereitet werden. Jeder Teilnehmer übernimmt die Veröffentlichung(en) eines Themas. Alle Teilnehmer erstellen ein Peer Review, dazu gehört:

  • Besuch des Probevortrags des Peers inklusive Feedback
  • Review der Ausarbeitung der Peers vor der Abgabe.
  • Machen Sie mit, indem Sie Fragen stellen und zur Diskussion beitragen.


Die abzugebenden Dokumente umfassen die Ausarbeitung und einen Foliensatz:

  • Präsentation und Ausarbeitung auf Englisch.
  • Programmierauftrag.
  • Präsentationszeit ca. 25 Minuten.
  • Länge der Ausarbeitung ca. 4 Seiten.

Jeder Teilnehmer sollte auf seinem Paper aufbauende Veröffentlichungen studieren. Die Seminarbetreuer können bei der Themenfindung helfen.

An der Universität werden akademische und persönliche Integrität groß geschrieben. Dementsprechend muss die Ausarbeitung in eigenen Worten erfolgen. Plagiate verstoßen gegen die Prüfungsordnung.


Das LaTeX Template für die Ausarbeitung findet sich hier.

Zusätzliche Anregungen zur Ausarbeitung finden sich hier.

LaTeX Templates für den Foliensatz befinden sich hier.


Hilfestellung zum Seminar:

Für die Literaturrecherche können folgende Links hilfreich sein:

(La)TeX Tips + Tricks

aktualisiert am 30.01.2019, 09:03 von Ines Messadi