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.
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);
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 4
Flight ::= 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 4
Flight ::= 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 SEQUENCE
Name 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 derVorlesung
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.

Tutorium 4

  • 1.
    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. c.deckert@me.com | twitter.com/cdeckert
  • 2.
  • 3.
    Agenda • Aufgabe 1HTTP • Aufgabe 2 Big/Little Endian • Aufgabe 3 ASN.1 • Aufgabe 4 ASN.1 • Aufgabe 5 ASN.1 • Aufgabe 6 Prozess • Aufgabe 7 Concurrency
  • 4.
    Aufgabe 1 • SchreibenSie einen einfachen „Webbrowser“ in Java, mit dem man eine beliebige Webseite abrufen und den HTML- Code als Text anzeigen kann.
  • 5.
    1 Lösung import java.io.BufferedReader; importjava.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);
  • 6.
    Aufgabe 2 • DieZahl 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.
  • 7.
    Lösung 2 • 17254129= 0000 0001 0000 0111 0100 0110 1111 0001
  • 8.
    Big Endian 1. Byte0000 0001 2. Byte 0000 0111 3. Byte 0100 0110 4. Byte 1111 0001
  • 9.
    Little Endian 1. Byte1111 0001 2. Byte 0100 0110 3. Byte 0000 0111 4. Byte 0000 0001
  • 10.
    Aufgabe 3 • BeschreibenSie 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) }
  • 11.
    Lösung • Links Airlineist 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) }
  • 12.
    Aufgabe 4 Flight ::=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:
  • 13.
    Lösung 4 Flight ::=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 } }
  • 14.
    Andere Schreibweisen { airline"Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10} { "Lufthansa", "1204", { 320, 307 }, { "MHG", "LAX" }, 10}
  • 15.
    Aufgabe 5 • NehmenSie 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.
  • 16.
    Lösung 5 Passenger ::=SEQUENCE{ name IA5String, class ENUMERATED { firstclass (1) businessclass (2) economyclass (3) } seat INTEGER} Passenger vom Typ SEQUENCE Name des PassengerKlasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer}
  • 17.
    Lösung 5 (Instanz) Passenger::= SEQUENCE{ name IA5String, class ENUMERATED { firstclass (1) businessclass (2) economyclass (3) } seat INTEGER} { “Klaus”, 2, 14}
  • 18.
    Aufgabe 6 • Aufdem folgenden Bild aus derVorlesung 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?
  • 19.
  • 20.
  • 21.
    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.
  • 22.
    Lösung 6 • Derandere Übergang ist nicht möglich. Ein Prozess der ready ist, kann nichts tun, was ihn blockieren kann. Nur ein laufender Prozess kann blockieren.