Mein Lieber Leute, willkommen zum dritten Teil des zweiten Kapitels für die Vorlesungen
Betriebssysteme. Hier geht es jetzt weiter. Betriebssystementwicklung, Debugging. Die
Frage, wie entwanzt man ein Betriebssystem? Wir haben uns ja schon mal grob angeguckt,
welche Möglichkeiten es gibt, mit Printf, mit Emulatoren, Debugger und so weiter.
Entwanzen, eine Wanze, wo kommt überhaupt das Wort entwanzen, Debugging her?
Es gab wirklich mal einen Bug in einem Rechner, ihr seht hier aufgeklebt mit Tesafilm, eine
Motte, die Motte klebte irgendwann mal, war eingeklemmt in einem Relais, in einem der ersten Rechner.
Da das Relais nicht mehr richtig schalten konnte, war da ein Bug im Rechner und beim
Debugging entwanzen hat man halt die Motte aus dem Relais rausgezogen und dann hat das
System wieder funktioniert. Und seitdem heißt es in der Informatik halt immer Debugging,
wenn man irgendwie ein System wieder zum Laufen bringen will. Jo, wie machen wir es? Printf,
eine Variante. Was wäre so die Idee, wenn man was debuggen will, dann schreibt man an
vielen Stellen in seinem Programm einfach ein Printf rein, gibt da irgendwas aus und
wenn man es dann laufen lässt, dann kann man gucken, ob der Kontrollfluss an der einen
oder anderen Stelle vorbeigekommen ist und vielleicht ahnt man dann, wo das Problem sein
könnte. Problem dabei, Printf erstmal gibt es nicht. Wir haben gesagt, die libc, libstandardc++
und so kann man nicht benutzen, weil das Printf, was da drin ist, ein write system call macht.
Write system call haben wir nicht. Nächste Problem kann natürlich auch noch sein, wir
haben vielleicht nicht einmal einen Bildschirm. Also selbst wenn wir das Printf selber schreiben
würden, wir könnten nirgends ausgeben. Gut, das sind erstmal so grundlegende Probleme,
die kann man vielleicht noch lösen. Das nächste Problem, was es auch noch gibt, das kann man
per Definition nicht lösen. Warum? Ein Printf ist normalerweise ein relativ lang laufendes
Unterprogramm, zeitlich gesehen lang laufend. Warum? Beim Printf gibt man ja zum Beispiel
mal Zahlen aus und Zahlen wollen erstmal vom Binärsystem ins Dezimalsystem konvertiert
werden, das dauert ein bisschen und dann noch auf dem Bildschirm malen, dauert auch noch
ein bisschen, zeitlich gesehen relativ lang laufend. Das heißt, gerade in unserer Welt,
wo es um Race-Conditions geht, haben wir es richtig koordiniert oder nicht, richtiges
Locking oder falsches Locking und wenn die Race-Conditions plötzlich anders aussehen,
weil sich das Zeitverhalten geändert hat durch das Printf, kann es einem jederzeit passieren,
dass Fehler plötzlich nicht mehr auftreten oder anders auftreten. Ganz typisch, man hat
ein Problem, man baut die Printf ein und das Problem ist weg. Nicht weil das eigentliche
Problem weg ist, sondern man sieht es einfach nicht mehr, weil das Printf das zeitliche
Verhalten geändert hat und damit die Race-Conditions nicht mehr auftreten. Das ist etwas, da kommt
man nicht oben hin. Das ist einfach so. Da muss man sich nur klar machen, dass dem so
ist und dass ein Printf von daher nicht immer funktioniert. Nixdestotrotz hätte man häufig
sehr gerne irgendeine Art von Printf, gerade am Anfang der Entwicklung, weil man mal gucken
will, bin ich überhaupt bis zu einem bestimmten Punkt gekommen, ja oder nein. Da wäre ich
froh drum, wenn dann auf dem Bildschirm irgendwas erscheinen würde. Funktion sowieso hat funktioniert.
Wenn wir keinen Bildschirm haben, wenn wir keinen Printf haben, geht das nicht. Da gibt
es manchmal Möglichkeiten, viele kleine Entwickler-Boards haben irgendwelche LEDs on Board, die kann man
beispielsweise für sowas benutzen. Ich schalte einfach auf rot, wenn ich dann die ersten
fünf Zeilen meines Programms durchlaufen habe, dann weiß ich, die ersten fünf Zeilen, da
ist er nicht abgestürzt. Wenn er die nächsten zehn Zeilen geschafft hat, dann schalte ich
eine andere Leuchttiode auf grün und so hangel ich mich dann vielleicht durch mein Programm
durch und gucke immer, welche Leuchttiode geht an. Oder ich kann sie auch blinken lassen,
wie lange blinkt sie dann, wann blinkt sie plötzlich nicht mehr. Ein bisschen komfortabler
wäre eine serielle Schildstelle, da könnte man natürlich ein Printf auch drüber leiten.
Dann müsste man einfach an die serielle Schildstelle auf der anderen Seite irgendwie ein kleines
Terminal oder die serielle Schildstelle von einem PC oder so dranhängen und sich da die
Zeichen wieder abholen. Klein bisschen Vorsicht, eine serielle Schildstelle ist natürlich
Presenters
Zugänglich über
Offener Zugang
Dauer
00:34:44 Min
Aufnahmedatum
2020-10-20
Hochgeladen am
2020-10-20 20:26:52
Sprache
de-DE
2. Kapitel der Vorlesung Betriebssysteme.