Systemprogrammierung - Systems programming

Systemprogrammierung oder Systemprogrammierung ist die Aktivität des Programmierens Computersystemsoftware . Das primäre Unterscheidungsmerkmal der Systemprogrammierung , wenn sie im Vergleich Anwendungsprogrammierung ist , dass Anwendungsprogrammierung Ziele zu produzieren Software , die direkt Dienste für den Benutzer bereitstellt (zB Textverarbeitung ), während der Systemprogrammierung Ziele zu produzieren Software und Software - Plattformen , die Dienste für andere Software zur Verfügung stellen, sind leistungsbeschränkt oder beides (z. B. Betriebssysteme , wissenschaftliche Computeranwendungen , Spiele-Engines , industrielle Automatisierung und Software-as-a-Service- Anwendungen).

Die Systemprogrammierung erfordert ein hohes Maß an Hardware-Bewusstsein. Ihr Ziel ist es, die verfügbaren Ressourcen effizient zu nutzen, entweder weil die Software selbst leistungskritisch ist oder weil sich selbst kleine Effizienzsteigerungen direkt in erhebliche Zeit- oder Geldeinsparungen wandeln.

Überblick

Die folgenden Attribute kennzeichnen die Systemprogrammierung:

  • Der Programmierer kann Annahmen über die Hardware und andere Eigenschaften des Systems treffen, auf dem das Programm läuft, und wird diese Eigenschaften oft ausnutzen, beispielsweise indem er einen Algorithmus verwendet , der bekanntermaßen effizient ist, wenn er mit spezifischer Hardware verwendet wird.
  • Normalerweise wird eine Low-Level-Programmiersprache oder ein Programmiersprachen-Dialekt verwendet, damit:
    • Programme können in Umgebungen mit eingeschränkten Ressourcen ausgeführt werden
    • Programme können mit geringem Laufzeit- Overhead effizient sein , möglicherweise mit einer kleinen oder gar keiner Laufzeitbibliothek
    • Programme können direkte und "rohe" Kontrolle über den Speicherzugriff und den Kontrollfluss verwenden
    • Der Programmierer kann Teile des Programms direkt in Assembler schreiben
  • Oft können Systemprogramme nicht in einem Debugger ausgeführt werden . Das Ausführen des Programms in einer simulierten Umgebung kann manchmal verwendet werden, um dieses Problem zu reduzieren.

Die Systemprogrammierung unterscheidet sich so stark von der Anwendungsprogrammierung, dass Programmierer dazu neigen, sich auf das eine oder das andere zu spezialisieren.

Bei der Systemprogrammierung stehen oft begrenzte Programmiermöglichkeiten zur Verfügung. Die Verwendung der automatischen Garbage Collection ist nicht üblich und das Debuggen ist manchmal schwierig. Die Laufzeitbibliothek ist , sofern überhaupt verfügbar, in der Regel weitaus weniger leistungsfähig und führt weniger Fehlerprüfungen durch. Aufgrund dieser Einschränkungen werden häufig Überwachung und Protokollierung verwendet; Betriebssysteme können extrem ausgeklügelte Logging-Subsysteme haben.

Die Implementierung bestimmter Teile in Betriebssystemen und Netzwerken erfordert eine Systemprogrammierung, beispielsweise die Implementierung von Paging ( virtuellem Speicher ) oder eines Gerätetreibers für ein Betriebssystem.

Geschichte

Ursprünglich schrieben Systemprogrammierer ausnahmslos in Assembler . Experimente mit Hardwareunterstützung in Hochsprachen in den späten 1960er Jahren führten zu Sprachen wie PL/S , BLISS , BCPL und erweitertem ALGOL für Burroughs große Systeme . Forth hat auch Anwendungen als Systemsprache. In den 1970er Jahren wurde C , unterstützt durch das Wachstum von Unix , allgegenwärtig . In jüngerer Zeit hat eine Teilmenge von C++ namens Embedded C++ einige Verwendung gefunden, beispielsweise wird sie in den I/O-Kit-Treibern von macOS verwendet .

Alternative Nutzung

Aus historischen Gründen verwenden einige Organisationen den Begriff Systemprogrammierer , um eine Jobfunktion zu beschreiben, die genauer als Systemadministrator bezeichnet wird . Dies gilt insbesondere für Organisationen, deren Computerressourcen in der Vergangenheit von Mainframes dominiert wurden , obwohl der Begriff sogar verwendet wird, um Jobfunktionen zu beschreiben, die keine Mainframes beinhalten. Diese Verwendung entstand, weil die Verwaltung von IBM-Mainframes oft das Schreiben von benutzerdefiniertem Assembler-Code ( IBMs Basic Assembly Language (BAL)) erforderte, der in Betriebssysteme wie OS/MVS , DOS/VSE oder VM/CMS integriert wurde . Tatsächlich hatten einige IBM Softwareprodukte erhebliche Codebeiträge von Programmierern der Kunden. Diese Art der Programmierung wird immer weniger verbreitet, aber der Begriff Systemprogrammierer ist immer noch die De-facto-Berufsbezeichnung für Mitarbeiter, die direkt IBM-Mainframes verwalten.

Siehe auch

Verweise

Weiterlesen