Tutorium 4

22
Tutorium #4 26.4. bzw. 3.5. Bei dieser Ausarbeitung handelt es sich um keine offizielle Lösung des Lehrstuhls. Dies sind nur Lösungsansätze, welche keinen Anspruch auf Korrektheit oder Vollständigkeit erheben. [email protected] | twitter.com/cdeckert

Transcript of Tutorium 4

Page 1: Tutorium 4

Tutorium #426.4. bzw. 3.5.

Bei dieser Ausarbeitung handelt es sich um keine offizielle Lösung des Lehrstuhls. Dies sind nur Lösungsansätze, welche keinen

Anspruch auf Korrektheit oder Vollständigkeit erheben.

[email protected] | twitter.com/cdeckert

Page 2: Tutorium 4

tr.im/wifotut

Page 3: Tutorium 4

Agenda• Aufgabe 1 HTTP

• Aufgabe 2 Big/Little Endian

• Aufgabe 3 ASN.1

• Aufgabe 4 ASN.1

• Aufgabe 5 ASN.1

• Aufgabe 6 Prozess

• Aufgabe 7 Concurrency

Page 4: Tutorium 4

Aufgabe 1

• Schreiben Sie einen einfachen „Webbrowser“ in Java, mit dem man eine beliebige Webseite abrufen und den HTML-Code als Text anzeigen kann.

Page 5: Tutorium 4

1 Lösung

import java.io.BufferedReader;import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

public class Browser {

public static void main(String[] args) {

try{

URL url = new URL("http://bubblebase.net:80");

URLConnection conn = url.openConnection();

conn.setDoOutput(true);

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;

while((line = rd.readLine()) != null){

System.out.println(line);

}

}catch(Exception e){}

}

}

Page 6: Tutorium 4

Aufgabe 2

• Die Zahl 17254129 wird als 32-Bit-Wort im Hauptspeicher abgelegt. Tragen Sie die zugehörige Speicherlayout jeweils im Big Endian und Little Endian Format in die entsprechenden Tabellen ein.

Page 7: Tutorium 4

Lösung 2

• 17254129 =0000 0001 0000 0111 0100 0110 1111 0001

Page 8: Tutorium 4

Big Endian

1. Byte 0000 0001

2. Byte 0000 0111

3. Byte 0100 0110

4. Byte 1111 0001

Page 9: Tutorium 4

Little Endian

1. Byte 1111 0001

2. Byte 0100 0110

3. Byte 0000 0111

4. Byte 0000 0001

Page 10: Tutorium 4

Aufgabe 3

• Beschreiben Sie den Unterschied zwischen den beiden folgenden Repräsentationen.

Airlines ::= INTEGER{ Lufthansa (1) AirFrance (2) KoreanAir (3) ProfBeckAir (27) }

Airlines ::= ENUMERATED{ Lufthansa (1) AirFrance (2) KoreanAir (3) ProfBeckAir (27)

}

Page 11: Tutorium 4

Lösung

• Links Airline ist Integer / Namen für spezielle Werte (Werte wie 204 denkbar)

• Rechts kann nur Werte annehmen, die mit “Worten” verknüpft sind. (1,2,3, 27)

Airlines ::= INTEGER{ Lufthansa (1) AirFrance (2) KoreanAir (3) ProfBeckAir (27) }

Airlines ::= ENUMERATED{ Lufthansa (1) AirFrance (2) KoreanAir (3) ProfBeckAir (27)

}

Page 12: Tutorium 4

Aufgabe 4Flight ::= SEQUENCE{ airline IA5String, flight NumericString, seats SEQUENCE { maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE}

Geben Sie eine gültige Instanz für die

folgende Sequenz an:

Page 13: Tutorium 4

Lösung 4Flight ::= SEQUENCE{ airline IA5String, flight NumericString, seats SEQUENCE { maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE}

{ airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10

}}

Page 14: Tutorium 4

Andere Schreibweisen{ airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10}

{ "Lufthansa", "1204", { 320, 307 }, { "MHG", "LAX" }, 10}

Page 15: Tutorium 4

Aufgabe 5

• Nehmen Sie an, dass Passenger vom Typ SEQUENCE ist und die folgenden Elemente hat: name, class, seat. (Name des Passagiers, Beförderungsklasse und Sitznummer). Schreiben Sie eine ASN.1 Notation für Passenger. Geben Sie eine gültige Instanz von Passenger an.

Page 16: Tutorium 4

Lösung 5

Passenger ::= SEQUENCE{ name IA5String, class ENUMERATED { firstclass (1) businessclass (2) economyclass (3) } seat INTEGER}

Passenger vom Typ SEQUENCEName des PassengerKlasse unterschieden wird zwischen firstclass, businessclass, economyclass

Sitzplatznummer}

Page 17: Tutorium 4

Lösung 5 (Instanz)

Passenger ::= SEQUENCE{ name IA5String, class ENUMERATED { firstclass (1) businessclass (2) economyclass (3) } seat INTEGER}

{ “Klaus”, 2, 14}

Page 18: Tutorium 4

Aufgabe 6

• Auf dem folgenden Bild aus der Vorlesung sind drei mögliche Stati für Prozesse aufgeführt.

• Obwohl dies sechs mögliche Übergänge impliziert, sind nur vier Übergange angegeben.

• Gibt es Umstände unter denen die fehlenden zwei Übergänge denkbar sind?

Page 19: Tutorium 4

Aufgabe 6

Page 20: Tutorium 4

Lösung 6

Page 21: Tutorium 4

Lösung 6

• Der Übergang von blocked nach running ist denkbar.

• Wenn ein Prozess blockiert ist, weil er auf eine Ein- oder Ausgabe wartet und die CPU sonst nichts zu tun hat, so kann der Prozess direkt von blocked in running übergehen, sobald die Ein- bzw. Ausgabe beendet ist.

Page 22: Tutorium 4

Lösung 6

• Der andere Übergang ist nicht möglich. Ein Prozess der ready ist, kann nichts tun, was ihn blockieren kann. Nur ein laufender Prozess kann blockieren.