Tutorium 4

Preview:

Citation preview

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.

c.deckert@me.com | twitter.com/cdeckert

tr.im/wifotut

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

Aufgabe 1

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

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){}

}

}

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.

Lösung 2

• 17254129 =0000 0001 0000 0111 0100 0110 1111 0001

Big Endian

1. Byte 0000 0001

2. Byte 0000 0111

3. Byte 0100 0110

4. Byte 1111 0001

Little Endian

1. Byte 1111 0001

2. Byte 0100 0110

3. Byte 0000 0111

4. Byte 0000 0001

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)

}

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)

}

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:

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

}}

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

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

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.

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}

Lösung 5 (Instanz)

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

{ “Klaus”, 2, 14}

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?

Aufgabe 6

Lösung 6

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.

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.

Recommended