For faster navigation, this Iframe is preloading the Wikiwand page for Systemprogrammierung.

Systemprogrammierung

aus Wikipedia, der freien Enzyklopädie

Als Systemprogrammierung bezeichnet man das Erstellen von Softwarekomponenten, die Teil des Betriebssystems sind oder die eng mit dem Betriebssystem bzw. mit der darunter liegenden Hardware kommunizieren müssen. Der Personenkreis, der Systemsoftware entwickelt, wird als Systemprogrammierer bezeichnet.

Systemnahe Software dient als Abstraktionsschicht zwischen einer Applikation und dem Betriebssystem. Diese Schicht erleichtert den Zugriff auf die sehr einfach gehaltenen Betriebssystemfunktionen. Aus Performance- und Sicherheitsgründen ist der Zugriff auf das Betriebssystem auf das Notwendige beschränkt. Der Programmierer muss sich selbst um Synchronisation (z. B. mittels Semaphore oder Shared Memory) und Interprozesskommunikation kümmern. Die Programmierung auf Betriebssystemebene ist dadurch umständlich und fehleranfällig.

Im Gegensatz dazu bevorzugen Applikationsentwickler Schnittstellen, die schnell, fehlertolerant und leicht zu verwenden sind. Bei Applikationsprogrammierern steht die Funktionalität im Vordergrund, während ein Systemprogrammierer Aspekte wie Effizienz und Robustheit besonders berücksichtigen muss. Alle Hochsprachen kapseln die Funktionen der Systemprogrammierung, was eine effektive Anwendungsprogrammierung mit hohem Abstraktionsgrad ermöglicht, jedoch im Bereich der systemnahen Programmierung nicht zielführend ist.

Ein weiteres Beispiel für systemnahe Anwendungen sind Datenbankmanagementsysteme. Datenbanken benötigen einen sehr schnellen Zugriff auf Hardwareressourcen. Der Umweg über die Entwicklungs-APIs ist dabei nicht nur ein zusätzlicher Kostenfaktor. Solche APIs sind für die Bedürfnisse bestimmter Applikationen auch ungeeignet. Implementierungen von Datenbanken bevorzugen daher, selbst direkt mit dem System zu kommunizieren.

Systemprogrammierung wird häufig in Sprachen wie C, C++ oder Assembler durchgeführt. Hochsprachen wie Pascal führen häufig zu großen und wenig effizienten Programmen, die für die systemnahe Programmierung ungeeignet sind. Ausnahmen bilden hier einige eingebettete Systeme, die direkt in Java programmiert werden können. C ist zwar selbst auch eine Hochsprache, bietet aber die Möglichkeit, Assembler-Befehle über Inline-Assembler direkt ins Hochsprachenprogramm einzubinden und z. B. Variablen direkt mit ihren symbolischen Namen abzufragen, die sonst umständlich über den Stapelspeicher übergeben werden müssten.

Systemprogrammierer

[Bearbeiten | Quelltext bearbeiten]

Systemprogrammierer sind Programmierer, die Systemsoftware entwickeln und warten. Dies geschieht zumeist im kommerziellen Rahmen.

Im Informatikstudium werden an vielen Universitäten die Inhalte der Systemprogrammierung gelehrt. Dies umfasst die Grundkenntnisse der maschinennahen Programmierung und des Aufbaus und der Funktionsweise von Betriebssystemen. Auch in der Ausbildung zum IT-Fachinformatiker und in ausgewählten Berufsfachschulen werden Systemprogrammierer im Rahmen der dualen Ausbildung ausgebildet.

Je nach Typ des Unternehmens haben Systemprogrammierer unterschiedliche Aufgaben:

  • Setzt das Unternehmen gekaufte Software (z. B. von einem Softwarehersteller) ein, hat der Systemprogrammierer die Aufgabe, die gekaufte Software so zu erweitern, zu verändern bzw. zu konfigurieren (Customizing), dass die Funktion der Software im Unternehmen eingesetzt werden kann.
  • Ist das Unternehmen ein Softwarehersteller, der Systemprogramme verkauft, oder ein Hardwarehersteller, der seine Geräte mit spezieller Systemsoftware ausliefert, hat der Systemprogrammierer die Aufgabe, die Systemprogramme zu entwickeln.

Im Gegensatz zum Anwendungsprogrammierer muss ein Systemprogrammierer fundierte Kenntnisse über die internen Abläufe innerhalb des Systems haben. Hierzu gehören unter anderem die Themen Prozessverwaltung und -synchronisierung, Speicherverwaltung, Semaphore, Dateisysteme, Eingabe- und Ausgabekanäle, Rechteverwaltung und Netzwerktechnik. Da Systemprogramme in vielen Fällen nicht über eine GUI verfügen, muss auf Betriebssicherheit und Fehlertoleranz besonders geachtet werden.

  • E. Ehses, L. Köhler, P. Riemer, H. Stenzel, F Victor: Systemprogrammierung in UNIX / Linux. Springer Verlag, 2012, ISBN 978-3-8348-8277-6.
  • Helmut Weber: Praktische Systemprogrammierung: Grundlagen und Realisierung unter UNIX und verwandten Systemen. Springer-Verlag, 2013, ISBN 978-3-663-05800-7.
{{bottomLinkPreText}} {{bottomLinkText}}
Systemprogrammierung
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?