BS Übung 03 (Stefan Bosse) [18.11.2024]
Gruppe und Namen der Mitglieder
Punkte:Total/21./22./23./24./2

Einführung in Betriebssysteme

Aufgabe 1. Was charakterisiert Mikrokernelbetriebssysteme?


Aufgabe 2. Nenne jeweils drei komplementäre Vorteile-Nachteile die Mikro- von monolitischen Kernelbetriebssystemen unterscheiden (+: Vorteil, -:Nachteil, jeweils gegenseitig, nur + nennen, also z.b Mikro + lustig bedeutet Mono - traurig/nicht lustig).


Basekernel OS

Es gibt folgende Struktur:

Aufgabe. Wechsle in das kernel Quellcode Verzeichnis. Suche nach (C) Dateien die die goto Anweisung enthalten. Benutzte dazu z.B. grep. Öffne diese Dateien mit einem Texteditor. Frage: Wie wird dort goto verwendet? Gibt es Vorwärts-, Rücwärts- oder gar Interfunktionssprünge? Wo befinden sich die Labels? Wofür wird also goto dort meistens verwendet?


C Programmierung

Hinweise

In dieser Übung wird ein eingebauter C-JS Transpiler verwendet. Die Ausführung der einzelnen Aufgaben wird unabhängig in einem eigen Kontext ausgeführt. jede teilaufgabe benötigt eine main Funktion! Es gibt nur eine C Stdlib Header Datei: clib.h. Diese muss immer eingebunden werden.

Zeigerprogrammierung

Aufgabe. Es soll eine swap(int *a,int *b) Funktion für zwei Ganzzahl Variablen und eine zyklische Rotationsfunktion rot(int *a,int *b, int *c,char dir) für drei Variablen mit Zeigerreferenzen programmiert werden. Dabei bedeutet dir='L' eine Linksrotation, d.h. (a:=b,b:=c,c:=a), und dir='R' eine Rechtsrotation (a:=c,b:=a,c:=b). Da weder Vertauschung noch Rotation sequenziell direkt mit den Variablen ausgeführt werden können müssen gengend aber nur maximal erforderlich temporäre Variablen verwendet werden. Teste für die Werte (a=1,b=2,c=3).


Zeigerreferenzen als Funktionsargumente (Teil 1)

 ▸ 
 ℙ 
[]
 ✗ 
 ≡ 

I2luY2x1ZGUgImNsaWIuaCIKdm9pZCBzd2FwKGludCAqYSxpbnQgKmIpIHsKICBpbnQgdDsKICB0PSphOyAqYT0qYjsgKmI9dDsKICByZXR1cm47Cn0Kdm9pZCByb3QoaW50ICphLGludCAqYiwgaW50ICpjLGNoYXIgZGlyKSB7CiAgaW50IHUsdjsKICBzd2l0Y2ggKGRpcikgewogICAgY2FzZSAnTCc6CiAgICAgIHU9KmM7dj0qYTsKICAgICAgKmE9KmI7KmI9dTsqYz12OwogICAgICBicmVhazsKICAgIGNhc2UgJ1InOgogICAgICB1PSphO3Y9KmI7CiAgICAgICphPSpjOypiPXU7KmM9djsKICAgICAgYnJlYWs7CiAgfQp9CgppbnQgbWFpbigpIHsKICBpbnQgYT0xLGI9MixjPTM7CiAgc3dhcCgmYSwmYik7CiAgcm90KCZhLCZiLCZjLCdMJyk7CiAgcHJpbnRmKCJhPSVkIGI9JWQgYz0lZFxuIixhLGIsYyk7Cn0=

Aufgabe. Führe jetzt die drei Variablen a,b, und c als Zeiger ein und reserviere mit malloc genügend Speicher (auf dem Heap), führe obige Operationen noch einmal mit den Zeigern durch, gebe Ergebniss aus, gebe den Speicher wieder frei.


Zeigerreferenzen als Funktionsargumente (Teil 2)

 ▸ 
 ℙ 
[]
 ✗ 
 ≡ 

aW50IG1haW4oKSB7CiAgaW50ICpwYSwqcGIsKnBjOwogIHBhPShpbnQqKW1hbGxvYyhzaXplb2YoaW50KSk7CiAgcGI9KGludCopbWFsbG9jKHNpemVvZihpbnQpKTsKICBwYz0oaW50KiltYWxsb2Moc2l6ZW9mKGludCkpOwogICpwYT0xOyAqcGI9MjsgKnBjPTM7CiAgc3dhcChwYSxwYik7CiAgcm90KHBhLHBiLHBjLCdMJyk7CiAgcHJpbnRmKCJhPSVkIGI9JWQgYz0lZFxuIiwqcGEsKnBiLCpwYyk7CiAgZnJlZShwYSk7IGZyZWUocGIpOyBmcmVlKHBjKTsKfQ==


Created by the NoteBook Compiler Ver. 1.32.3 (c) Dr. Stefan Bosse (Tue Nov 19 2024 09:01:57 GMT+0100 (Central European Standard Time))