Ich habe nie verstanden, was Systemprogrammierung bedeutet. Die übliche Definition lautet "... etwas in der Nähe des Betriebssystems tun oder die Betriebssystemfunktionen erweitern ...".
Wird die Windows-API direkt verwendet, anstatt dass einige Bibliotheken sagen, dass die Datei für die Systemprogrammierung erforderlich ist? Schreiben Sie eine Android OS-Systemprogrammierung? Wenn ich etwas schreibe, das den Linux-Kernel über eine Konsole wie eine App auf Android verfügbar macht, mache ich dann Systemprogrammierung? Wenn ich Software zur Steuerung einer Waschmaschine schreibe, schreibe ich dann Systemprogrammierung?
Ich bin ein Anfänger in der Programmierung und das verwirrt mich bis zum Äußersten. Bitte erläutern Sie den Kontrast zur "Anwendungsprogrammierung".
quelle
Antworten:
Mir persönlich gefällt die Definition von Wikipedia :
quelle
Es gibt mehrere Fragen, die Sie sich stellen können, um die Entscheidung für diese Frage zu üben.
troff
wurden mit wenigen Änderungen auf praktisch jedes System portiert, sodass es sich um Anwendungen handelt, auch wenn sie sich am unteren Rand der normalerweise verwendeten Toolkette befinden. Das Dateisystem, in das TeX seine Ausgabe schreibt, z. B. UFS oder VFAT, ist ein Grenzfall. Sie könnten ein Dateisystem auf ein anderes Betriebssystem portieren, wenn es großartig wäre, aber normalerweise übernehmen die Leute einfach großartige Ideen und schreiben ihr eigenes Dateisystem für ihr eigenes Betriebssystem. Das macht Dateisystem-System-Software.Auf Ihre Fragen hin war das Schreiben des Android-Betriebssystems definitiv eine Systemprogrammierung. Das Schreiben eines Programms, das Windows-API-Aufrufe verwendet, ist Anwendungsprogrammierung. Es ist nicht so portabel, als ob Sie plattformübergreifende Bibliotheken wie SDL oder OpenGL verwenden würden, aber es kann im Prinzip portiert werden, es ist Code von Drittanbietern und es wird im Benutzerbereich ausgeführt. Eine Konsolen-App, die den Status des Linux-Kernels anzeigt, ist ein interessantes Gedankenexperiment. Ich würde definitiv sagen, dass es sich um eine Systemprogrammierung handelt, da man viel über die Struktur von Linux wissen muss (beachten Sie, dass "Linux" eigentlich nur der Kernel ist, nicht die Distribution), um es zu schreiben und wahrscheinlich sogar zu verwenden!
quelle
Kurz gesagt: Schreiben von Software, die die Funktionsweise eines Betriebssystems erweitert oder verbessert, z. B. Treiber, Systemdienstprogrammupdates für Betriebssysteme oder sogar brandneue Betriebssysteme.
Es handelt sich hauptsächlich um die Speicherverwaltung; E / A-Vorgänge im weitesten Sinne wie Netzwerkbetrieb, Dateizugriff und Geräteverwaltung; Prozessmanagement (Multitasking, Prozessverwaltung usw.); Benutzer <-> Systeminteraktionsmethoden (sowohl in als auch out) und Benutzerverwaltung. Grundsätzlich ist alles, was Teil des Betriebssystems ist, das keine Anwendung ist, Systemprogrammierung.
quelle
Die direkte Verwendung der Windows-API war früher eine gängige Methode zum Schreiben von Anwendungen für Windows. Also nein, das ist keine Systemprogrammierung.
Die Systemprogrammierung ist nicht nur "nah am Betriebssystem" - sie ist für die Kernfunktion des Computersystems von wesentlicher Bedeutung. Das Schreiben eines Betriebssystems ist also Systemprogrammierung. Das Schreiben von Grafiktreibern, Dateisystemtreibern und Netzwerktreibern für dieses Betriebssystem ist Systemprogrammierung. Das Schreiben eines Compilers für eine bestimmte Kombination von Sprache / Chipsatz ist Systemprogrammierung.
quelle
Normalerweise bezieht es sich auf "Low-Level-Inhalte, von denen nicht-technische Endbenutzer nichts wissen oder die nicht genau wissen, was sie verwenden oder was sie tun".
Einige Beispiele, die häufig als Systemprogrammierung betrachtet werden:
Erstellung von Distributionen, dh Erstellung von Userland-Images.
Dies beinhaltet normalerweise die Auswahl der C-Standardbibliothek, des Init-Systems und der grundlegenden Userland-Komponenten wie eine Shell.
Die Systemprogrammierung erfolgt häufig in Sprachen mit niedrigerer Kompilierungsebene ohne automatische Garbage-Collection wie C oder Assembly. Der Zugriff auf seltenere Systemaufrufe erfolgt häufig über POSIX-C-Schnittstellen .
Ich bin eine praktische Anleitung beibehalten , die Programmierung mehrerer System Themen behandelt hier .
quelle
Wenn ich das definiere, würde ich mich von allen technischen Details fernhalten. Dann wird es einfach.
Eine Anwendung ermöglicht es einem Benutzer, mit einer bestimmten Technologie etwas Nützliches zu tun. Die Anwendungsprogrammierung zielt also darauf ab, dem Benutzer Funktionen direkt bereitzustellen.
Andererseits würde die Systemprogrammierung die Grundlage für die Ermöglichung der Anwendungsprogrammierung bilden. Es bietet Funktionen für den Anwendungsprogrammierer und nicht für den Benutzer.
Diese Definition wird gelten, ist jedoch eine Frage der Perspektive, des Kontexts und der Rollen. Programmierwerkzeuge sind für einen Computerprogrammierer Anwendungen. Für einen Endbenutzer sind sie bedeutungslos, nur aus dem Bild.
quelle
Kurz gesagt: Die Systemprogrammierung im Vergleich zur Anwendungsprogrammierung besteht darin, dass der SP die Betriebssystemsoftware für die Arbeit mit Hardwareressourcen und der Zugriffspunkt für die Endbenutzeraktivität verwaltet.
quelle