Tutorium 4
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Tutorium 4

on

  • 393 views

 

Statistics

Views

Total Views
393
Views on SlideShare
391
Embed Views
2

Actions

Likes
0
Downloads
3
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Tutorium 4 Presentation Transcript

  • 1. Tutorium #4 26.4. bzw. 3.5. c.deckert@me.com | twitter.com/cdeckert 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.
  • 2. tr.im/wifotut
  • 3. 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
  • 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.
  • 5. 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){} } }
  • 6. 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.
  • 7. Lösung 2 • 17254129 = 0000 0001 0000 0111 0100 0110 1111 0001
  • 8. Big Endian 1. Byte 0000 0001 2. Byte 0000 0111 3. Byte 0100 0110 4. Byte 1111 0001
  • 9. Little Endian 1. Byte 1111 0001 2. Byte 0100 0110 3. Byte 0000 0111 4. Byte 0000 0001
  • 10. Aufgabe 3 • Beschreiben Sie den Unterschied zwischen den beiden folgenden Repräsentationen. Airlines ::= INTEGER Airlines ::= ENUMERATED { { Lufthansa (1) Lufthansa (1) AirFrance (2) AirFrance (2) KoreanAir (3) KoreanAir (3) ProfBeckAir (27) ProfBeckAir (27) } }
  • 11. Lösung Airlines ::= INTEGER Airlines ::= ENUMERATED { { Lufthansa (1) Lufthansa (1) AirFrance (2) AirFrance (2) KoreanAir (3) KoreanAir (3) ProfBeckAir (27) ProfBeckAir (27) } }
  • 12. Lösung Airlines ::= INTEGER Airlines ::= ENUMERATED { { Lufthansa (1) Lufthansa (1) AirFrance (2) AirFrance (2) KoreanAir (3) KoreanAir (3) ProfBeckAir (27) ProfBeckAir (27) } } • 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)
  • 13. Aufgabe 4 Flight ::= SEQUENCE Geben Sie eine { airline IA5String, flight NumericString, gültige Instanz für die seats SEQUENCE { folgende Sequenz an: maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 14. 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 }
  • 15. 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 }
  • 16. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", 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 }
  • 17. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE { maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 18. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 19. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 20. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 21. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 22. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport { origin "MHG", airport SEQUENCE { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 23. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport { origin "MHG", airport SEQUENCE destination "LAX" { origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 24. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport { origin "MHG", airport SEQUENCE destination "LAX" { }, origin IA5String, destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 25. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport { origin "MHG", airport SEQUENCE destination "LAX" { }, origin IA5String, crewsize 10 destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE }
  • 26. Lösung 4 Flight ::= SEQUENCE { { airline IA5String, airline "Lufthansa", flight NumericString, flight "1204", seats SEQUENCE seats { { 320, maximum INTEGER, 307 occupied INTEGER, }, }, airport { origin "MHG", airport SEQUENCE destination "LAX" { }, origin IA5String, crewsize 10 destination IA5String }, crewsize ENUMERATED { six (6), eight (8), ten (10) }, cancel BOOLEAN DEFAULT FALSE } }
  • 27. Andere Schreibweisen { airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10 }
  • 28. Andere Schreibweisen { airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10 } {
  • 29. Andere Schreibweisen { airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10 } { "Lufthansa", "1204", { 320, 307 }, { "MHG", "LAX" }, 10
  • 30. Andere Schreibweisen { airline "Lufthansa", flight "1204", seats { 320, 307 }, airport { origin "MHG", destination "LAX" }, crewsize 10 } { "Lufthansa", "1204", { 320, 307 }, { "MHG", "LAX" }, 10 }
  • 31. 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.
  • 32. Lösung 5 Passenger vom Typ SEQUENCE Name des Passenger Klasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer }
  • 33. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE Name des Passenger Klasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer }
  • 34. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { Name des Passenger Klasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer }
  • 35. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger Klasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer }
  • 36. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen firstclass, businessclass, economyclass Sitzplatznummer }
  • 37. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass Sitzplatznummer }
  • 38. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) Sitzplatznummer }
  • 39. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) businessclass (2) Sitzplatznummer }
  • 40. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) businessclass (2) economyclass (3) Sitzplatznummer }
  • 41. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) businessclass (2) economyclass (3) } Sitzplatznummer }
  • 42. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) businessclass (2) economyclass (3) } seat INTEGER Sitzplatznummer }
  • 43. Lösung 5 Passenger ::= SEQUENCE Passenger vom Typ SEQUENCE { name IA5String, Name des Passenger class ENUMERATED Klasse unterschieden wird zwischen { firstclass, businessclass, economyclass firstclass (1) businessclass (2) economyclass (3) } seat INTEGER Sitzplatznummer } }
  • 44. Lösung 5 (Instanz) { “Klaus”, 2, 14 }
  • 45. Lösung 5 (Instanz) Passenger ::= SEQUENCE { “Klaus”, 2, 14 }
  • 46. Lösung 5 (Instanz) Passenger ::= SEQUENCE { { “Klaus”, 2, 14 }
  • 47. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, { “Klaus”, 2, 14 }
  • 48. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { “Klaus”, 2, 14 }
  • 49. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { “Klaus”, 2, 14 }
  • 50. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 }
  • 51. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 businessclass (2) }
  • 52. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 businessclass (2) } economyclass (3)
  • 53. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 businessclass (2) } economyclass (3) }
  • 54. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 businessclass (2) } economyclass (3) } seat INTEGER
  • 55. Lösung 5 (Instanz) Passenger ::= SEQUENCE { name IA5String, class ENUMERATED { { firstclass (1) “Klaus”, 2, 14 businessclass (2) } economyclass (3) } seat INTEGER }
  • 56. 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?
  • 57. Aufgabe 6
  • 58. Lösung 6
  • 59. 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.
  • 60. 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.