1006 - 1.2 Dynamische Speicherverwaltung: Portabilität DEPRECATED [ID:15180]
50 von 65 angezeigt

Während der Übersicht über Systemprogrammierung in der ersten Tafelübung kam es schon der

Punkt zur Sprache, dass wir von euch verlangen, portable Programme zu schreiben.

Jetzt wollen wir ein bisschen darauf eingehen, was überhaupt ein portables Programm ist.

Damit ein Programm portable ist, muss es sich an eine definierte Schnittstelle halten.

Das hat zur Folge, dass das Programm überall da ausgeführt werden kann, wo diese Schnittstelle

implementiert ist.

Die Schnittstellen, an die wir uns in Systemprogrammierung richten, sind auf der einen Seite die Programmiersprache

C selbst, und zwar in der Version C11.

Hier wird der Sprachumfang der Sprache C definiert, sowie eine Liste der Standardbibliotheksfunktion

definiert.

Dazu gehören zum Beispiel die Printf-Funktion oder malloc.

Und wir halten uns an die Single Unix Specification, die eine Schnittstelle des Betriebssystems

vorgibt.

Diese Schnittstelle wird zum Beispiel implementiert durch verschiedene Unixe, zum Beispiel Solaris,

aber auch andere Betriebssysteme, zum Beispiel Mac OS, die verschiedenen BSD-Derivate, aber

auch Linux.

Damit können die Programme, die ihr in der Systemprogrammierung schreibt, unter allen

zuvor genannten Betriebssystemen ausgeführt werden.

Was in der Auflösung gefehlt hat, ist das Betriebssystem Windows von Microsoft.

Unter Windows ist es schwieriger, für die Single Unix Specification zu programmieren

und die Programme zur Ausführung zu bringen.

Auf der einen Seite fehlt es an einem C11-Compiler, da der von Microsoft bereitgestellte Compiler

kein C11 kann, aber dem kann man sich abhelfen, indem man einfach den GCC unter Windows verwendet.

Die Single Unix Specification ist hier schon das größere Problem, da diese von Microsoft

Windows nicht unterstützt wird.

Um sich dazu zu behelfen, kann man jedoch die Unix-Kompatibilitätsschicht Cyquin verwenden,

die die Betriebssystemschnittstelle zu Unix nachimplementiert.

Generell ist aber zu empfehlen, für die Entwicklung ein Linux-Betriebssystem zu nutzen.

Recht neu seit Windows 10 ist auch die Möglichkeit, die WSL zu verwenden.

Damit kann unter Windows ein vollwertiges Linux verwendet werden.

Da wir am Lehrstuhl aber nur wenig Erfahrung mit der WSL haben, fordern wir weiterhin von

euch, dass die Zip-Rechner als Referenzsystem genutzt werden.

Das heißt, alle Programme, die ihr in SP schreibt, müssen auf den Zip-Rechnern auf der einen

Seite kompilieren, aber auch richtig ausführbar sein.

Damit stellt sich die Frage, wie wir überhaupt durchsetzen, dass diese Anforderungen gewährleistet

sind.

Wir fordern von euch, dass ihr C11-Programme schreibt und dass ihr die Single Unix Specification

beachtet.

Um dies sicherzustellen, müsst ihr beim Aufruf des Compilers folgende Optionen mit angeben,

die den Compiler dazu anweisen, genau diese Anforderungen auch durchzusetzen.

Das heißt, wir setzen einmal bindestrich std="c11", damit nur C11-konforme Programme erlaubt sind.

Und mit der Option dx-open-source kann durchgesetzt werden, dass alle Aufrufe ans Betriebssystem

der Single Unix Specification entsprechen.

Ergänzend dazu verwenden wir die vorhin schon angemerkten Optionen bindestrich w-all, damit

sämtliche Fehler hervorgehoben werden, und bindestrich w-error, damit diese zu einem

Programmabbruch führen.

An der Stelle sei noch angemerkt, dass es sehr wohl wichtig ist, die Option w-all für

Portabilität zu verwenden.

Denn wenn ihr die Warnings einschaltet, weist euch der Compiler darauf hin, wenn ihr undefiniertes

Verhalten in eurem Programm habt.

Teil einer Videoserie :
Teil eines Kapitels:
DEPRECATED

Zugänglich über

Offener Zugang

Dauer

00:04:36 Min

Aufnahmedatum

2020-05-06

Hochgeladen am

2020-05-07 00:16:40

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen