von: D.F.


F. G.
Diese Lernkarten behandeln fortgeschrittene Themen der Systemprogrammierung unter Linux und richten sich an Studierende. Sie umfassen die Verwendung von Befehlen wie `make` und `gcc` zum Compilieren von C-Programmen, die Nutzung von Debuggern wie `ddd`, und die Verwaltung von Bibliotheksfunktionen und Laufzeitbibliotheken. Zudem werden Makefiles, Parameter und die Überprüfung von Abhängigkeiten behandelt. Entwickler und Studierende profitieren von diesen Karteikarten, um ein tieferes Verständnis der Systemprogrammierung zu erlangen und effizienter mit Linux-Systemen zu arbeiten.
Flashcards
12
Students
4
Language
German
Category
Computer Science
Level
University
Created / Updated
11.06.2016 / 09.07.2016

Flashcards

Weleche Betriebssystem-Funktionen (Kategorien) werden in Anwendungsprogramme genutzt?
(4 Punkte)

  • I/O-Programmierung
  • Speichermanagement
  • Prozess-Steuerung
  • Interprozesskommunikation

Über Wleche zwei Wege kann ein Anwendungsprogramm auf Kernelfunktionen zugreifen?
Was sind jeweils die Vorteile/ Nachteile?

  • Systemaufrufe
    • Vorteil: Volle kontrolle durch den Programmierer, schneller
    • Nachteil: Unter umständen platformabhäng
  • Bibiliotheksfunktionen 
    • Vorteil: platform unabhänig -> da Spezielle Bibliothek je nach Platform
    • Nachteil: Kein direkter zugriff auf Systemaufrufe, langsamer

Welche zwei möglichkeiten gibt es um Bibliotheksfunktionen in ein Programm einzubinden?
Was sind jeweils die Vor-/Nachteile?

  • Statisch ( Beim Compilieren / Linken)
    • Nachteil: Größere Programmfiles
    • Vorteil: 
      • Schneller, da nichts nachgeladen werden muss
      • Kein besondere Anforderung an Progrmmumgebung
  • Dynamisch ( Nachladen zur laufzeit )
    • Vorteil: Bibliotheksfunktionen können von mehreren Programmen genutzt werden, wenn sie sich im Speicher befinden
    • Nachteil: Benötigen Laufzeitbibliotheken (Version!)

Mit welchem Befehl lässt sich unter Linux ein C-Programm compilieren?

Mit gcc für GNU-Implementierung sonst mit cc

Ein C-Programm wird in mehreren schritten Compiliert, nenne die Art der jeweils nach jeden Schritt vorligenden Dateien.

  • C-Code
  • C-Code präprozessiert 
  • Assemblercode
  • Objectcode
  • Ausführbare Datei

Wo liegen die Vorteile C-Source Datien zuerst in Object-Code umzuwandeln?

  • Schautz von Intelektuellem Eigentum
  • Liegt keine Änderung vor muss die Datei nicht erneut Compiliert werden

Mit welchem Befehl kann die die Abbhänigkeit von Laufzeitbibliotheken überprüft werden?

ldd <Programm>

Wo müssen Bibliotheken liegen damit sie gefunden werden können (Dynamisches Binden)?
(3 Punkte)

  • Standart Bibliotheksverzeichnis: Steht in "/etc/ld.so.conf"
  • Suchpfad mit "/sbin/ldconfig" aktuallisiert sein
  • Oder der Pfad muss in LD_LIBRARY_PATH enthalten sein

Bibliothek muss an 3 Stellen beachtet werden:

  • Einbinden als *.hpp
  • Beim Compilieren (Parameter)
  • Beim Ausführen wenn dynamisch

Mit welchem Programm können Systemauftrufe nachverfolgt werden, nenne auch die wichtigsten Parameter?
(3 Parameter)

  • strace <Programm>
    • -o <Loggdatei>   => Lenkt Ausgabe in <Loggdatei> um
    • strace –f <Programm>   => Verfolgt auch die durch fork() erzeugten
      Kindprozesse
    • –ff –o <Logdatei> <Programm>   => Lenkt die Ausgabe für <Programm> und seine Kinder in
      <Programm>.PID um

Wie heißt die Grafische Oberfläche für Debugger wie sdb oder gdb?

Der Debugger ddd erlaubt es, C-Programme

  • Schrittweise auszuführen
  • Haltepunkte zu setzen
  • Variablenwerte zu setzen und abzufragen
  • Aufrufhierarchien (Stack-Trace) darzustellen

Mit welchem Befehl lässt sich die Compilierung von C-Programmen automatisieren? 

Mit dem Befehl make, er benötigt neben den C-Source Files auch noch ein Makefile in dem Beschreiben ist wie beim Compilieren vorgegangen werden soll.

Was wird in einem Makefile alles beschrieben?
(5 Punkte)

Makefiles enthalten

  • explizite Regeln (Dateien)
  • implizierte Regeln (Dateitypen)
  • Variablen
  • Direktiven (Ablaufsteuerung)
  • Kommentare (wie bei Shellskripten)

Eine genauere Beschreibung zu Makefiles (Syntax, Ablauf, usw) findet sich im Skript "bsys_2016s_v08_Systemprogramierung"

Study