Prüfungsprotokolle lesen
Protokolle (44 gefunden)
Nr. | Prüfer | Fach |
127 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 10.Aug.2005 = Benötigte Lernzeit als Empfehlung 1-3 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Vorlesungsfolien, Übersicht Prüfungskomplexe = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Ruhige, freundliche, ungezwungene Atmosphäre. = Prüfungsfragen Erstes Thema "Prozesse" (fast die ganze Prüfungszeit): Definition, Beschreibung, Wie realisiert? Im Prinzip genau so, wie in der Übersicht Prüfungskomplexe angezeigt und in den Folien ausgeführt (PID, fork, exec exit, Adressierung, Prozesskontrollblock, Aufbau aus Stack, Heap, Data, Code, ..., besonders auch clone, vfork, fork und ihre Besonder- heiten). Dazu ein bisschen Quelltext: Zunächst einen Prozess neu per fork erzeugen, später dann eine Pipe mit hinzufügen und zwischen Eltern- und Kind- prozess Nachrichten umherschicken (aber sehr genau und jede Anweisung auch erklären können!). Letztes Thema "Virtuelle Maschinen" (5-10 min): Ziele und Anwendungsgebiete virtueller Maschinen. Welche Virtuelle Maschinen gibt es, worin unterscheiden sie sich? Wie sind sie umgesetzt? Und ganz wichtig (ich hatte es vergessen): Die x86-Architektur ist schwierig bis gar nicht zu virtualisieren, weil manche Befehle Sachen machen, die die Virtualisierungssoftware nicht nachvoll- ziehen kann (pushf, iret: Folie 22 von Nr. 1-5 Virtual Machines). = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Gute Prüfung. Meine 2,0 war sehr angemessen, weil ich das, was er fragte wusste, manchmal ein bisschen unsicher war, und nur beim letzten Thema wirklich Dinge nicht mehr wusste.
Nr. | Prüfer | Fach |
130 | Redlich, Jens-Peter, Prof. | Mobile Communication |
Protokoll
= Datum der Prüfung September 2005 = Benötigte Lernzeit als Empfehlung ~ 2 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Vorlesungsfolien (sehr ausführlich) Buch "Computer networks" von Tanenbaum (in Bibliothek vorrätig). Notfalls auch die deutsche Übersetzung "Computernetzwerke", nur dort werden auch viele Fachbegriffe eingedeutscht (inkl. Namen von Algortihmen) und sind dann teilw. schwierig mit der Vorlesung zu matchen = "Atmosphäre" der Prüfung / Verhalten der Beisitzer entspannt, motivierend = Prüfungsfragen Wie in VL angekündigt konnte man zwei Lieblingsthemen angeben, eines sucht er sich als Startthema aus. Bei mir war es dann "TCP". Fragen zum gesamten Kapitel: Sinn von TCP, 3-Wege-Handshake, Congestion Control, Congestion Avoidance inkl. DECbit und RED. Danach kurzer Schwenk zu "Wireless", hier besonders "Cellular IP" = Note (Optional) 1.3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) sehr faire Prüfung. Fragt nach Lieblingsthema, will das dann auch allerdings in allen Details wissen. Ist aber immer fair. Um es mit eBay zu sagen: Jederzeit wieder :)
Nr. | Prüfer | Fach |
150 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung: 02.03.2006 = Benötigte Lernzeit als Empfehlung: bei regelmäßigem Besuch der VL und Lösen der Praktikums- Aufgaben - 1-2 Wochen = Verwendete Materialien (Bücher, Skripte etc...) ausschließlich die VL-Folien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Beisitzer: A. Zubow (Prüfer im Bereich EJB) Atmosphäre: Locker und freundlich = Prüfungsfragen Beginn mit Wunschthema: EJB - Client View: Wie kommt der Client an eine Bean heran (EJB-Server, Container, Namensdienst, Home-/Remote-Interface) - Transaktionen: Was ist CMT? BMT? Wo beschrieben (DD)? Was bedeutet supported? Was mandatory? - JMS: am Beispiel einer MDB (Code skizzieren) (JMS-Provider, ConnectionFactory, Connection, Topic, Session, Publisher, Text-/Map-/Obj-Message, MessageListener Interface, onMessage-Methode der Bean, Home für MDBs?) Wechsel auf Java-RMI - Client/Server Code skizzieren (java.rmi.Remote, RemoteException, UniCastRemoteObj, Naming) - Stub: Wer generiert ihn? Warum Class-Impl und nicht nur Interfaces von rmic benötigt? Casting der Referenz? Wie sieht das mit CORBA Referenzen aus? - Referentielle Integrität: Wie gesichert? Immer erhalten? - Distributed Garbage Collection = Note (Optional): 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Gute Prüfung. Gute/Sehr gute Ergebnisse im Praktikum können positiven Einfluss auf die Note haben!
Nr. | Prüfer | Fach |
157 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 02.03.06 = Benötigte Lernzeit als Empfehlung haben zu zweit 5 Tage intensiv (ca. 8h) anhand des Skripts aber vor allem mit gegenseitigem Hinterfragen des Verständnisses und ggs. Erklären gelernt = Verwendete Materialien (Bücher, Skripte etc...) eigentlich nur das Skript, an manchen Stellen auch noch die Java API Doc (nützlich für Detailfragen zu CORBA und RMI) = "Atmosphäre" der Prüfung / Verhalten der Beisitzer sehr entspannte Atmosphäre, kaum Druck, eher positive Erwartungshaltungs; Beisitzer (Zubow) war ernst und man sah ihm nicht so recht an, ob ihm die Antworten gefielen oder nicht = Prüfungsfragen verschiedenes zu CORBA und ein wenig zu EJB; die spannendste Frage war, warum es bei CORBA nicht auch so eine schöne verteilte Garbagecollection wie bei RMI gibt - Antwort: IORs können beliebig gespeichert werden und sind damit nicht mehr nachvollziehbar = Note (Optional) 1,3 = Fazit eine meiner angenehmsten und besten Prüfungen :-)
Nr. | Prüfer | Fach |
182 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 23.09.2006 = Benötigte Lernzeit als Empfehlung 2-3 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Vorlesungsfolien + Mitschriften, Google = "Atmosphäre" der Prüfung / Verhalten der Beisitzer sehr freundlich, entspannt, gemütlich = Prüfungsfragen 1. Virtual Memory (als Einstieg ausgesucht) warum gibt es das? Welche Techniken zum Mapping? Abgrenzung der Begriffe logische, virtuelle, physikal. Adresse Vor-/Nachteile der verschiedenen Mappings, Kombination Segment. und Paging invertierte Pagetable (was ist das, Vor- Nachteile) 2. NTFS (das war mein schwarzes Loch und hat mich eine bessere Not gekostet) 3. Virtualisierung Grafik zu VMM, VM + Erklärung Techniken zur Virtualisierung der CPU (direct Execution + binary Translation) welche Formen der Binary Translation gibt es, warum gibt es immer noch beide Formen (synthetische Instruktion vs. call) 4. Deadlocks und Starvation Unterschied zw. Deadlock und Starvation Avoidance: was ist das, wie funktioniert das Safety-Algorithmus + Resource-Request-Algo. erläutern Zusatzfrage: Monitore als Synchron. Prinzip der Monitore, was ist das besondere an Monitoren (im Unterschied zu den Semaphoren) = Note (Optional) 2.0 (leider) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Die Note geht so in Ordnung. Leider hat mich das Nichtwissen um NTFS eine bessere Note gekostet. Fair war insbesondere, dass ich die Möglichkeit bekam, mit einer Zusatzfrage wenigstens noch eine 2,0 zu bekommen. Insgesamt kann ich nur jedem diesen Kurs und Prof. Redlich als Prüfer empfehlen. Auch wenn der Aufwand während des Semesters im Praktikum sehr hoch ist.
Nr. | Prüfer | Fach |
185 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung August 2006 = Benötigte Lernzeit als Empfehlung 6 Tage, 5-8Stunden pro Tag - macht ungefähr 42 Stunden ;) = Verwendete Materialien (Bücher, Skripte etc...) lediglich das Vorlesungsskript (zusätzlich noch wikipedia) = "Atmosphäre" der Prüfung / Verhalten der Beisitzer sehr entspannte Athmosphäre = Prüfungsfragen - entweder, man wählt das Anfangsthema, oder man darf ein Thema gänzlich ausschliessen - ansonsten sollte man alle Fragen der Prüfungskomplexe beantworten können * mein Thema: Scheduling - es wurden alle Punkte der Prüfungskomplexe angesprochen - wie kann man bei RR fairness erzeugen (Kredits verteilen) * Virtuelle Maschinen - VM-Typen - warum kann man in XEN diese nicht virtualisierbaren Befehle normal benutzen? (weil man sich ausschließlich im user-level befindet) * NTFS (scheint sehr häuffig gefragt zu werden!!!) - Aufbau (Boot, MFT, Daten, Attribute, Extends ... ) - wie sieht ein Eintrag (einer Datei) in der MFT aus? - warum können Dateien 2 Namens-Attribute haben? (DOS, Extendet) - warum können Dateien 2 Daten-Attribute haben? (Daten + 1 Stream - z. B. Bild mit Voransicht) - Encrypted Filesystem (EFS) (also kurz erklären: FEK ist ein symmetrischer Schlüssel, der wird für jeden user mit dem jeweiligen asymetrischen schlüssel verschlüsselt ... + vorteile / nachteile ... ) = Note (Optional) 1.3 :) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) kann jedem empfehlen diese Prüfung zu machen
Nr. | Prüfer | Fach |
198 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 10.10. 2006 = Benötigte Lernzeit als Empfehlung Da der Berg an in der Vorlesung besprochenem Stoff riesig ist, sollte man für eine gute Note schon 2-3 Wochen veranschlagen. Prof. Redlich bemüht sich, die gesamte Bandbreite von Themen abzufragen. = Verwendete Materialien (Bücher, Skripte etc...) Folien der Vorlesung. Ein kleiner Tipp am Rande: SAR ist nicht sehr zuverlässig. Sichert euch also am besten alle Folien im Vorraus, dann steht ihr nicht so dumm da wie ich, wenn am Wochenende vor der Prügung der Server nicht erreichbar ist. Silberschatz (neueste Auflage) Linux-Kernelarchitektur (Kernel 2.6) -> Für beide sind nur wenige Exemplare in der Bibliothek vorhanden. Inside Windows NT = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Die Prüfungsatmosphäre ist mit Abstand die entspannteste, die ich bisher bei einer Prüfung erlebt habe. Prof. Redlich lässt einen immer Ausreden und macht selten abrupte Sprünge, was die behandelten Themen angeht. Weiß man einmal nicht weiter, versucht er einem mit kleinen Tipps wieder auf die Beine zu helfen. = Prüfungsfragen Linux-Bootprozess Virtuelle Maschinen: VMM, VM, Ablauf der Codeausführung, nicht strikt-virtualisierbare Architekturen, insbesondere x86 mit iret + fpush, Lösung dieser Probleme auf Xen. Threads User-Level vs Kernel-Level, Many-To-Many-Model. Thrashing Beschreibung des Phänomens; Situationen, in denen es auftritt; Rolle von Working-Set und Balance-Set bei der Vermeidung; Bestimmung des Working-Sets durch die PageFaultFrequency (Diagramm im entsprechenden Foliensatz). = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Für mich persönlich kann ich ein durchweg positives Fazit der Prüfung ziehen. Die Benotung war gerade angesichts der ein oder anderen Schwäche meinerseits (Xen - *aaarrggghhh*) sehr fair. Der Praktikumsaufwand sowie der Lernaufwand für die Prüfung sind meines Erachtens enorm. Trotzdem liegt man mit diesem Halbkurs sicherlich nicht daneben.
Nr. | Prüfer | Fach |
200 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
Datum der Prüfung: 10.10.2006 Benötigte Lernzeit als Empfehlung: Nicht zu knapp! Mehrere Wochen. Verwendete Materialien (Bücher, Skripte etc...) V. a.: -"Operating System Principles", Seventh Edition (Silberschatz, Galvin, Gagne) Ansonsten: -VL-Folien (v. a. für Thema Virtual Machines) -"Structured Computer Organization", Fourth Edition (Tanenbaum) (für Linking, Loading, Segmentation, Paging) -"Moderne Betriebssysteme" (Tanenbaum) (Unix filesystem, NTFS) -Online Manuskript zu "Linkers and Loaders" (Levine) (Kapitel 0 und 1) "Atmosphäre" der Prüfung / Verhalten der Beisitzer: Angenehm. Prof. Redlich sagte mir, ich müsste zwar meinen Personal- und Studentenausweis zeigen, aber er kennt mich ja schon, und auch dem Beisitzer Herr Gandre war ich nicht unbekannt. ;) Das Verhalten von Herrn Gandre war tadellos. ;) Prüfungsfragen: Ich konnte mir zu Beginn aussuchen, ob ich ein bestimmtes Thema abwählen oder auswählen möchte. Ich entschied mich für die Auswahl von Virtual Memory, was Prof. Redlich irgendwie erfreute. ;) Über dieses Thema durfte ich dann auch lange und ausführlich sprechen. Dann ging es um NTFS, wozu ich zwar so einiges sagen konnte, was aber nicht meine Stärke war. Zu Encrypted File Systems konnte ich garnichts sagen. Dann ging es noch kurz um Virtal Machines Microkernel war auch noch kurz dran: Hat Linux einen Microkernel? Merkmale von einem Microkernel Note: 1,3 Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...): Gute Prüfung, freundliche Bewertung. Man muss viel lernen, eine gute Note ist kein Schnäppchen. Aber die Benotung war völlig o.k. und fair. Andere Prüfer (keine Namen... ;)) hätten möglicherweise härter bewertet.
Nr. | Prüfer | Fach |
239 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung: 27.03.2007 = Benötigte Lernzeit als Empfehlung da relativ viel Stoff würde ich mind. eine Woche empfehlen und zusätlich in einer Lerngruppe sich den Stoff gegenseitig erklären (was ich leider nicht gemacht habe) = Verwendete Materialien (Bücher, Skripte etc...) Script und nebenbei auch das Netz und ein Buch zu EJB2.1 = "Atmosphäre" der Prüfung / Verhalten der Beisitzer normal, halt ne Prüfung = Prüfungsfragen EJB - Warum Local API - kurz etwas über Entity und Session Beans - Unmanaged und managed .NET Remoting Wie funktionierts? Wie kommt Client an das Remoteobjekt. CORBA Was ist Bestandteil des GIOP? Etwas wenig Fragen, da ich sehr oft stocken musste = Note (Optional): leider deshalb auch nur eine 3.0 = Fazit: war OK
Nr. | Prüfer | Fach |
240 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 26.03.2007 = Benötigte Lernzeit als Empfehlung mindestens eine Woche: es ist sehr viel Stoff = Verwendete Materialien (Bücher, Skripte etc...) CORBA-Spec, Folien, Internet = "Atmosphäre" der Prüfung / Verhalten der Beisitzer sehr angenehm, locker = Prüfungsfragen Wunschthema: CORBA * Aufbau erklären (Client,Server,Orb,DII,DSI ...) * kurz die Schritte bei der Softwareentwicklung erklären (idl->...->Server) in Sprache der Wahl (Java oder C++) * wie funktioniert die narrow-Methode (Signaturen aus dem IR holen ... ) * RMI: referenzielle Intigrität: wie lange bleibt sie erhalten (lt. spec nur innerhalb eines Methodenrufes) * RMI: kann man rausfinden, dass 2 remote-Objekte gleich sind? wenn ja, wie, wenn nein, warum? (ja -> referenzielle integrität, ...) * Rest: EJB * Was sind beans * Software schreiben (Client, SessionBean) * was ist "configuration by exception" * wie kommt man an remote-objekte? * resource injection (so kommt man an den jndi ...) * wie kommt man an ejb3 entities (sie haben kein remote-iface!) * etwas über Persistenz-Kontexte erzählen (entity-manager, aber auch in session-beans) * default transaction-type? * managed/unmanaged : was, wann, warum? = Note (Optional) sehr gut = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) sehr faire Prüfung, nur leider auch sehr viel Stoff, der gelernt werden muss. Wenn man in den VL anwesend war, und auch das Praktikum einigermaßen verstanden hat, sollte es nicht viele Probleme machen. Außerdem ist noch an zu merken, dass man sich am Anfang der Prüfung ein Thema aussuchen darf, oder auf Wunsch eines Abwählen!
Nr. | Prüfer | Fach |
241 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 03/27/07 = Benötigte Lernzeit als Empfehlung 4-5 Tage (Bei einigen Erfahrungen und guter Intuition) = Verwendete Materialien (Bücher, Skripte etc...) - Skripte - Advanced Corba Programming - EJB 3.0 von O`Reilly = "Atmosphäre" der Prüfung / Verhalten der Beisitzer - Locket und echt nett = Prüfungsfragen 1. Vergleich Corba/RMI Objekte 2. Garbage Collection in RMI, wie funktionierts, warum nicht in CORBA 3. Ein Remote/Servant Objekt in RMI implementieren 4. dann zusätzlich CORBA-Servant draus machen 5. dann zusätzlich .NET-remoting-Objekt machen (MarshalByValue implementieren) 6. habe ich damit eine CORBA-GC gebaut? Nein? Warum nicht? 7. EJB: 2 Vorhandene Klassen + Interfaces in Beans umwandeln, dabei 1. bean als stateless session bean 2. Injection für referenz 3. probleme bei aufruf von methoden mit this parameter (holen der beanreferenz über den Context habe ich nicht gewusst(fand er aber wohl nicht so schlimm), wäre auch über injection gegangen (da das bean stateless war), was ich ihm auch gesagt habe) 8. An dieser Stelle kam ein Hinweis, dass es ab jetzt nicht mehr ums durchkommen geht (also vermutlich, ob es 1.3 oder 1.0 wird) 9. Transparentes Lastverteilungssystem für CORBA implementieren (idee ist, dass der ORB über den GIOP-Befehl LocateReply die Referenz auf ein anderes Objekt, auf einem anderen Server zurückgibt), da musste er mir etwas nachhelfen (ich hatte schon vorher den Tip bekommen, dass es was mit GIOP zu tun hat, und dann sind wir die Befehle durchgegangen), irgendwann fiel der Groschen, ich habe ihm die Idee erzählt, war mir aber nicht sicher. Daraufhin hat er erklärt wie das genau funktioniert. = Note (Optional) 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Gute Prüfung. Generell denke ich: Man muss nicht viel wissen um 2.0 zu bekommen, man muss aber selbst nachdenken um 1.0 zu bekommen
Nr. | Prüfer | Fach |
242 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 27.03.2007 = Benötigte Lernzeit als Empfehlung 3-4 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Allgemein: - Folien zur Vorlesung: Bieten eine gute Zusammenfassung des Stoffes. - Wikipedia ( englischsprachige Version ) - Prüfungskomplexe: Prof. Redlich hält sich bei seinen Fragen weitestgehend an die von ihm herausgegebenen Vorgaben. Schränkt den doch erheblichen Stoffumfang zumindest ein wenig ein. RMI: - Java RMI - Grosso - O`Reilly - JDK 1.6 API - jGuru Tutorial zu RMI CORBA: - Advanced CORBA Programming with C++ - Henning, Vinoski - Addison-Wesley - CORBA 2.0 - Redlich - Addison Wesley - CORBA Explained Simply http://www.ciaranmchale.com/corba-explained-simply/ - CORBA-Spec der OMG EJB: - EJB2.0 - Monson-Haefel - O`Reilly - EJB3.0 - Monson-Haefel, Burk - O`Reilly .NET - Die .NET-Technologie - Beer, Birngruber, etc. - dpunkt.verlag - Verteilte Systeme mit .NET Remoting - Kuhrmann - Spektrum = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Die Atmospäre war - wie immer bei Prof. Redlich - sehr entspannt. = Prüfungsfragen RMI: - Grundlegende Bestandteile anhand einer selbst anzufertigenden Zeichnung aufzeigen und in Beziehung zueinander setzen. - Unterschied zwischen Marshalling und Java Serialization: - Serialisierung der Stubs anstelle von Remote Objects + Codebase-Annotationen. - Unterschiede in der Aufrufsemantik zwischen lokalen und entfernten Aufrufen: - PBV statt PBR für nicht-remote Objekttypen - PBR lässt sich durch Rückübertragung der entfernt getätigten Veränderungen an einem per Value versendeten Objektargument zwar simulieren, allerdings gilt dies nicht für Objekte wie Threads oder FileInputStreams, da diese erst gar nicht serialisierbar sind. .NET: - Server Activated Objects: Schritte zum Erhalt eines Proxys durch einen Klienten auflisten. - Merke: Serverseitg empfiehlt sich bei hoher Last der Einsatz der Single-Call- gegenüber der Singleton- Variante, da die Thread-Synchronisation für ein Singleton-Objekt wesentlich teurer ist als das ständige Erzeugen eines neuen Remote-Objektes pro Request. EJB: - Code für einer 3.0-Stateless-SB anhand von Vorgaben aufschreiben. - Vorsicht mit this-Referenzen: Eine Bean darf niemals eine this-Referenz an Klienten herausgeben. Sämtliche Kommunikation muss indirekt über das EJB-Object erfolgen, damit der Container Tx- und Security-Management betreiben kann. Anstelle der this-Referenz lässt sich über die Methode SessionContext.getBusinessObject( ... ) eine Referenz auf das eigene EJBObject erhalten und weitergeben. = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Durchweg positive Prüfung. Faire Benotung.
Nr. | Prüfer | Fach |
297 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 9.10.2007 = Benötigte Lernzeit als Empfehlung 2-3 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Folien, Buch von Silberschatz, Wikipedia (englische Variante) = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Angenehme, entspannt Atmosphäre. Beisitzer war ruhig. = Prüfungsfragen Man hat eine Vorbereitungsaufgabe bekommen, die man in der Zeit lösen konnte wie der Vorgänger in der Prüfung ist. 1. Vorbereitungsaufgabe: Deadlock - Was ist ein Deadlock? - Welche Bedingungen müssen gelten, damit einer auftritt? (Coffmann Kriterien) - Für jedes Kriterium erklären, wie man es verhindern kann. - Dann konkrete Frage zur Aufgabe: PC Pool mit Druckerserver (inkl. Spooling) - Kann ein Deadlock auftreten? Wie behebt man diesen? - Welche Ressourcen sind unterbrechbar, welche nicht? 2. Synchronisation und Nebenläufigkeit - Was ist das Problem? (Race Conditions) - Wie kann man das Lösen? ( Mutexe + Atomare Instruktionen) - Wie sind Mutexe implementiert? - Was kann man machen, wenn kein ASWAP unterstützt wird? (Simulation mit restartible atomic sequence -> Scheduler anpassen) 3. Bootprozess - Was passiert wenn Sie Ihren Rechner anschalten? - Wie kommt das BIOS in den Speicher? - Master Boot Sector, Partitionstabelle erläutern - Bootloader erläutern 4. Flash File System - welche zwei Ansätze (layered vs. YAFFS + JFFS) - Unterschiede erläutern - ein bisschen genauer auf YAFFS eingehen (logged file system) 5. Mitzenbacher Theorem erläutern + Kurve zeichnen und erklären. = Note (Optional) 1.3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Gute und faire Prüfung. Die Veranstaltung und Prüfung kann ich nur empfehlen.
Nr. | Prüfer | Fach |
524 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 18.07.11 = Benötigte Lernzeit als Empfehlung min. 1 Woche = Verwendete Materialien (Bücher, Skripte etc...) Skript, Wiki = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer SCHRIFTLICHE PRÜFUNG = Prüfungsfragen Die Prüfung wurde in BA und D unterteilt. Wobei BA Aufg 1-8 + opt. 9 und D Aufg 1-11 + opt. 12 erledigen mussten. 1) Vorteile Mikrokernel gegenüber Monolith und umgekehrt 2) ... 3) Schedulingstrategien (FCFS, SJF, Priority, RR), dazu auswerten der turarroundtime und Latenz 4) Programmierung eines Semaphors mittels vorgegebenen Mutex 5) Threadsafe / re-entrant Unterschied? Warum ist das wichtig für Threads? 6) Pagetable.. Größe berechnen, Anzahl Einträge, Inverted Pagetable 7) zu gegebenen Quellcode eines Bankenproblems (Transaktionen) entscheiden, ob es zu Deadlocks bzw. Race Conditions kommen kann (Begründung!) 8) Coffmann Kriterien nennen im weiteren noch : 9) -FAT : Berechnung der Cluster und FAT Größe bei gegebenen Plattengrößen -Inode : zu gegebenen Werten max. Dateigröße berechnen Zusatz : Page Fault Frequenzy eines konkreten CPUs angeben, sodass CPU Leistung min. die Hälfte ist = Note (Optional) noch nicht da = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) absolut faire Prüfung, es hätte wohl wesentlich schlimmer kommen können. Man sollte in der Vorbereitung ALLE Rechnungen nachvollziehen. Prof. Redlich übernimmt die Beispiele aus der Folien nicht, sondern ändert die Werte. Es muss also verstanden werden ! Alles in allem eine empfehlenswerte Prüfung
Nr. | Prüfer | Fach |
535 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung: Oktober 2011 = Benötigte Lernzeit als Empfehlung: 2 Wochen täglich 8 Stunden - Ich konnte die Vorlesung nicht besuchen. Vorbereitung: Relevante Kapitel im Tannenbaum durcharbeiten und danach die Folien durchgehen und das Wissen mit den zusätzlichen kleinen Konzepten ergänzen. Vor allem werden in den Folien zum teil andere Begriffe benutzt. Man muss sich manchmal klarmachen, dass zwei Begriffe ein Konzept meinen. Virtuelle Maschinen habe ich ganz zum schluss gelernt um im Blick zu haben, was da wirklich alles getan werden muss. Aber die Großen Zusammenhänge sind wohl nicht erwünscht (in der Prüfung). s.u. Fragen: Womit wollen wir Anfangen?: Prozesse Was ist ein Prozess und was gehört so dazu? Wie wird ein Prozess erstellt? Was ist eine Pagetable? Wei groß wird denn eine Pagetable maximal wenn die Virtuelle Adresse soundso lang ist und soundsoviel Bit davon Offset sind. Wie funktioniert eine Inverse Pagetable? Wie kommt es zu Thrashing? Er wollte unbedingt wissen, dass es ab einem bestimmten Verhältnis von Resident Set und Working Set umkippt. Ich habe so gelertn, dass ich eine klare Vorstellung von den Dingen bekomme, über die man da redet. Ich hatte die ganzen Zusammenhänge und Konzepte zu einem Großen Bild erarbeitet. Auf eine Frage konnte ich also auf völlig verschiedenen Ebenen Antworten. Das heißt, ich wusste nicht welche Ebene er nun grad meint. Beispiel: Wie entseht ein Prozess? (genau diese Formulierung) Aus welcher Sicht soll man das Beantworten? Betriebssystemsicht und Hardwaresicht?: Das OS berechnet wie viel Speicher benötigt wird, initialisiert alle möglichen Tabellen (Processtable, Pagetable,...) und MMU und TLB und so weiter Er wollte aber einfach ganz KONKRET fork() wissen - Also die Programmiersicht aus der ich wenn ich über Betriebssysteme nachdenke nicht gucke. Außerdem ist ja fork() und seine Arbeitsweise total UNIX-Spezifisch und hat nichts mit dem großen ganzen Verständnis zu tun... Was Professor Redlich aber leider haben will ist nicht prüfen ob eine Vorstellung vom großen und ganzen da ist sondern: Er stellt eine Frage sehr konkret gemeinte (aber leider nicht so zielgerichtet gestellte) Frage und hat seine 5 Punkte und Buzzwords im Kopf die kommen müssen. Er will von der ABstrakten Vorstellung sehr schnell ins Detail und hakt so lange nach bis ein Wort fällt. Beispiel: Sie haben Workingset erwähnt wie heißt den die Menge von Pages die grad eingelagert sind? Gefragt war nach Residentset (was einfach nur ne Übersetzung von der Bedeutung ist. Das hat meinermeinung nach nichts mit Verständnis zu tun sondern mit Auswendiglernen. Nochdazu fällt dieser Begriff im Tanenbaum nicht, mit dem ich gelernt habe. Entgegen allen anderen Berichten von Redlich über angenehme, faire Prüfung muss ich leider sagen, dass die Art des Stoffes der für eine gute Note verlangt wird, nicht meinen Vorstellungen von Lernen und Verstehen entspricht. Er bemängelte genau das, was ich als erfolgreiches Verstehen sehe. Zu einem Aspekt alle anderen auch im Kopf zu haben. Er bemängelte, dass ich auf die Fragen viel zu breit gefächert und \"unkonzentriert\" geantwortet habe. Also doch Karteikarten mit den 6 Begriffen zum Thema Threads auswendigkernen. Pah. Aufgrund all dessen wurde das nur ne 3...
Nr. | Prüfer | Fach |
548 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 20.02.2012 = Benötigte Lernzeit als Empfehlung ca. 5 Tage = Verwendete Materialien (Bücher, Skripte etc...) Skript, Wikipedia = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Sehr angenehm, Prof. Redlichs Prüfungen sind definitiv die Entspanntesten. Ich hab mich entschieden .NET zu streichen, Redlich hat dann von selbst mit Corba angefangen. = Prüfungsfragen 1. Corba -grober Ablauf einer Corba Transaktion -grundlegende Komponenten -bisschen Interface-Repostory -Details der Narrow-Methode 2. EJB -EJB Komponenten -Entitiy-Bean schreiben (es geht hauptsächlich um die Annotations) = Note (Optional) 1.7 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Die Prüfung kam mir ziemlich kurz vor, Note geht voll in Ordnung.
Nr. | Prüfer | Fach |
588 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
Dieses Prüfungsprotokoll ist direkt nach der Prüfung und vor der Bewertung entstanden. = 27. Februar 2013 = 3 Tage bis eine Woche = Vorlesungs - und Übungsfolien = Sehr angenehm. Keineswegs gezwungen. = 13 Aufgaben 1. Umrechnen von Zahlen in andere Zahlensysteme a) 2016 von Hex in Dez umwandeln b) 11001100 Als 16 Bit 2er Komplement dargestellte Zahl in Dez umwandeln c) 11001100 Als 8 Bit 2er Komplement dargestellte Zahl in Dez umwandeln d) Einen Ausdruck berechnen (sowas wie 1 + 4.4 + \"3\" + 10/4 * 0.5) 2. Definition \"Datentyp\" angeben. 3. Es waren zwei verschachtelte For-Schleifen gegeben, zu denen die entsprechenden Ausgaben angegeben werden sollten. 4. Sichtbarkeit von Variablen Der Code einer Klasse war gegeben. Dieser hatte neben main() eine Methode, die in main() innerhalb einer For-Schleife aufgerufen wurde. Dazu gab es fünf bis sechs mögliche Antworten, die anzukreuzen waren. (z.B Die Iterationsvariable der For-Schleife erreicht niemals die Abbruchbedingung.\" oder \"Die For-Schleife durchläuft 100 Iterationen.\") 5. Einfache Rekusion Gegeben war eine Rekursion. a) Was ist die Ausgabe bei Eingabe 5, 4? b) Welche mathematische Funktion wird durch die Rekursion simuliert? 6. Rekursion mit Draw Es war eine Rekursion gegeben, die Rechtecke zeichnete. Dazu gab es um die 8 Bilder sowie 4 Aufrufe der Rekusion mit je unterschiedlichen Kommandozeilenparametern. Den Aufrufen sollten die richtigen Bilder zugeordnet werden. 7. Referenzen, Veränderbarkeit von Datentypen Der Code einer Klasse war gegeben. Innerhalb dieses Codes gab es neben main() eine Methode, die innerhalb von main() aufgerufen wurde. An die zweite Methode wurden einige Variablen übergeben. Hier sollte nun geprüft werden - durch das Niederschreiben der Ausgabe des Codes - welche der übergebenen Variablen nach außen hin verändert wurden. 8. Einen Ausdruck in Postfix Notation war zu berechnen. 9. Es waren eine Klasse und eine von dieser abgeleiteten Klasse gegeben. Dazu gab es Variablen und Funktionsaufrufe, zu denen die Ausgabe angegeben werden sollte. 10. Verlinkte Listen: Gegeben waren 3 Methoden zum Suchen eines Knotens \"Key\". Dazu gab es 4 Darstellungen von verlinkten Listen. Die Methoden sollten den Listendarstellungen zugeordnet werden. 11. Es war ein Toy Programm gegeben. a) Gegen sie an, was nach dem Durchlaufen des Programms in den Registern [...] steht. b) Gleiche Aufgabe, aber mit einderen Eingaben Zusatzaufgaben a) Geben sie 3 No-Ops der Toy-Maschine an. Einer davon darf nicht R[0] enthalten.s b) Geben sie Zahlen a und b an, sodass gilt: (a>b && a-b < 0)
Nr. | Prüfer | Fach |
609 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 08.08.13 = Benötigte Lernzeit als Empfehlung Eine Woche, wenn man die Vorlesung mehr oder weniger regelmäßig besucht und die Praktikumsaufgaben bearbeitet hat. = Verwendete Materialien (Bücher, Skripte etc...) Vorlesungsfolien, Wikipedia = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Schriftliche Prüfung, genügend Zeit, insgesamt angenehm = Prüfungsfragen 1. Scheduling (6 Punkte) Gegeben ein Zustandsgraph mit drei Zuständen (Running, Ready, Blocked) und sechs gerichteten Kanten zwischen je zwei Zuständen. Man sollte für jede Kante beschreiben, ob der Zustandsübergang auftreten kann und falls ja, durch welches Ereignis dieser ausgelöst wird. 2. Scheduling (10 Punkte) Jeweils eine gute und eine schlechte Eigenschaft folgender Scheduler nennen: First Come First Serve, Round Robin, Shortest Job First, Multilevel Feedback Queue, Lottery Scheduling. 3. Synchronisation/Locks (8 Punkte) Auf einer Kreuzung können von allen vier Seiten Autos ankommen. Um Kollisionen zu vermeiden, soll vor Befahren der Kreuzung von jedem Fahrer eine Funktion auf einem zentralen Rechner ausgeführt werden. Erst wenn diese zurückkehrt, darf die Kreuzung befahren werden. Selbiges für das Verlassen der Kreuzung. Die Aufgabe bestand darin, die Funktionen hinauffahren() und herunterfahren() in Pseudocode zu implementieren, wobei Locks gegeben waren. Dabei waren folgende Bedingungen zu beachten: - Wenn ein Auto fahren kann, soll es auch fahren - Es sollen keine Kollisionen vorkommen - Es sollen keine Deadlocks entstehen. 4. Synchronisation/Semaphoren (6 Punkte) Mehrere Prozesse sollen sich an einer bestimmten Stelle im Programm \"treffen\", um danach die Bearbeitung gemeinsam fortzusetzen. Dies soll durch den Aufruf einer Funktion barrier() passieren, die solange blockiert, bis alle Prozesse sie aufgerufen haben. Die Aufgabe bestand darin, diese Funktion in Pseudocode mithilfe von Semaphoren zu implementieren. 5. Synchronisation/Deadlocks (4 Punkte) Auf einem System gibt es drei identische Ressourcen, wobei jeder Prozess maximal zwei davon benötigt. Welche der folgenden Aussagen ist richtig? Begründung! a) Deadlocks sind unmöglich b) Deadlocks sind möglich, aber vermeidbar c) Ob ein Deadlock auftritt, hängt von der Reihenfolge ab, in der die Prozesse die Ressourcen beanspruchen. Es gibt Fälle, in denen Deadlocks unvermeidbar sind. 6. Demand Paging, Thrashing (6 Punkte) Gegeben ein System mit 100ns Zugriffszeit für den Hauptspeicher und 10ms Zugriffszeit für die Festplatte. a) Berechne die durchschnittliche Zugriffszeit, wenn 0,1% der Anfragen in einem Page Fault resultieren. b) Berechne die maximale Page Fault Rate, damit die durchschnittliche Zugriffszeit maximal 110ns beträgt. 7. Thrashing (5 Punkte) Auf einem Unix-System mit einer Multilevel Feedback Queue tritt Thrashing auf. Gesucht waren die möglichen Ursachen. a) Ist der Verursacher ein Prozess mit hoher oder mit niedriger Priorität? b) Welche Eigenschaft des Prozesses könnte die Ursache sein? c) Welche Eigenschaft des Gesamtsystems könnte die Ursache sein? 8. Linking (4 Punkte) a) Nenne einen Vorteil von dynamischem Linking gegenüber statischem. b) Nenne ein Problem, das bei dynamischem Linking auftritt, bei statischem aber nicht. 9. Virtual Memory (Zusatzaufgabe, 1 Punkt) Müssen virtuelle Adressen immer gleich lang sein wie die physikalischen Adressen? 10. Virtual Memory (Zusatzaufgabe, 1 Punkt) Muss der Offset bei virtuellen Adressen immer gleich lang sein wie bei den physikalischen? 11. Synchronisation (Zusatzaufgabe, 4 Punkte) Gegeben ein System mit vier laufenden Threads, die alle auf eine Shared Variable V zugreifen. Dabei muss vor dem Zugriff ein Lock L angefordert werden, das nach dem Zugriff wieder freigegeben wird. Kann es dabei trotzdem zu einer Race Condition kommen? Begründung! = Note (Optional) 1,3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Angenehme Prüfung, keine unlösbaren oder zu schweren Aufgaben dabei. Benotung war auch sehr fair.
Nr. | Prüfer | Fach |
625 | Redlich, Jens-Peter, Prof. | Operating Systems Principles 2 |
Protokoll
= Datum der Prüfung 17.2.2014 = Benötigte Lernzeit als Empfehlung 1-2 Wochen = Verwendete Materialien (Bücher, Skripte etc...) VL Skript, Internet = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer angenehm und locker Beisitzer hat nichts gesagt = Prüfungsfragen Mit was würden sie gerne anfangen? -Raft/Paxos - Consensus Protokolle -Konsitenz im Allgemein, und spezielle Modelle (Strikt, Sequentiell, Kausal) an Beispielen erklären - Kausale Konsitenz, wie kann die hergestellt werden (Happens-Before-Relation, Lamport Time, Vektor-Time) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Ich war ganz schön durcheinander, konnte nichts auf den Punkt bringen, aber auch das sieht Prof Redlich nach und vergibt faire Noten. Die Fragen sind erstmal einfach und dann knifliger. Absolut Machbare Prüfung!
Nr. | Prüfer | Fach |
629 | Redlich, Jens-Peter, Prof. | Operating Systems Principles 2 |
Protokoll
= Benötigte Lernzeit als Empfehlung ca. eine Woche, die Themen waren zwar nicht allzu schwer/tief aber dafür viele und breit gefächert = Verwendete Materialien (Bücher, Skripte etc...) Folien der Vorlesung, bei Unklarheiten die entsprechenden Paper (entweder in den Folien referenziert oder duch suchen nach Buzzwords) = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer sehr locker, Beisitzer hat fast nichts gesagt Ich durfte mir mein erstes Themengebiet aussuchen (\"Womit wollen Sie denn anfangen?\") = Prüfungsfragen #Konsistenzmodelle: Wofür brauchen wir überhaupt Konsistenz? (CAP-Theorem etc), Warum brauchen wir Konsistenzmodelle? Welche Konsistenzmodelle gibt es so? Erklären sie mal anhand dieser 4 Grafiken jeweils um welche Konsistenz es sich handelt (mit entsprechenden Ablaufplänen der Form P1: W(x)a, W(x)b, R(x)a, etc, die ungeordnet waren) #Consensus Welche grobe unterteilung von Consensus-Protokollen gibt es? (Leader-based, gleichberechtigt) Was für eine Form davon ist RAFT? Was ist der Vorteil von Leader-Based? Wie funktioniert RAFT denn so grundlegend? #File-Systems Was ist der Unterschied zwischen Log-Structured und Journalling Filesystems? Was ist der unterschied zwischen Log und Journal? Was ist denn der Vorteil einer Log? Warum benutzt man das? Hat Logging/Journalling auch nachteile? Wie funktioniert externe Synchronität? Warum tut man das? Warum sehen Flash-Speicher-FS\' meistens aus wie Log-Structured? Warum hat Facebook Haystack entwickelt? (Long-Tail Distribution, minimierung random reads) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Faire Prüfung, lockerer Umgang
Nr. | Prüfer | Fach |
630 | Redlich, Jens-Peter, Prof. | Operating Systems Principles 2 |
Protokoll
= Datum der Prüfung 18. 2. 2014 = Benötigte Lernzeit als Empfehlung 1 Woche intensiv (hatte selbst nur 5 Tage) = Verwendete Materialien (Bücher, Skripte etc...) Vorlesungsfolien, Google = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Lockere Athmosphäre, Beisitzer hat nichts gesagt. = Prüfungsfragen Konnte Startthema aussuchen (Google FS) und dann erstmal selber anfangen zu erklären, zwischendurch kamen immer wieder Fragen. - Google FS (Warum verteilt, Woher kennt Master die Chunkserver, Vor- und Nachteile Master-Slave, usw, Welche Consistency hat es?) - Anschließen BigTable (Wie findet man einen Tablet, Wo ist METADATA gespeichert) - NCQ/TCQ (Warum macht man das?) - External Synchronization (Unterschied zu sync/async) - Threads: Lock free code (Wie funktioniert das?) - Da er sich nicht sicher war, letztes Thema: Consistency (3 Diagramme, welche Consistency liegt vor, warum?) = Note (Optional) 1.3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Sehr faire Prüfung, bei meinen Erklärungen fehlte oft der rote Faden und musste oft Denkpausen machen. Herr Redlich fragt aber gerne Fragen, auf die man gerade nicht vorbereitet ist (\"Warum macht man das genau so?\" \"Ich behaupte jetzt mal folgendes: ...\"). Dabei unterbricht er einen oft, und man weiß oft nicht wo er mit der Frage hin will. Die resultierenden Noten sind aber trotz Fehler die man macht gut.
Nr. | Prüfer | Fach |
669 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung Juli 2014 = Benötigte Lernzeit als Empfehlung 1 Woche, länger wäre besser gewesen = Verwendete Materialien (Bücher, Skripte etc...) VL-Folien, CORBA-Vendor-Docs = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Beisitzer hat nichts gefragt, gute Stimmung = Prüfungsfragen Wurde gefragt womit ich anfange möchte, habe leider CORBA gewählt. Damit war die ganze Prüfung dann CORBA. Fragen u.a.: - Corba skizzieren - Warum mehrere POAManger, POAs möglich? Wie werden Requests dort durchgereicht? - Was passiert wenn kein Servant für Objekt bereit liegt? (Incarnation oder Default Servant) - Wie geht DII, gibt es sowas in RMI? Warum nicht? - Objekt-Referenzen in CORBA vergleichen? (geht nicht) - Referentielle Integrität? (Ist alles CBV) - Sie sind _narrow, wie genau arbeiten sie? (Fragt im IR nach) Was für ein Interface hat das IR? - Garbage Collection, vgl zu RMI, wie kann man welche in CORBA hinzufügen? = Note (Optional) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Sehr in die Tiefe, wenig in die Breite. Note aber sehr fair auch wenn man öfters mal hängt.
Nr. | Prüfer | Fach |
670 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 7/2014 = Benötigte Lernzeit als Empfehlung Ich habe ca. 9 tage gebraucht. = Verwendete Materialien (Bücher, Skripte etc...) Eigentlich alle Bücher und Pfds die auf der Website verlinkt wurden, außerdem CORBA 3 von Siegel. Aber nur um unklare themen nachzuschlagen (POA, RMI runtime, narrow(), interface + implementation repository ...) = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Sehr locker. Sombrutzki hat nicht viel gesagt. Redlich honoriert auch wackeres überlegen. = Prüfungsfragen Ich habe RMI als Anfangsthema gewählt. 1.) Was passiert bei RMI während eines Methodenaufrufs? 2.) Was zerstört alles die illusion der location transparency bei RMI (außer: Netzwerklatenz, ...). Antwort: dass remote Funktionsaufrufe call-by-value sind, lokale call-by-reference 3.) Frage zu dynamic class loading (was wenn ziel des aufrufs die klasse zu einem parameter nicht hat, sondern nur eine oberklasse?) -> aufrufer schreibt bei aufruf die codebase location (http:// url vom .class file) neben den serialisierten parameter, ziel kann von dort das class file downloaden 4.) Wieso ist CORBA schneller als RMI 5.) Wie würde man corba narrow() (typsicher) implementieren? (Das ist die statische methode der corba/c++ X-helper klasse die eine corba referenz des typs object auf typ x downcastet). Aw: zB via der corba::object funktion getInterface(), die einem ja schon sagt, welche klasse ein corba::object wirklich hat. 6.) Kann man bei RMI und bei CORBA wissen, ob zwei objektreferenzen (stubs) dasselbe objekt referenzieren? Wie? Wieso nicht, wenn nicht? Antwort: Bei Corba nein sofern das Objekt es nicht explizit unterstützt. Weil der ORB gar nicht mitbekommt, wenn zweimal dasselbe objekt (d.h. mit demselben speicherplatz für den persistent state) von verschiedenen POAs erzeugt wird. 7.) Ist es notwendig so dass bei RMI die aufrufe call-by-value sind, oder waren die RMI entwickler bloß zu faul, und man hätte es so implementieren können, dass die Aufrufe alle call-by-reference sind? 8.) Grundlegende Fragen zu EJB - was ist ein: pojo, persistence context, persistence unit, ... 9.) Thema referential integrity bei RMI. 10.) Unterschied zwischen CORBA inout aufrufsemantik und normalen call-by-reference. 11.) Wieso gibt es kein DII in RMI? Antwort: Bei RMI sind Objektreferenzen = Stubs; den Stub kann man aber fragen, welche methoden die klasse hat, und diese methoden dann aufrufen. D.h. via reflection, zB API methode Object.getClass().getMethods().invoke(). Damit gibt es de facto bereits DII bei RMI, nämlich über reflection. Wenn ich\'s richtig verstanden habe. Bitte selber überlegen. = Note (Optional) 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Einige \'trickfragen\' die man aber kennt weil sie hier stehen.
Nr. | Prüfer | Fach |
671 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung SS 2014 = Prüfungsfragen 1. RMI + CORBA: --------------------- - schematische Skizze: Client/Server/Registry + Stub/Skel/RRL/TPL - Wie kommt Client an Remote Reference? - Woher weiß Client was die Remote Reference \"kann\"? - Unterschied Marshalling zu Serialization? - Was passiert wenn man ein Remote Object marshalled oder serialisiert? Ist das Ergebnis das Gleiche? - Was ist das CORBA DII? Wofür gebraucht? Welche Art von Applikation könnte so etwas brauchen? (z.B. Class Browser) - Gibt es so etwas wie das DII von CORBA auch bei RMI? In welcher Form? - Bei RMI werden die Parameter ja per Call-by-Value übertragen, Client sieht also Änderungen an den Parametern nicht. Warum kann der Server nicht einfach die geänderte Kopie zurück übertragen und der Client mergt dann einfach sein Original mit der neuen Version? -> Antw: Ginge vielleicht, hat aber neue Probleme: Was ist wenn sich die alte Version auf dem Client ändert? Wie Mergekonflikt auflösen? - Warum ist CORBA schneller als RMI? -> Antw: keine wirklich konzeptionelle Schwäche nur Umsetzung anders: RMI übertragt die dynamische Typen, d.h. Serialization nutzt run-time type inspection. CORBA überträgt nur die statischen Typen, daher beim compilen schon bessere Optimierung möglich und zur Laufzeit keine type inspection 2. EJB ------ - Was ist eine Entity Bean? - Wie wird aus nem POJO eine Entity Bean? - Was passiert wenn man dem EntityManager ne Bean fürs persist() zuschieben will, für die er gar nicht zuständig ist? - Woher weiß der EntityManager für welche Beans er zuständig is? -> Antw: Persistence Unit im Deployment Descriptor definiert - weiter erläutern was eine Persistence Unit, was ein Persistence Context ist und wie die beiden zusammenhängen/was die Unterschiede sind = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Faire Benotung und im Zweifel immer für den Studenten. Prüfer hat gutes Gefühl dafür welche Fragen schwer und welche leicht sind und wenn man bei ner schweren länger überlegen muss oder sich nicht ganz sicher ist, wird es einem schon als positiv gewertet wenn man die richtige Idee hatte. Also alles in allem top Prüfung.
Nr. | Prüfer | Fach |
672 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung 24.07.2014 = Benötigte Lernzeit als Empfehlung 1 Woche++ = Verwendete Materialien (Bücher, Skripte etc...) Folien sowie Internet zur Recherche, Übungsaufgaben, Mitschriften = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer Prüfung in einem klimatisierten Raum wegen hoher Außentemperaturen, etwas kalt, aber das erledigte sich in der Prüfung dann... Beisitzer war der Übungsleiter (Sombrutzki), der nur 1-2x was gesagt hat während der Prüfung, wenn ich Herrn Redlich partout nicht verstanden habe = Prüfungsfragen Ich habe mir kein Lieblingsthema / Startthema ausgesucht, was im Nachhinein glaube eine schlechte Entscheidung war (hätte \"Java: RMI / EJB\" gewählt) erspart hätte. Er hat daher dann ein Thema ausgewählt: Corba ... - Erklären Sie einfach mal, was es dort so gibt, wofür ist es da, wie funktioniert das Ganze >> Hier dann eine Grafik mit Client/Server, Stub, DII, DSI, Skeleton, InterfaceRepo, ImplRepo, POA und ORB aufgemalt und daran kurz erklärt (von seinen Folien) - 2 Clients haben 2 Referenzen, die er durch einen Debugger gejagt hat und man am Ende weiß, dass es am gleichen Servant rauskommt: kann man dann sagen, dass es aufs gleiche Corba Objekt zeigt? >> Nein: die Corba Objekte können auch unterschiedlich sein, aber mit dem gleichen Servant verbunden. Die Corba Objekte haben bspw, dann vlt eine unterschiedliche ID. - - Umgekehrte Frage: Ich weiß, dass 2 Referenzen auf 2 vollkommen verschiedene Servants zeigen, sind die Corba Objekte 100% verschiedenen? Nein. - Wofür braucht man jetzt DII? Wenn man bereits eine bestehende Anwendung hat: Methode a und b schon bekannt, \"c\" kommt neu hinzu. >> Hier habe ich lange gebraucht, um das korrekte zu sagen. Natürlich geht es darum, dass Methoden zur Compile-Zeit nicht vorhanden waren. Es geht dann aber auch nicht darum, \"c\" per se über DII dann aufzurufen bzw. dies zu implementieren, da man dann auch c über den Stub nutzen könnte. Viel mehr geht es um generische Aufrufe durch ein Userinterface: Der Client hat nichts speziell implementiert außer die Möglichkeit dem Nutzer zu geben selber zu entscheiden, welche Methode er aufrufen möchte und mit welchen Parameter. Erst mit einem UI das generischen Code erzeugt wird DII wirklich nützlich, sonst hätte man auch den Client-Stub jeweils erweitern /nutzen können. -- Gibt es DII auch in Java / RMI? - Wie funktioniert die Narrow Methode? Angenommen es gibt auch 2 InterfaceRepos mit jeweils den Klassen A, B und C und Sie bekommen eine Referenz von B und wollen zu A. Woher wissen Sie dann, dass das A im Repo ihrer A-Klasse entspricht, von dem Sie narrow aufrufen? >> Hier habe ich auch Schwierigkeiten gehabt, weil das Wording wichtig ist. In der Objektreferenz gibt es eine RepoID, so dass man an das richtige kommt sowie eine Referenz auf das Interface. Im InterfaceRepo sind dann die Hierarchien gespeichert und über einen _Interface Identifier_ lässt sich prüfen, ob meine Klasse dem Interface entspricht. Annahme hier noch, dass B von A ableitet - sonst klappt das natürlich nicht. Identifier / Identität und Referenz sollte man hier strikt trennen, weil man dann ans Falsche denkt. Ich habe zumeist Referenz benutzt, was er dann leider immer missverstanden hat. Zudem sollte man sich das Szenario auch wirklich klar machen, weil das B von A ableiten soll war mir unbekannt - bis zur Nachfrage bzw. dem Hinweis von dem Beisitzer. - JINI: Wofür ist es, wie funktioniert es, was ist der besondere Unterschied zum regulären Naming Service bspw. RMIRegistry? >> Geht üebr einen Lookup-Service; gibt ggf. einen allgemeinen Stub zurück, der Anfragen weiterleiten kann; ermöglicht _Broadcast_ (hierauf wollte er hinaus..): \"Kann sich jemand um einen Druckauftrag kümmern?\", was normal nicht funktioniert. - RMI: Ich bekomme eine Referenz auf ein Remoteobjekt, welches über RMI-Compiler \"SpecialOne\" compiliert wurde, lokal habe ich das Interface aber mit dem Standard rmic compiliert: kann ich jetzt damit arbeiten, wenn ja, wie? >> Der eigene Stub passt nicht zum RemoteObjekt, so dass über Dynamic Class Loading die richtige Implementierung aus der Codebase gesucht wird. - Thema Lokationstransparenz in RMI und wie sieht es mit Call-by-Reference in Corba aus? Ginge es nicht über inout? >> RMI hat remote + non-remote Objekte und letztere lokal CBR aber entfernt CBV sind. Zudem muss man RemoteExceptions behandeln, was auffällig ist. Corba gibt es nur Remote-Objekte oder Primitive Typen / Value Types, die CBV übertragen werden. \"Non-remote Objekte\" so gibt es nicht. Inout kopiert Werte in ein existierendes Objekt. Beim Übertragen und beim Server werden jedoch eigene Objekte genutzt, die die Werte nur vorhalten - keine richtige Referenz. = Note (Optional) 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Ich habe sehr schnell geredet und durch die falsche Wortwahl kam auch häufig etwas in den falschen Hals. Man sollte alles sehr langsam erklären und auf die Wörter achten, so dass 100% ersichtlich wird, dass man es verstanden hat. Viele Fragen habe ich auch falsch verstanden, so dass wir auch da immer wieder von anderen Dingen sprachen. Insgesamt hatte er wohl gesehen, dass ich es eigentlich kann, aber meine Erklärungen waren schlecht, so dass es gerade bei der Entscheidung 1.3 / 1.0 immer den Zwiespalt gab. Durch 2-3 zusätzliche Fragen (>15 Minuten die Prüfung überzogen), wo wir leider auch teilweise aneinander vorbei sprachen bzw. meine Erklärung nicht 100% exakt war, konnte er erst mit der letzten Detailfrage sich entscheiden zur 1.0. Insgesamt versucht er schon viel zu tun, um dem Studenten gerecht zu werden, wofür ich auch dankbar bin.
Nr. | Prüfer | Fach |
677 | Redlich, Jens-Peter, Prof. | Middleware Platforms |
Protokoll
= Datum der Prüfung Juli 2014 = Benötigte Lernzeit als Empfehlung 7 Arbeitstage = Verwendete Materialien (Bücher, Skripte etc...) Hauptsächlich Skript englische Wiki-Artikel zu den Themen = \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer sehr locker, freundlich Beisitzer hat nichts gesagt. = Prüfungsfragen Leider erinnere ich mich nicht mehr an alle Fragen aber: RMI: Allgemeine Archtitektur Client/Server, rmiregistry Warum ist RMI langsam? Warum brauch ich dynamische Typen? Die \"angenommen ich habe einen eigenen RMI-Compiler gebaut\" frage (siehe zwei prüfungen frauen) Warum brauchen wir bei RMI kein Interface Repository? CORBA: Allgemeine CORBA-Architektur Wofür ist das Interface Repository da? Angenommen ich will ein CORBA-Objekt von einem Server auf einen anderen migrieren: Wie könnte ich da vorgehen? (Ziel sollte sein das weniger Requests auf dem Server aufschlagen) EJB: Wo werden Datenbank-verbindungen verwaltet? Wie erkennen wir Entity-Beans? (er wollte persistance unit erklärt haben) Was für Arten von Primary-Key Erzeugung gibt es? = Note (Optional) 1,0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) faire prüfung, habe wenig \"fiese\" fragen abbekommen, es lohnt sich seine Terminologie zu benutzen
Nr. | Prüfer | Fach |
678 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
28.07.14= Datum der Prüfung 5tage á ca. 4h, dann schafft man aber nicht jedes detail, aber es sollte reichen= Benötigte Lernzeit als Empfehlung Folien, Wikipedia= Verwendete Materialien (Bücher, Skripte etc...) sehr angenehm, redlich lockert wieder mal gut durch seine witze und storries auf= \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer 1. Grundlagen Was ist Micro-kernel, \"Spooling\"? Vor-/Nachteil bei Micro- und bei monolithischem kernel. Warum ist \"time-sharing\" gut? Szenario nennen, bei dem das sequentielle abbarbeiten der jobs besser ist als time-sharing. Hier sollte nicht nur mit \"kontext switch dauert lange\" argumentiert werden. 2. Scheduling a) Gegeben war ein Zustandsgraph mit drei Zuständen (Running, Ready, Blocked) und sechs gerichteten Kanten zwischen je zwei Zuständen. Man sollte für jede Kante beschreiben, ob der Zustandsübergang auftreten kann und falls ja, durch welches Ereignis dieser ausgelöst wird. b) Drei segmente des Unix-Hauptspeichers nennen und angeben ob sie bei fork() kopiert werden. 3. Multilevel Feedback Queue Es wurde behauptet, dass MFQ schlecht ist. Ein Prozess der lange braucht, würde, wenn er erstmal an der reihe ist alles ewig blockieren, weil MFQ nicht wie bei RR unterbricht. Verifizieren, bzw. Falsifizieren mit Begründung 4. Threads Unterschied erklären von Reentrant und thread-safe 5. Synchronisation/Semaphore Mehrere Prozesse sollen sich an einer bestimmten Stelle im Programm \"treffen\", um danach die Bearbeitung gemeinsam fortzusetzen. Dies soll durch den Aufruf einer Funktion barrier() passieren, die solange blockiert, bis alle Prozesse sie aufgerufen haben. Die Aufgabe bestand darin, diese Funktion in Pseudocode mithilfe von Semaphoren zu implementieren. Die Anzahl der Threads war durch die Variable MAX gegeben, außerdem konnten die Prozesse ihre PID abfragen. Weiterhin war es erlaubt globalen Code hinzuschreiben. 6. Synchronisation/locks Auf einer Kreuzung können von allen vier Seiten Autos ankommen. Um Kollisionen zu vermeiden, soll vor Befahren der Kreuzung von jedem Fahrer eine Funktion auf einem zentralen Rechner ausgeführt werden. Erst wenn diese zurückkehrt, darf die Kreuzung befahren werden. Selbiges für das Verlassen der Kreuzung. Die Aufgabe bestand darin, die Funktionen hinauffahren(int fahrbanabschnitt) und herunterfahren(int fahrbahnabschnitt) in Pseudocode zu implementieren, wobei Locks gegeben waren. Dabei waren folgende Bedingungen zu beachten: - Wenn ein Auto fahren kann, soll es auch fahren - Es sollen keine Kollisionen vorkommen - Es sollen keine Deadlocks entstehen. 7. a) Unterschied ext./int. Fragmentierung b) virt. adr. gleich groß wie physikalische? Begründung! c) Eine CPU vertauscht Offset und VPN, beides ist gleich lang. Funktioniert das? Gibt es trotzdem Probleme? 8. Paging Gegeben ein System mit 100ns Zugriffszeit für den Hauptspeicher und 10ms Zugriffszeit für die Festplatte. a) Berechne die durchschnittliche Zugriffszeit, wenn 1% der Anfragen in einem Page Fault resultieren. b) Berechne die maximale Page Fault Rate, damit die durchschnittliche Zugriffszeit maximal 150ns beträgt. Alle Teilaufgaben brachten ungefähr 4-5 Punkte. Insgesamt jedenfalls 40 reguläre Punkte plus 4 Zusatzpunkte 9. Massenspeicher a) Greift man auf eine Festplatte mit random access zu dauert das Ergebnis weit länger als erwartet. Warum? b) Zwei Dinge nennen um obiges Problem zu verbessern. 10. UNIX Datei System Blockgröße: 2KB Adresse(Platte): 8B a) Max. Dateigröße, falls i-node zehn direkte einträge und jeweils einen einfachen, einen doppelten und einen dreifachen indirekten eintrag besitzt. b) Größte Datei bei FAT16, Blockgröße 4KB c) Wie groß ist die FAT-Datenstruktur bei b) wenn die Platte 10MB hat 11. Zusatzaufgabe Job A schickt Daten zu Job B. Job B bearbeitet diese und schickt ein gleich großes Paket (2B) wieder zurück. Beide Jobs haben einen 2B großen Puffer. Was ist das kleinste N, was zu einem deadlock führt? A: send N bytes to B while(receive data) display data exit B: while(receive 2 bytes of data) proces data send 2 bytes result to A exit= Prüfungsfragen noch nicht da= Note (Optional) ausreichend zeit, schwierigkeit auch in ordnung und die altklausur zu rechnen hat mir sehr geholfen, da diese sehr ähnlich war= Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...)
Nr. | Prüfer | Fach |
679 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
28.07.14= Datum der Prüfung 5tage á ca. 4h, dann schafft man aber nicht alles= Benötigte Lernzeit als Empfehlung Folien, Wikipedia= Verwendete Materialien (Bücher, Skripte etc...) sehr angenehm, redlich lockert wieder mal gut durch seine witze und storries auf= \"Atmosphäre\" der Prüfung / Verhalten der Beisitzer 1. Grundlagen Was ist Micro-kernel, \"Spooling\"? Vor-/Nachteil bei Micro- und bei monolithischem kernel. Warum ist \"time-sharing\" gut? Szenario nennen, bei dem das sequentielle abbarbeiten der jobs besser ist als time-sharing. Hier sollte nicht nur mit \"kontext switch dauert lange\" argumentiert werden. 2. Scheduling a) Gegeben war ein Zustandsgraph mit drei Zuständen (Running, Ready, Blocked) und sechs gerichteten Kanten zwischen je zwei Zuständen. Man sollte für jede Kante beschreiben, ob der Zustandsübergang auftreten kann und falls ja, durch welches Ereignis dieser ausgelöst wird. b) Drei segmente des Unix-Hauptspeichers nennen und angeben ob sie bei fork() kopiert werden. 3. Multilevel Feedback Queue Es wurde behauptet, dass MFQ schlecht ist. Ein Prozess der lange braucht, würde, wenn er erstmal an der reihe ist alles ewig blockieren, weil MFQ nicht wie bei RR unterbricht. Verifizieren, bzw. Falsifizieren mit Begründung 4. Threads Unterschied erklären von Reentrant und thread-safe 5. Synchronisation/Semaphore Mehrere Prozesse sollen sich an einer bestimmten Stelle im Programm \"treffen\", um danach die Bearbeitung gemeinsam fortzusetzen. Dies soll durch den Aufruf einer Funktion barrier() passieren, die solange blockiert, bis alle Prozesse sie aufgerufen haben. Die Aufgabe bestand darin, diese Funktion in Pseudocode mithilfe von Semaphoren zu implementieren. Die Anzahl der Threads war durch die Variable MAX gegeben, außerdem konnten die Prozesse ihre PID abfragen. Weiterhin war es erlaubt globalen Code hinzuschreiben. 6. Synchronisation/locks Auf einer Kreuzung können von allen vier Seiten Autos ankommen. Um Kollisionen zu vermeiden, soll vor Befahren der Kreuzung von jedem Fahrer eine Funktion auf einem zentralen Rechner ausgeführt werden. Erst wenn diese zurückkehrt, darf die Kreuzung befahren werden. Selbiges für das Verlassen der Kreuzung. Die Aufgabe bestand darin, die Funktionen hinauffahren(int fahrbanabschnitt) und herunterfahren(int fahrbahnabschnitt) in Pseudocode zu implementieren, wobei Locks gegeben waren. Dabei waren folgende Bedingungen zu beachten: - Wenn ein Auto fahren kann, soll es auch fahren - Es sollen keine Kollisionen vorkommen - Es sollen keine Deadlocks entstehen. 7. a) Unterschied ext./int. Fragmentierung b) virt. adr. gleich groß wie physikalische? Begründung! c) Eine CPU vertauscht Offset und VPN, beides ist gleich lang. Funktioniert das? Gibt es trotzdem Probleme? 8. Paging Gegeben ein System mit 100ns Zugriffszeit für den Hauptspeicher und 10ms Zugriffszeit für die Festplatte. a) Berechne die durchschnittliche Zugriffszeit, wenn 1% der Anfragen in einem Page Fault resultieren. b) Berechne die maximale Page Fault Rate, damit die durchschnittliche Zugriffszeit maximal 150ns beträgt. Alle Teilaufgaben brachten ungefähr 4-5 Punkte. Insgesamt jedenfalls 40 reguläre Punkte plus 4 Zusatzpunkte 9. Massenspeicher a) Greift man auf eine Festplatte mit random access zu dauert das Ergebnis weit länger als erwartet. Warum? b) Zwei Dinge nennen um obiges Problem zu verbessern. 10. UNIX Datei System Blockgröße: 2KB Adresse(Platte): 8B a) Max. Dateigröße, falls i-node zehn direkte einträge und jeweils einen einfachen, einen doppelten und einen dreifachen indirekten eintrag besitzt. b) Größte Datei bei FAT16, Blockgröße 4KB c) Wie groß ist die FAT-Datenstruktur bei b) wenn die Platte 10MB hat 11. Zusatzaufgabe Job A schickt Daten zu Job B. Job B bearbeitet diese und schickt ein gleich großes Paket (2B) wieder zurück. Beide Jobs haben einen 2B großen Puffer. Was ist das kleinste N, was zu einem deadlock führt? A: send N bytes to B while(receive data) display data exit B: while(receive 2 bytes of data) proces data send 2 bytes result to A exit= Prüfungsfragen noch nicht da= Note (Optional) ausreichend zeit, schwierigkeit auch in ordnung und die altklausur zu rechnen hat mir sehr geholfen, da diese sehr ähnlich war= Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...)
Nr. | Prüfer | Fach |
709 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Datei (Zugriff nur aus dem HU-Netz)
Nr. | Prüfer | Fach |
723 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
Datum der Prüfung: 21.07.15 Entspannte, angenehme "Atmosphäre" 11 Aufgaben, 2 Zusatzaufgaben 120 Minuten Bearbeitungszeit, sehr ausreichend Aufgabe 1: Architektur a) Zwei Vorteile von monolithischer Kernel zu Mikrokernel b) Zwei Vorteile von Mikrokernel zu monolithischem Kernel Aufgabe 2: Context Switch Intel SSE Register für Multimedia gesichert in PCB bei Context Switch? Begründung Aufgabe 3: Context Switch I/O Register gesichert in PCB bei Context Switch? Begründung Aufgabe 4: Scheduling FIFO soll kleinere Turnaround-Time haben als Round Robin, dafür 4 Prozesse mit Ankunftszeit und Dauer angeben und Time Quantum für Round Robin. Aufgabe 5: Thread Safe / Re-entrant a) Was passiert wenn eine Funktion keine der beiden Eigenschaften hat? b) Unterschied zwischen threadsafe und reentrant? c) Kann eine Funktion gleichzeitig beides sein? Aufgabe 6: Rade Condition / Deadlock Code gegeben: Class Account { Lock L; Int balance; Private void book(int x) { Acquire(L); Balance += x; Release(L); } Transfer1(Account dest, int x) { This.book(-x); Dest.book(x); } Transfer2(Account dest, int x){ Acquire(This.L); Acquire(Dest.L); This.Balance -= x; Dest.Balance += x; Release(Dest.L); Release(This.L); } } a) Race Condition bei Verwendung von ausschließlich Transfer1? Begründung b) Race Condition bei gemischter verwendung von Transfer1 und Transfer2? Begründung c) Deadlock bei ausschließlicher Verwendung von Transfer1? Begründung d) Deadlock bei ausschließlicher Verwendung von Transfer2? Begründung Aufgabe 6b (Vergessen zu Nummerieren): Deadlock Drei identische Ressourcen, jeder Prozess braucht maximal 2 davon MC: [ ] kein Deadlock möglich [ ] Deadlock möglich, aber vermeidbar [ ] Deadlock möglich und nicht vermeidbar Begründung. Aufgabe 7: External/Internal Fragmantation Erkläre beide Begriffe so dass der Unterschied klar wird. Aufgabe 8: Page Table 24 bit virtuelle Adressen, 32 bit physische Adresse, 256 MB RAM, 4KB große Seiten, 16 Prozesse Wie viele Einträge in der Pagetable bei Einstufiger Page Table _____ Invertierter Page Table _____ Aufgabe 9: MMU Prozessor mit defekter MMU, die virtuelle Page Number und Offset vertauscht. Funktioniert das trotzdem? Wenn ja, mit welchen „Nebenwirkungen“? Aufagbe 10: Thrashing Es kommt zu Thrashing a) Multilevel-Feedback-Queue Hat Prozess hohe oder niedrige Priorität? Begründung b) Prozesseigenschaft, die zu Thrashing führt c) Systemeigenschaft, die zu Thrashing führt Aufgabe 11: Page Faults CPU: 1000 MIPS (Million Instructions per Second) Festplatte: 10 ms Zugriffszeit Berechne die Page Fault Frequency, so dass man nicht mehr als die Hälfte an CPU-Rechenleistung verliert. ----------------------------------------------------------------------------------------- Zusatzaufgabe 1: FAT Festplatten mit 512 GB und 4 TB a) Berechne jeweils minimale Clustergröße für FAT16 und FAT 32 b) Berechne jeweils die Größe der FAT für FAT16 und FAT32 Zusatzaufgabe 2: Unix File System 2KB Blöcke, 8 Byte Adressen a) Berechne die maximale Dateigröße b) Berechne die maximale Größe des Dateisystems
Nr. | Prüfer | Fach |
740 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung 25.02.2015 = Prüfungsfragen == 1. a) 2015 als Binärzahl b) -2015 als Binärzahl im 16-Bit-Zweierkomplement c) 2015 zur Basis 9 d) Asugabe von System.out.println( 2+3+"=="+3+2); e) Ausgabe von System.out.println( 0.5 + 1/2 ); f) Ausgabe von System.out.println( 1/2 + 1/2 ); g) Ausgabe von: public class Mystery { public static double toFarenheit(double celsius) { return celsius * (9/5) + 32; } public static void main(String[] args) { for(int c = 10; c < 40; c += 10) System.out.println(toFarenheit(c)); } } == 2. Die nachfolgenden Werte sind Zahlen im 16-Bit-Zweierkomplement. Was ist das Ergebnis? BEEF < 1 BEEF + 1 BEEF | 1 BEEF & 1 BEEF ^ 1 BEEF < FACE FEED | FACE FEED & FACE FEED ^ FACE FEED + FACE == 3. Wie viele Zeilen gibt das folgende Programmfragment aus, wenn N = 5 ist? a) for(int i = 0; i < N; i++) for(int j = 0; j < 3; j++) System.out.println("GdP macht Spass"); b) for(int i = 0; i < N; i++) for(int j = N; j > 0; j--) System.out.println("GdP ist cool"); c) for(int i = 0; i < N; i++) { int k = 0; do { System.out.println("GdP ist einfach"); --k; } while(k > 0); } == 4. Welchen Wert liefert g(3122013) ? public static int g(int n) { if(n % 2 == 0) return n/10; return g(g(n/10)); } == 5. Referenzen (Welche Ausgabe erzeugt das Programm) public class References { public static void mystery(int x, int[] y, int[] z) { x = x + 1; y[0] = y[0] + 1; z = y; } public static void main(String[] args) { int xx = 1; int[] yy = { 2, 3, 4, 5 }; int[] zz = { 6, 7, 8, 9 }; mystery(xx, yy, zz); System.out.println(xx); System.out.println(yy[0]); System.out.println(zz[0]); yy = zz; mystery(xx, yy, zz); System.out.println(xx); System.out.println(yy[0]); System.out.println(zz[0]); } } == 6. Polymorphie (Welche Ausgabe erzeugt das Programm) class A { public int x; public A(int a) { this.x = a; } public int getX() { return x; } public int getY() { return this.getX() + 1; } } class B extends A { public int x; public B(int b) { suber(b); this.x = 2 * b; } } class C extends B { public C(int c) { super(c); } public int getX() { return 5; } } public class Inheritance { public static void main(String[] args) { A aa = new A(10); A ab = new B(100); A ac = new C(1000); System.out.println(aa.getY()); System.out.println(ab.getY()); System.out.println(ac.getY()); B bb = new B(10); B bc = new C(100); System.out.println(bb.getY()); System.out.println(bc.getY()); C cc = new C(10); System.out.println(cc.getY());^ } } == 7. Implementiere folgende Funktion ohne for/while. Zusatzpunkt für eine Lösung ohne if. class Node { int value; Node next; } int count(Node liste) { int cnt = 0; for(Node n = liste; n != null; n = n.next) cnt++; return cnt; } == 8. Toy-Programm schreiben - Zahl zwischen 0 und 100 von Adresse 01 lesen - mit 517 multiplizieren - Ergebnis an Adresse 02 schreiben - eine generelle Multiplikation ist nicht gefragt - 517 Additionen sind wegen Speichermangels nicht möglich - 517 = 512 + 4 + 1, 1 = 2^0 4 = 2^2 512 = 2^9 - Instruktionsreferenz ist gegeben == Zusatzaufgabe. in Postfix-Notation: 2 3 + 4 5 * + 1 * Schreiben Sie den Ausdruck in den geforderten Notationen: Infix-Notation Prefix-Notation Ergebnis des Ausdrucks (als eine Zahl) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Wenn man keine Probleme mit den Übungsaufgaben hatte, war die Klausur eher einfach. Die Zeit hätte für mich gereicht um doppelt so viele Aufgaben zu bewältigen. Dank der Zusatzpunkte ist eine Spitzennote leicht zu erreichen.
Nr. | Prüfer | Fach |
763 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 25.07.2016 = Benötigte Lernzeit als Empfehlung 1-2 Wochen, je nach dem wie gut man aufgepasst hat. = Verwendete Materialien (Bücher, Skripte etc...) Redlichs Folien, manchmal Google = Prüfungsfragen Maximale Anzahl der Punkte 31. Es gab zwei Zusatzpunkte. AUFGABE 1 (6 Punkte) a) Was ist ein Mikro-Kernel? b) Was sind die Vorteile von einem Mikro-Kernel gegenüber einem monolithischen Kernel? c) Was sind die Nachteile von einem Mikro-Kernel gegenüber einem monolithischen Kernel? d) Was ist Spooling? e) N Jobs werden sequenziell ausgeführt. Hätte man Time-Sharing benutzt, wäre die Bearbeitung schneller gegangen. Bei welchem Typ Job ist das der Fall? f) Wann ist das sequenzielle Ausführen von Jobs schneller als die Benutzung von Time-Sharing? = = = = AUFGABE 2 (3 Punkte) Implementieren sie eine Funktion "halfbarrier". Es gibt N Threads und es ist bekannt, dass jeder Thread halfbarrier einmal aufruft. Wenn ein Thread die Funktion halfbarrier aufruft, dann soll die Funktion blockieren, bis mehr als N/2 Threads die Funktion halfbarrier aufgerufen haben. Wenn bereits mehr als N/2 Threads die Funktion halfbarrier aufgerufen haben, dann soll die Funktion für die anderen Threads nicht mehr blockieren, sondern sofort zurückkehren. Als Hilfe kann man die Funktion threadID benutzen, welche jedem Thread seine eindeutige ID zwischen 0 und N-1 zurückgibt. Wichtig ist, dass man kein Spin-Lock benutzt, sondern dass die Funktion wirklich blockiert! [Tipp von mir: In der VL wurde die Funktion barrier implementiert, halfbarrier funktioniert fast genauso und die Funktion threadID braucht man in der "optimalen" Lösung nicht!] = = = = AUFGABE 3 (3 Punkte) Gegeben die Implementierung eines Buffers (genau das gleiche Bild wie in der Vorlesung): char buf[]; int head = 0, tail = 0; sem cnt = 0; void put(char c) buf[head++] = c; V(cnt); char get(void) P(cnt); c = buf(tail++); return c; a) Was ist mit dem obigen Code nicht in Ordnung? b) Korrigieren Sie den Code! = = = = AUFGABE 4 (3 Punkte) Die Firma BilligPC verkauft CPUs, die eine defekte MMU haben. Die defekte MMU vertauscht die VPN (Virtual Page Number) und den Offset. Das bedeutet: Die MMU schaut mit dem Offset in der Page-Table nach und addiert dann die VPN darauf. Ihr Freund behauptet, mann kann mit der defekten MMU trotzdem virtuelle Adressen realisieren. Hat er damit recht? Und wenn ja, gibt es negativen Nebenwirkungen? = = = = AUFGABE 5 (2 Punkte) Graf Zahl hat eine neue malloc-Funktion geschrieben: malloc(len). Die funktioniert wie folgt: Die Größe (len in Bytes) wird auf ganze tausender aufgerundet (dh. 512 -> 1000, 1024 -> 2000, usw.). Dann wird der Speicher allokiert, aber immer mindestens eine ganze Seite (4K groß). Wie groß ist die externe Fragmentierung: _____ Wie groß ist die interne Fragmentierung: _____ = = = = AUFGABE 6 (3 Punket) Der Prinz und die Prinzessin lassen sich scheiden. Die Gütertrennung der beiden wird mit folgendem Algorithmus vollzogen: Beide schreiben an den Anwalt des anderen einen Brief, in dem sie einen Gegenstand X fordern. Sollten beide am gleichen Tag denselben Gegenstand fordern, so müssen sie am folgenden Tag einen Brief schreiben, der die Forderung (ganz offiziell) wieder rückgängig macht. Unter den Besitztümern der beiden befinden sich auch ein Hund und sein Hundehaus, sowie ein Vogel und dessen Vogelkäfig. Man hat sich geeinigt: Sollte am Ende der Gütertrennung ein Tier von seiner Behausung getrennt sein, das heißt, einer der beiden bekommt das Tier und der andere sein Haus, so fängt man die Gütertrennung wieder ganz von vorne an. Der Prinz und die Prinzessin fahren nun getrennt in den Urlaub. Beide haben ein Programm geschrieben, um die Gütertrennung für sie nach dem Algorithmus abzuhandeln. Als sie lange Zeit später aus dem Urlaub zurückkommen stellen sie fest: Die Güterverhandlung ist immer noch nicht fertig. Warum? Nehmen Sie zu folgenden drei Aussagen stellung: a) Es ist ein Deadlock aufgetreten. b) Es ist ein Livelock aufgetreten. c) Eines der Programme ist "verhungert". (Hiermit sollte Starvation gemeint sein...) = = = = AUFGABE 7 (2 Punkte) [Hier bin ich mir nicht so sicher.] Jemand hat eine Idee, Computer "besser" zu machen: Das Textsegment soll nicht aus dem Swap-Space geladen werden, sondern direkt aus dem Programm-Code von der Platte. Nennen Sie zwei Probleme dabei bzw. Voraussetzungen, unter denen es funktioniert. = = = = AUFGABE 8 (3 Punkte) Gegeben sind 8 identische Festplatten, die jeweils 1TB groß sind. (Hier folgte eine Erklärung von RAID0, RAID1 und RAID4) Wie viele Daten kann man mit dem jeweiligen System speichern? RAID0: RAID1: RAID5: Wie viele Festplatten müssen mindestens kaputt sein, damit Daten verloren gehen, wenn die Fehler MAXIMAL UNGÜNSTIG verteilt sind? RAID0: RAID1: RAID5: Wie viele Festplatten müssen mindestens kaputt sein, damit Daten verloren gehen, wenn die Fehler MAXIMAL GÜNSTIG verteilt sind? RAID0: RAID1: RAID5: [Hierbei ist anzumerken: Fehler bedeutet, dass eine ganze Festplatte ausfällt.] [Zweite Anmerkung: Pro Frage gab es 1 Punkt und zwar NUR wenn man alle 3 richtig hatte] = = = = AUFGABE 9 (3 Punkte) Gegeben ein Dateisystem: FAT10 und eine 1GB große Festplatte. Wie groß muss ein Cluster mindestens sein? Wie groß ist die größte Datei, wenn ein Cluster 1KB groß ist? Wie groß ist die FAT, wenn ein Cluster 1KB groß ist? [Gemein: die Clustergröße spielt hier keine Rolle!] = = = = AUFGABE 10 (3 Punkte) Gegeben ein Unix-Dateisystem, das wie folgt aussieht: Die ersten 8 Einträge einer inode sind direkt, es gibt 1 indirekten Eintrag, 2 zweifach-indirekte Einträge und 3 dreifach-indirekte Einträge. Blöcke sind 2KB groß, Adressen sind 8 Byte groß. Was ist die maximale Dateigröße? Was ist die maximal verwaltbare Festplattengröße? = = = = ZUSATZAUFGABE (2 Zusatzpunkte) Zuerst wurde (sehr ausführlich) die Page Fault Frequency (PFF) erklärt (sogar mit dem Bild aus den Folien). Aufgabe: Die CPU arbeitet mit 1000MIPS (Millionen Instruktionen pro Sekunde). Ein Festplatttenzugriff dauert 10ms. Wie groß darf die PFF maximal sein, damit das System nicht mehr als 4 mal so langsam wird? = Note (Optional) 1.0 WICHTIGER TIPP FÜR ALLE: Ich würde es jedem empfehlen zur Klausureinsicht zu gehen! Die Korrektoren waren bei uns schon am selben Abend fertig und haben dabei auch Fehler gemacht. Auf Aufgabe 2 haben viele Studenten 0/3 Punkten trotz einer richtigen Lösung bekommen. Viele Studenten die da waren konnten ihre Note noch aufbessern - es lohnt sich :) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Die Aufgabe mit der Internen und Externen Fragmentierung war komisch, weil nicht klar war, auf was sich die Fragmentierungen beziehen sollen (den Allokator oder die Pages?). Prinz und Prinzessin waren zwar witzig, aber mir gefallen solche Textaufgaben nicht. Ansonsten ließ sich alles mit dem Wissen aus der VL gut beantworten, besonders haben auch die vorherigen Protokolle geholfen, denn es stellt sich heraus: Viele Aufgaben werden immer wieder gestellt. Diese vorher zu üben/durchzurechnen kann ich nur empfehlen.
Nr. | Prüfer | Fach |
795 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung 02.03.2017 = Benötigte Lernzeit als Empfehlung -Voraussetzung: Anwesenheit bei allen Vorlesungen und Übungen -ein Nachmittag für die, die Java schon Java vor dem Modul sehr gut konnten -2 Tage für Java Anfänger = Verwendete Materialien (Bücher, Skripte etc.) Vorlesungsfolien,Übungsfolien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Entspannt, selbst bei der Prüfung verliert Redlich nicht seinen Humor = Prüfungsfragen 1. Toy Maschine Drei Werte sind im Hauptspeicher abgespeichert, welchen Wert haben sie nach der Ausführung des Programms ? 2. Statische/Dynamische Bindung Was wird bei den einzelnen Zeilen ausgegeben? Die Zeilen beziehen sich auf eine Klasse A und eine Klasse B extends A, welche Variablen und Mehtoden enthalten, die in beiden Klassen die selben Bezeichnungen haben, jedoch unterschiedliche Werte in den Variablen oder Effekte/Ergebnisse bei den Funktionen hat. Dort werden Zeilen angefragt wie: A a=new B(); a.v1; a.f1(); 3. Java Operatoren Ist die Benutzung dieser Operatoren(+,-,++,--,|,+=,...) in diesem Kontext erlaubt ? Warum oder warum nicht ? Tabelle mit Bedeutung der Operatoren ist gegeben. 10 Codezeilen werden gegeben. 4. Rekursives Zeichnen Aufgabenstellung: Geben sie alle Kombination der folgenden 7 Codezeilen an, damit das Programm folgendes Bild liefert 5. Zahlensysteme -dezimal zu binär -binär negieren -dezimal zur Basis 7 (geht am Besten über dezimaö -> binär -> Basis 7 -größte und kleinste int Zahl 6. Datentypen/Referenztypen int und String Variablen sind gegeben. Diese werden einer Funktion übergeben, welche die übergebenden Werte ändert. Werden auch die Werte bei den Originalvariablen geändert oder nur innerhalb der Funktion? danach kam für den String noch eine replaceAll Funktion, die den Wert geändert hat, leicht zu überlesen. = Note (Optional) 1.3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Eine sehr faire Prüfung, obwohl ich das mit den Operatoren nicht gerechtfertigt fand, da Redlich sagte er will uns nicht Java beibringen sondern das Programmieren und nimmt dann etwas javaspezifisches ran.
Nr. | Prüfer | Fach |
797 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung 02.03.2017 = Benötigte Lernzeit als Empfehlung -Voraussetzung: Anwesenheit bei allen Vorlesungen und Übungen -ein Nachmittag für die, die Java schon Java vor dem Modul sehr gut konnten -2 Tage für Java Anfänger = Verwendete Materialien (Bücher, Skripte etc.) Vorlesungsfolien,Übungsfolien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Entspannt, selbst bei der Prüfung verliert Redlich nicht seinen Humor = Prüfungsfragen 1. Toy Maschine Drei Werte sind im Hauptspeicher abgespeichert, welchen Wert haben sie nach der Ausführung des Programms ? 2. Statische/Dynamische Bindung Was wird bei den einzelnen Zeilen ausgegeben? Die Zeilen beziehen sich auf eine Klasse A und eine Klasse B extends A, welche Variablen und Mehtoden enthalten, die in beiden Klassen die selben Bezeichnungen haben, jedoch unterschiedliche Werte in den Variablen oder Effekte/Ergebnisse bei den Funktionen hat. Dort werden Zeilen angefragt wie: A a=new B(); a.v1; a.f1(); 3. Java Operatoren Ist die Benutzung dieser Operatoren(+,-,++,--,|,+=,...) in diesem Kontext erlaubt ? Warum oder warum nicht ? Tabelle mit Bedeutung der Operatoren ist gegeben. 10 Codezeilen werden gegeben. 4. Rekursives Zeichnen Aufgabenstellung: Geben sie alle Kombination der folgenden 7 Codezeilen an, damit das Programm folgendes Bild liefert 5. Zahlensysteme -dezimal zu binär -binär negieren -dezimal zur Basis 7 (geht am Besten über dezimaö -> binär -> Basis 7 -größte und kleinste int Zahl 6. Datentypen/Referenztypen int und String Variablen sind gegeben. Diese werden einer Funktion übergeben, welche die übergebenden Werte ändert. Werden auch die Werte bei den Originalvariablen geändert oder nur innerhalb der Funktion? danach kam für den String noch eine replaceAll Funktion, die den Wert geändert hat, leicht zu überlesen. = Note (Optional) 1.3 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Eine sehr faire Prüfung, obwohl ich das mit den Operatoren nicht gerechtfertigt fand, da Redlich sagte er will uns nicht Java beibringen sondern das Programmieren und nimmt dann etwas javaspezifisches ran.
Nr. | Prüfer | Fach |
817 | Redlich, Jens-Peter, Prof. | Operating Systems Principles 2 |
Protokoll
= Datum der Prüfung 2018 = Benötigte Lernzeit als Empfehlung 1-2 Wochen = Verwendete Materialien (Bücher, Skripte etc...) Folien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Sehr angenehm = Prüfungsfragen Womit möchten Sie anfangen? --> Konsensus: Was ist Konsensus? Warum brauchen wir das? Warum haben wir das in 'Grundlagen der Programmierung' nicht gebraucht? Fehlermodelle (fail-stop, byzantine) und Protokolle (Raft/Paxos, BGP) zuordnen. BGP Voraussetzungen erklären. --> 3m +1 (m+2 mit Signaturen) Raft erklären. Commitment-Regeln. Leader-Wahl-Regeln. LBFS: Was ist das besondere? --> Übertragung geringerer Datenmengen, bei mehr Latenz Wie funktioniert das mit den Hashfunktionen genau? --> Rabin-Fingerprint grob erklärt und was der Vorteil ist. Konsistenz: Perterson-Algorithmus wurde mir gegeben und ich sollte erklären, was dieser tut und ob er funktioniert. Wir sind auf atomics zu sprechen gekommen. Wie funktionieren diese? --> load-aquire- und store-release-Barrieren Warum hilft es nicht jede Variable als atomic zu definieren? Kritische Sektion kann mehr als eine Anweisung umfassen! Muss ich immer jede shared Variable als atomic definieren? --> nein siehe Bsp. in den Folien = Note (Optional) Ich bin zufrieden ;) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) War alles sehr angenehm. Es wurden oft auch sehr tief gehende Fragen gestellt bzw. ich habe von mir aus viele Details angeboten.
Nr. | Prüfer | Fach |
858 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Datei (Zugriff nur aus dem HU-Netz)
Nr. | Prüfer | Fach |
872 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Datei (Zugriff nur aus dem HU-Netz)
Nr. | Prüfer | Fach |
873 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
Datum der Prüfung: 21. Februar 2019 Verwendete Materialien: Folien der Übung, Folien der Vorlesung, Prüfungsprotokolle "Atmosphäre" der Prüfung / Verhalten der Beisitzer: Sehr angenehm, entspannt. Zeit ist sehr großzügig bemessen Prüfungsfragen: 1. (7 Punkte die *1,0 zählen) Eine Funktion tr(n) implementieren die die n-te Tribonacci Zahl ausgibt. tr(n)=tr(n-1)+tr(n-2)+tr(n-3) für n >= 3. Bei Eingabe einer negativen Zahl soll das Programm abgebrochen werden. Für n=0 ist das Ergebnis 0, Für n=1 und n=2 ist das Ergebnis 1. a) rekursiv b) iterativ, also mit einer Schleife 2.(3 Punkte die *2,33 zählen) Eine Funktion schreiben, die drei boolean übergeben bekommt und falls zwei oder mehr davon "true" sind "true" zurückgibt. Ansonsten soll "false" zurück gegeben werden. 3. (6 Punkte die *1,67 zählen) Gegeben waren drei kurze Toy Programme mit jeweils 5 Zeilen. Für alle drei Programme sollte entschieden werden ob a) das Proogramm endlos lange läuft b) falls es nicht endlos lange läuft, was steht am Ende in Register 2 Alle drei Programme unterschieden sich nur durch 2 Zeilen. erstes Programm: Zahl 11 wird in Register 1 geladen; Zahl 55 wird in Register 2 geladen; Register 2 bekommt das Ergebnis von Register 2 minus Register 1; Falls der Wert im Register 2 größer als 0 ist Sprung zur Subtraktion; halt 10: 7111 11: 7255 12: 2221 13: D212 14: halt zweites Programm: Zahl 11 wird in Register 1 geladen; mem[10] in R2 geladen; R2 bekommt R2 minus R1; Falls Wert in R2 größer als 0 Sprung zur Zeile in der zuerst etwas in Register 2 geladen wurde; halt 10: 7111 11: 8210 12: 2221 13: D211 14: halt drittes Programm: Zahl 11 wird in Register 1 geladen; mem indirekt [R[1]] in R2; R2 bekommt R2 minus R1; Falls Wert in R2 größer als 0 Sprung zur Subtraktion; halt 10: 7111 11: A2?? 12: 2221 13: D212 14: halt 4. (10 Punkte die *1,0 zählen) Zahlensysteme a) 16 stetige Binärzahl in Hexazahl umwandeln b) 42662 (als Dezimalzahl) in eine Hexazahl umwandeln c) -51 in 16Bit Zweierkomplement umwandeln d) (9.0 * (19/3)) als Java Ausdruck 5. (14 Punkte die *0,93 zählen) Klasse A string s foo(.....) bar(.....) Klasse B extends A string s foo(......) main B b = new B() A a = b . . . Alles war auf Public gesetzt. in der bar stand in etwa (foo() + s), in der foo ("A" + s) in der A Klasse und ("B" + s in der B Klasse), s wurde immer entweder auf "a" oder auf "b" gesetzt. Gesucht waren die Ausgaben von a.foo b.foo a.bar b.bar 6. (6 Punkte die *1,67 zählen) Gegeben war ein kurzes Programm, das eine Zahl einlesen sollte, so viele Zeichenketten einlesen sollte und in umgekehrter Reihenfolge ausgeben sollte. Das Programm enthielt drei Fehler die korrigiert werden sollten erstens: Das Programm kompiliert nicht, wieso? Korrektur angeben. zweitens: Das Programm kompiliert jetzt aber stürzt ab, wieso? Korrektur angeben. drittens: Das Programm kompiliert jetzt und stürzt nicht mehr ab, aber es wird nicht das richtige ausgegeben, wieso? Korrektur angeben. 7. (4 Punkte die *1,75 zählen) Ausgabe angeben für ein Programm. . . . point (x, y) this.x = x this.y = y scale(int factor) x = factor * x y = factor * y main p.point(-2, -1) q.point(42, 13) System.out.println(p) System.out.println(q) q = p p.scale q.scale System.out.println(p) System.out.println(q)
Nr. | Prüfer | Fach |
888 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung : 2019 Nachklausur Bemerkung : Hier gibt es nicht alle fragen, sondern nur 2 die ich gut erinnern konnte = Prüfungsfragen 1) public class Main { public static void main(String[] args) { A aa = new A(10); A ab = new B(100); A ac = new C(1000); System.out.println(aa.getY()); System.out.println(ab.getY()); System.out.println(ac.getY()); B bb = new B(10); B bc = new C(100); System.out.println(bb.getY()); System.out.println(bc.getY()); C cc = new C(10); System.out.println(cc.getY()); } } class Main { public static void main(String[] args) { int x = 2; int[] y = {2, 3, 4}; String z = "5"; f(x, y, z); z = z.replaceAll("5", "7"); System.out.println(x); System.out.println(y[0]); System.out.println(z); z.replaceAll("7", "11"); System.out.println(z); } public static void f(int x, int[] y, String z) { x = 1111; y[0] = 2222; y = new int[5]; y[0] = 4444; z = "5555"; } } ***** Antwort ist: 2 2222 7 7 ***** 2) Was ist in Java erlaubt und was ist nicht erlaubt? Was is das ergebis bei diejenigen, die erlaubt sind? boolean b = false; int i1 = 1 * (2) - (b ? 2 : 5 - 3 / 2); int i2 = (2 ** (2 + 4) | 3); int i3 = (2 - 2 > 0 ? 4 : 2) / 4; int i4 = 2 | 1 | 6 & 12; double f1 = 1 / .2 * 1. / 2; boolean b1 = true + false; boolean b2 = !!!true || !true; String s1, s2, s3; s1 = s2 = 4 + ""; s3 = "4" += "2"; 3) Zahlendarstellung frage genau wie in 2015 Prüfung gekommen ist. Die nachfolgenden Werte sind Zahlen im 16-Bit-Zweierkomplement. Was ist das Ergebnis? BEEF < 1 BEEF + 1 BEEF | 1 BEEF & 1 BEEF ^ 1 BEEF < FACE FEED | FACE FEED & FACE FEED ^ FACE FEED + FACE
Nr. | Prüfer | Fach |
894 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 25.07.2019 = Benötigte Lernzeit als Empfehlung 4 Monate intensiv jeden Tag 8 std Netflix und eine halbe stunde Skript lesen. Also auch sehr gut in zwei Wochen zu schaffen. = Verwendete Materialien (Bücher, Skripte etc...) Little Book of Semaphores, Operating Systems Principles and Practices von Anderson und die guten Folien. = "Atmosphäre" der Prüfung / Verhalten der Beisitzer In der Ferne hat man ein verhaltenes Wimmern gehoert. Es hat den Ernst der Lage dramarturigsch unterstrichen. Aber Redlich ist natuerlich, wie immer, sehr freundlich. = Prüfungsfragen 1) [6] a) Was ist ein Micro-Kernel. b) Nenne einen Vorteil von Micro-Kernel gegenueber von Monolithischem Kernel. c) Nenne einen Nachteil von Micro-Kernel gegenueber con Monolithischem Kernel. d) Time-Sharing Single CPU hat geringere Laufzeit als sequentielle ausfuehrung. Warum? e) Wann ist Time-Sharing schlechter als sequentielle ausfuehrung. 2) Scheduling [6] Eine Single CPU mit 1GB phsischen Hauptspeicher und irgednwas mit Swap. Ein Prozess A mit 4GB working set und ein Prozess B mit einem 100MB working set. Es wird eine Multilevel Feedback Queue verwendet. a) Nach einiger Zeit wird geschaut welcher Prozess welche Prioritaet hat. Gebe an welche Prioritaet Prozess A und B haben (hoch = bevorzugt gescheduled) b) Es wird eine zweite CPU eingebaut. Aendert sich etwas? c) Es wird 8GB HS eingebaut. Aendert das etwas? 3) Coffman Conditions [8] Nenne alle 4 Coffman Conditions beim Namen und erklaere, wie man jede einzelne nutzen kann, um Deadlocks zu vermeiden. 4) F-Barrier [5] Implementiere eine Art Barrier aber anstatt, das N Threads passieren muessen, sollen nur N-1 Thread passieren, bevor fbarrier() nicht mehr blockiert. Dazu waren einem Semaphore, Locks und Mutexe gestellt. Es gab drei Punkte Abzug, wenn mann Busy Waiting in seiner Implementierung verwendet hatte (also lieber keine Locks verwenden). 5) Producer/Consumer [3] a) Was ist das Problem im Code. b) Korrigiere den Code. 6) Virtual Memory [2] Es gibt Systeme die Segmentierung mit Paging verbinden. Macht es auch andersherum Sinn? Begruende. 7) Linking [6] a) Vorteile von statischem Linken gegenueber dynamischen Linken b) Vorteile von dynamischen Linken gegenueber statischem Linken c) Wird das Working-Set kleiner, wenn dynamisches Linken verwendet wir? 8) Page Fault Frequency [3] (exakt die gleiche aus wie im Jahr 2016) Zuerst wurde (sehr ausführlich) die Page Fault Frequency (PFF) erklärt (sogar mit dem Bild aus den Folien). Die CPU arbeitet mit 1000MIPS (Millionen Instruktionen pro Sekunde). Ein Festplatttenzugriff dauert 10ms. Wie groß darf die PFF maximal sein, damit das System nicht mehr als 4 mal so langsam wird? 9) Filesystems (i-Node) [3] 2kb Bloecke, 8byte Adressen, 10 direkte, a) max Datei b) max Filesystem groeße 10) Filesystems (FAT) [4] a) min cluster groeße FAT16 FAT32 512GB 4TB b) FAT Groeße (bei platzoptimierter Speicherung) FAT16 FAT32 512GB 4TB = Note (Optional) 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Die Pruefung war ok. Gerne wieder.
Nr. | Prüfer | Fach |
946 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung: 24.02.2021 = Benötigte Lernzeit als Empfehlung: Mit Vorerfahrung nur 1-2 Tage = Verwendete Materialien: Vorlesunfsfolien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Online-Prüfung, hab also nicht viel von ihm mitbekommen = Prüfungsfragen Es waren insgesamt 21 Fragen (mit Unterfragen), kann mich jedoch weder an Reihenfolge noch Punkte erinnern und bin mir auch sicher, dass ich bestimmt welche vergessen hab. 1. Implementieren sie die Tribonaccifunktion tri(k) rekursiv und iterativ mit tri(0)=0,tri(1)=1, tri(2)=1 und tri(k)=tri(k-1)+2*tri(k-2)+3*tri(k-3). Bei negativen Zahlen soll abgebrochen werden. 2. Der Folgende Code soll N Zeichenketten einlesen und in umgekehrter Reihenfolge wieder ausgeben. import gdp.stdlib.*; public class Test { public static void main(String[] args) { int N=Integer.parseInt(args[0]); String s; for(int i=1;i<N;i++) { s[i]=StdIn.readString(); } for(int i=N;i>=0;i++) { System.out.println(s[i]); } } } Erst gibt es einen Compilerfehler. In welcher Zeile und wie wäre sie richtig? Dann gibt es einen Laufzeitfehler. In welcher Zeile und wie wäre sie richtig? Zuletzt macht das Programm das was es soll nicht richtig. An welcher Zeile liegt das und wie wäre sie richtig? 3. Zahlensysteme 2021_7 in Dezimal -1575 in 14-Bit Zweierkomplement Ausgabe von System.out.println(12+5+"=="+12+5) Max und min Werte von int 4. Geben sie die Ausgabe von folgendem Programm an: public class Test { public static void f(int x, int[] y, String z) { x = 1111; y[0] = 2222; y = new int[5]; y[0] = 4444; z = "5555"; } public static void main(String[] args) { int x = 3; int[] y = { 2, 3, 4 }; String z = "5"; f(x, y, z); z = z.replaceAll("5", "8"); System.out.println(x); System.out.println(y[0]); System.out.println(z); z.replaceAll("8", "14"); System.out.println(z); } } 5. Geben sie Ausgabe von folgendem Programm: class A { public int x; public A(int a) { this.x = a; } public int getX() { return x; } public int getY() { return getX() + 2; } } class B extends A { public int x; public B(int b) { super(b); this.x = 2 * b; } } class C extends B { public C(int c) { super(c); } public int getX() { return 17; } } public static void main(String[] args) { A aa = new A(100); A ab = new B(1000); A ac = new C(10000); System.out.println(aa.getY()); System.out.println(ab.getY()); System.out.println(ac.getY()); B bb = new B(100); B bc = new C(1000); System.out.println(bb.getY()); System.out.println(bc.getY()); C cc = new C(100); System.out.println(cc.getY()); } 7. Programmtracing public static int BS(int x, int[] a , int i, int j){ int m=(i+j) /2; if(a[m]=x) return m; if(i>=j) return -1; if(a[m] > x) return BS(x,a,i,m); return BS(x,a,m+1,j); public static void main(String[] args){ N=Integer.parseINt(args[0]); a={ .... 59,65 ....}; //8 Zahlen. Ich weiß nur noch, dass 59 an Stelle 4 und 65 an Stelle 5 war System.out.println(BS(N,a,0,7)); } Geben sie die Ausgabe von 59 und 60 und erklären was das Programm macht. 8. Rekursion Es war ein Rekursives Bild von Quadraten gegeben und man sollte die Reihenfolge folgender Codezeilen angeben, damit das Bild rauskommt.(Ist natürlich witzlos ohne das Bild und Ich schreib nur Pseudocode) public static void recur(int n, double x, double y, double size){ 2 drawSquare(x,y,size); 3 recur(n-1, x +size /2, y + size/2 , size/2.2); 4 recur(n-1, x +size /2, y - size/2 , size/2.2); 5 recur(n-1, x -size /2, y + size/2 , size/2.2); 6 recur(n-1, x -size /2, y - size/2 , size/2.2); 7 if(n<=0)return; } Ich glaube die Richtige Reihenfolge war 734256 9. Multiplikation mit 517 in TOY wie in 2015 10. sind folgende Ausdrücke immer wahr oder nicht immer. Wobei vorausgesetzt ist, dass immer mindestens zwei Variablen gleich sind: a==b && a==c && b==c a==b || a==c || b==c (a-b) * (a-c) * (b-c) == 0 10. Eine Methode majority implementieren, die drei booleans als Parameter erhält und true zurückgibt, wenn zwei oder mehr wahr sind. 11. Die Begriffe public, static, void und String[] erklären und zeigen warum sie nötig sind. (Anhand der main-Methode). = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) Wir haben eine halbe Stunde extra bekommen und ich war trotzdem sehr kanpp fertig. Kann aber auch an meiner Trödelei liegen. Ansonsten sehr angenehme Klausur.
Nr. | Prüfer | Fach |
952 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung 24.03.2021 = Benötigte Lernzeit als Empfehlung - Wenn alle Vorlesungen besucht wurden: 2 Wochen = Verwendete Materialien (Bücher, Skripte etc...) - Vorlesungsfolien, Übungsfolien, Prüfungsprotokolle = "Atmosphäre" der Prüfung / Verhalten der Beisitzer - Sehr locker = Prüfungsfragen 1. Grundlagen: - Stellen Sie die Dezimalzahl -1275 als 13-bit Binärzahl im Zweierkomplement dar. - Stellen Sie die Zahl 1477 zur Basis 9 als Dezimalzahl dar. - Stellen Sie Dezimalzahl 1525 zur Basis 12 dar. - Welche Ausgabe erzeugt das folgende Programmfragment? System.out.println( 7 / 3 * 3 + "==" + 3 + 4); - Welche ist die größte Zahl die man im 48-bit-Zweierkomplement repräsentieren kann? 2^48+1, 2^48, 2^47, 2^47-1 - Welche ist die kleinste Zahl die man im 48-bit-Zweierkomplement repräsentieren kann? -2^48+1, -2^48, -2^47, -2^47-1 2. Binärdarstellungen: Die Nachfolgenden Werte sind Zahlen im 16-bit-Zweierkomplement. Sie wurden im Hexadezimal notiert. Sind folgende boolsche Ausdrücke true oder false? - CAFE < 2 - F00D < 1D01 Was sind die Ergebnisse folgender Rechenoperationen? - CAFE + 2 - CAFE | 2 - CAFE & 2 - CAFE ^ 2 - F00D | 1D01 - F00D & 1D01 - F00D ^ 1D01 - F00D + 1D01 3. Einfache Rekursion: In der Vorlesung haben wir erfahren, dass man eine for-Schleife in eine Tail- Rekursion umschreiben kann und zurück. Für eine Liste vom typ class Node{ int value; Node next; } braucht Ihr noch eine Funktion, die die Anzahl der Elemente in der Liste aufzählt. Würde man es als for-Schleife schreiben, würde die Funktion beispielsweise so aussehen. public static int count(Node liste){ int cnt=0; for(Node n=liste; n!=null; n=n.next){ cnt++; } return cnt; } Jedoch sind eure f und w Tasten defekt, daher dürft ihr weder for noch while schreiben, if sei aber erlaubt. Schreibt die Funktion als (Tail-)Rekursion auf, falls ihr if nicht verwendet erhaltet ihr einen Zusatzpunkt. 4. Vererbung Was ist die Ausgabe von der folgenden main-Methode Quizz? class D { public String s; public D() { s= "d"; } public String foo() { return "D" + s; } public String bar() { return foo() + s; } } class E extends D { public String s; public E() { s= "e"; } public String foo() { return "E" + s; } } public class Quizz { public static void main(String[] args) { E e = new E(); D d = e; System.out.println( d.foo() + d.s ); System.out.println( e.foo() + e.s ); System.out.println( d.bar() + d.s ); System.out.println( e.bar() + e.s ); } 5. Elementare Datentypen: Was ist die Ausgabe von der folgenden main-Methode Quizz? public class Referenz{ public static void mystery(int x, int[] y, int[] z) { x = x + 4; y[0] = y[0] + 4; z = y; } public static void main(String[] args) { int xx = 14; int[] yy = {11,16,29,37}; int[] zz = {7,22,27,42}; mystery(xx,yy,zz); System.out.println(xx); System.out.println(yy[0]); System.out.println(zz[0]); yy = zz; mystery(xx,yy,zz); System.out.println(xx); System.out.println(yy[0]); System.out.println(zz[0]); } } 6. Debugging: Welche der Folgenden Fehlermitteilungen erhalten Sie, wenn Sie die folgenden Programme übersetzen und wie folgt auszuführen versuchen? % javac Bugs.java & java Bugs 1 Folgende Fehlermeldungen stehen zur Auswahl: - Bugs.java: ';' expected - Bugs.java: cannot resolve symbol - Bugs.java: missing method body, or declare abstract - Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 - Exception in thread "main" java.lang.NumberFormatException - Exception in thread "main" java.lang.StackOverflowError - Bugs.java: possible loss of precision - Bugs.java: ')' expected - Bugs.java: missing return statement 1) public class Bugs{ public class void main (String[] args) { a=5; } } 2) public class Bugs{ public class void main (String[] args) { int a=4 int b=5; int c=6 System.out.println(c); } } 3) public class Bugs{ public class void main (String[] args) { int a= Double.parseDouble(args[0]); } } 4) public class Bugs{ public static void recur(int i) { recur(i-1); } public class void main (String[] args) { int a= Double.parseDouble(args[0]); } } 5) public class Bugs{ public static String f() { String s = ""; for(int i=0; i<3; i++{ s = s+"*"; } } public class void main (String[] args) { String result = f(); } } 7. Toy Entscheiden Sie für den jeweiligen Code, der sich nur in Zeile 11 und 13 unterscheidet, ob das Programm terminiert und geben sie falls ja den Wert aus Register 2 (R[2]) an. (Toy Referenzcard gegeben) Toycode 1: 10: 7111 R[1] <- 0011 11: 7255 R[2] <- 0055 12: 2221 R[2] <- R[2] - R[1] 13: D212 if (R[2] > 0) goto 12 14: 0000 halt Toycode 2: 10: 7111 R[1] <- 0011 11: 8210 R[2] <- mem(10) 12: 2221 R[2] <- R[2] - R[1] 13: D211 if (R[2] > 0) goto 11 14: 0000 halt Toycode 3: 10: 7111 R[1] <- 0011 11: A201 R[2] <- mem(R[1]) 12: 2221 R[2] < - R[2] - R[1] 13: D212 if(R[2] > 0) goto 12 14: 0000 halt 8. Grafische Rekursion: Folgendes Programm war gegeben: public class SquareArt { public static void fieldOfScreens(double x, double y, double radius, boolean fill, int level) { if (level == 0) { if (fill) StdDraw.filledSquare(x, y, radius); return; } else { double r = 0.5 * radius; fieldOfScreens(x - r, y - r, r, fill, level-1); fieldOfScreens(x - r, y + r, r, !fill, level-1); fieldOfScreens(x + r, y - r, r, !fill, level-1); fieldOfScreens(x + r, y + r, r, fill, level-1); } } public static void main(String[] args) { int N = Integer.parseInt(args[0]); fieldOfScreens(0.5, 0.5, 0.5, true, N); } } Es sollte entschieden werden welches Bild ausgegeben wird für N=0, N=1, N=2 und N=3. 9. Aufrufkonvention Was ist die Ausgabe bei dem folgenden Programm? public class Param { private char c; public Param(char c) {this.c = c;} public void print() { char a = 'a'; char b = 'b'; char c[] = {'c'}; char e[] = {'e'}; Param g = new Param('g'); Param i = new Param('i'); foo(a); bar(b); foo(c); bar(e); foo(g); bar(i); System.out.println("" + a + b + c[0] + e[0] + g + i); } public void foo(char p) {p = 'k';} public void foo(char p[]) {p = new char[] {'q'};} public void foo(Param p) {p.c = 'u'; } public void bar(char p) {p = new Param('o').c;} public void bar(char p[]) { p[0] = new Param('r').c;} public void bar(Param p) {p = new Param('v');} public String toString() { return "" + c;} public static void main(String s[]) { new Param('z').print(); } } Note: Das Programm lässt sich übersetzen und ausführen 10: Minimum Implementieren Sie die folgenden zwei Funktionen: static int min2(int a, int b) static int min6(int a, int b, int c, int d, int e, int f) Die Funktionen sollen jeweils das kleinste ihrer Argumente als Ergebnis zurückliefern. Es dürfen keine Bibliothesfunktionen verwendet werden. Für jede Anwendung einer gewöhnlichen ("if) oder arithmetischen (?:") Kontrollstruktur werden Ihnen drei Punkte abgezogen (Maximal 9 Punkte sind zu erreichen). Ansonsten dürfen alle anderen Anweisungen benutzt werden, einschließlich Aufrufe von min2() und min6(). 11: Programmausführung Der Binomialkoeffizient C(int N, int k) gibt an wie viele verschiedene Arten man aus einer Menge von N Elementen eine Teilmenge mit k Elementen auswählen kann. Er kann wie folgt rekursiv berechnet werden: public static int C(int N, int k) { if (k==0) return 1; if (N==0) return 0; return C(N-1, k) + C(N-1, k-1); } 1) Welches Ergebnis liefert der Aufruf C(6,2) 2) Für die Berechnung von C(36,18) braucht ein herkömmlicher Pc über 15 Minuten. Des Weiteren liefert dieser Aufruf ein falsches Ergebnis, nämlich 485.200.700 anstatt 9.075.135.300. Erklären sie diese beiden Phänomene. = Note (Optional) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) - Eine sehr faire Klausur die mit genügend Vorbereitung gut zu bestehen war. Einzig und alleine die Aufgabe 6 hat mir Kopfzerbrechen bereitet, da ich selber nicht mit Linux arbeite und daher andere Fehlermeldungen gewöhnt bin.
Nr. | Prüfer | Fach |
983 | Redlich, Jens-Peter, Prof. | Grundlagen moderner Betriebssysteme |
Protokoll
= Datum der Prüfung 19.07.2022 = Benötigte Lernzeit als Empfehlung 1 Woche = Verwendete Materialien (Bücher, Skripte etc...) Folien = "Atmosphäre" der Prüfung / Verhalten der Beisitzer Angenehm , Redlich geht die Klausur vor Beginn einmal durch = Prüfungsfragen Aufgabe 1) [2+2 Punkte] a) Intel SSE Register für Multimedia gesichert in PCB bei Context Switch? Begründung b) I/O Register gesichert in PCB bei Context Switch? Begründung Aufgabe 2) [3] 3 Segmente eines Unix Prozesses angeben und ankreuzen, ob sie bei fork() kopiert werden Aufgabe 3) [5] Vorteil und Nachteil nennen von: - FCFS - Round Robin - SJF - Multilevel Feedback Queue - Lottery Aufgabe 4) [6] Auf einer Kreuzung können von allen vier Seiten Autos ankommen. Um Kollisionen zu vermeiden, soll vor Befahren der Kreuzung von jedem Fahrer eine Funktion auf einem zentralen Rechner ausgeführt werden. Erst wenn diese zurückkehrt, darf die Kreuzung befahren werden. Selbiges für das Verlassen der Kreuzung. Die Aufgabe bestand darin, die Funktionen hinauffahren(int fahrbanabschnitt) und herunterfahren(int fahrbahnabschnitt) in Pseudocode zu implementieren, wobei Locks gegeben waren. Dabei waren folgende Bedingungen zu beachten: - Wenn ein Auto fahren kann, soll es auch fahren - Es sollen keine Kollisionen vorkommen - Es sollen keine Deadlocks entstehen. - Auto 1 und 3 müssen immer links abbiegen - Auto 0 und 2 fahren geradeaus Aufgabe 5) [3] Gegeben die Implementierung eines Buffers (genau das gleiche Bild wie in der Vorlesung): char buf[]; int head = 0, tail = 0; sem cnt = 0; void put(char c) buf[head++] = c; V(cnt); char get(void) P(cnt); c = buf(tail++); return c; a) Was ist mit dem obigen Code nicht in Ordnung? b) Korrigieren Sie den Code! Aufgabe 6) [6] Programmierung eines Semaphors mittels vorgegebenen Mutex Aufgabe 7) [2+3] a) Gegeben war eine 32-Bit Architektur, 9 Bit für die erste Pagetable und 11 Bit für die zweite Pagetable und das Offset. - Wie viele Pagetable gibt es? - Wie groß ist eine solche Page? b) Gegeben waren 32 Bit für virtuelle und physische Adressen, 256 MB Ram, 8KB große Pages, 1 Programm, welchen 4MB Daten hatte, die ab Stelle 0 im virtuellen Speicher liegen und 1MB Stack welche in den Letzten virtuelle Adressen liegt. - Wie viele Pageeinträge sind für dieses Programm bei einer einstufigen Pagetable nötig? - Wie viele Pageeinträge sind für dieses Programm bei einer zweistufigen Pagetable nötig? - Wie viele Pageeinträge sind für dieses Programm bei einer invertierten Pagetable nötig? Aufgabe 8) [3] Auf einem Unix-System mit einer Multilevel Feedback Queue tritt Thrashing auf. Gesucht waren die möglichen Ursachen. a) Ist der Verursacher ein Prozess mit hoher oder mit niedriger Priorität? Begründung! b) Welche Eigenschaft des Prozesses könnte die Ursache sein? c) Welche Eigenschaft des Gesamtsystems könnte die Ursache sein? Aufgabe 9) [2] Es gibt 40 Zylinder, die Seektime pro Zylinder beträgt 6ms, 2 aufeinander folgende Blöcke liegen im nicht optimierten Fall 13 Zylinder voneinander entfernt, im optimierten Fall liegen sie nur 2 Zylinder voneinander entfernt. Zu berechnen war die Zeit für 100 Blöcke mit einer Umdrehungszeit von 100ms und einer Transferzeit von 25ms. a) Für nicht optimierten Fall b) Für optimierten Fall Aufgabe 10) [2] Gegeben ein Unix-Dateisystem, das wie folgt aussieht: Die ersten 10 Einträge einer inode sind direkt, es gibt 1 indirekten Eintrag, 1 zweifach-indirekte Einträge. Blöcke sind 1KB groß, Adressen sind 4 Byte groß. Aufgabe 11) [3] Festplatten mit 1 GB a) Berechne minimale Clustergröße für FAT10 b) Berechne die Größe der FAT für FAT10 c) Berechne größte Datei, wenn die Cluster 1KB groß sind = Note (Optional) = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...)
Nr. | Prüfer | Fach |
998 | Redlich, Jens-Peter, Prof. | Grundlagen der Programmierung |
Protokoll
= Datum der Prüfung: 16.02.23 = Benötigte Lernzeit als Empfehlung: Keine Erfahrung: 2-3 Wochen, Viel Erfahrung: 1-3 Tage = Verwendete Materialien (Bücher, Skripte etc...): Toy-Reference-Card = "Atmosphäre" der Prüfung / Verhalten der Beisitzer: Angenehm = Prüfungsfragen (nicht unbedingt diese Reihenfolge), insgesamt 9: Aufgabe Bugs: Welche Fehlermeldung erhält man, wenn man nacheinander in der Konsole "javac Test.java" und "java Test 5.0" ausführt: Mögliche Fehlermeldungen: - Test.java:n: error: non-static method cannot be referenced from a static context - Test.java:n: error: ';' expected - Exception in thread "main" java.lang.NullPointerException - Test.java:n: error: cannot resolve symbol - Test.java:n: error: missing return statement - Exception in thread "main" java.lang.StackOverflowError - Test.java:n: error: missing method body, or declare abstract - Test.java:n: error: incompatible types: possible lossy conversion a) public class Test{ public static void main(String[] args){ int a = Double.parseDouble(args[0]); } } b) public class Test{ public static void main(String[] args){ a = 3; System.out.println(a); } } c) public class Test{ public static void main(String[] args){ String s = f(8); } public static String f(int n){ String s = ""; for(int i = 0; i < n; i++){ s += "*"; } } } d) public class Test{ public static void main(String[] args){ System.out.println(rec(3)); } public static int rec(int i){ return rec(i-1); } } e) public class Test{ public static void main(String[] args){ int a = 12 int b = 2; int c = 20; System.out.println(c); } } Aufgabe Toy: Was steht nach Ausführung des Programms in den Speicherzellen 00, 01, 02? (a) und b) unterscheiden sich nur in Zelle 02) 00: 2059 01: 35C3 02: 0000 (a)/ 000B (b) 10: 8A00 11: 8B01 12: 8C02 13: CC16 14: 9B00 15: C017 16: 9A01 17: 0000 Aufgabe Stern: a) Was gibt mystical(3) aus? b) Was gibt mystical(4) aus? c) Was gibt mystical(-1) aus? [] es passiert nichts [] es werden unendlich viele * Ausgegeben [] es geht in eine Endlosschleife und nichts wird ausgegben [] es wird eine Leerzeile ausgegeben und es gibt einen Stackoverflow [] es wird genau ein * ausgegeben [] Die Lösung ist oben nicht angegeben (eventuell noch weitere Möglichkeiten) public class Stern{ public static void stern(int N){ for(int i = 0; i < N, i++) System.out.print("*"); System.out.println(); } public static void mystic(int N){ if(N == 0) return; stern(N); mystic(N-1); stern(N); } } Aufgabe 5: Was gibt folgendes Program aus? public class a5 { public static void f(int x, int[] y, String z) { x = 1111; y[0] = 2222; y = new int[5]; y[0] = 4444; z = "5555"; } public static void main(String[] args) { int x = 1; int[] y = { 2, 3, 4 }; String z = "5"; f(x, y, z); z = z.replaceAll("5", "6"); System.out.println(x); System.out.println(y[0]); System.out.println(z); z.replaceAll("6", "12"); System.out.println(z); } } Aufgabe Quizz: Was gibt folgendes Program aus? class B { public String s; public B() { s = "b"; } public String foo() { return "B" + s; } public String bar() { return foo() + s; } } class C extends B { public String s; public C() { s = "c"; } public String foo() { return "C" + s; } } public class Quizz { public static void main(String[] args) { C c = new C(); B b = c; System.out.println(b.foo() + b.s); System.out.println(c.foo() + c.s); System.out.println(b.bar() + b.s); System.out.println(c.bar() + c.s); } } Aufgabe Inheritance : Was gibt folgendes Program aus? class A { public int x; public A(int a) { this.x = a; } public int getX() { return x; } public int getY() { return this.getX() + 2; } } class B extends A { public int x; public B(int b) { super(b); this.x = 2 * b; } } class C extends B { public C(int c) { super(c); } public int getX() { return 18; } } public class Inheritance { public static void main(String[] args) { A aa = new A(10); A ab = new B(100); A ac = new C(1000); System.out.println(aa.getY()); System.out.println(ab.getY()); System.out.println(ac.getY()); B bb = new B(10); B bc = new C(100); System.out.println(bb.getY()); System.out.println(bc.getY()); C cc = new C(10); System.out.println(cc.getY()); } } Aufgabe Umrechnen: a) 1738 Dezimal in Hexadezimal b) -1738 Dezimal in 16 Bit Zweierkomplement c) 110010101110_2 und 100111110_2 addieren und das Ergebnis im Heptalsystem angeben d) Ausgabe von: "Die Summe ist: " + 5 + 33 / 9 e) Ankreuzen was die größte und kleinste Zahl in Java im 32 Bit Zweierkomplement ist Größte: 2^(32) 2^(31) 2^(32)-1 2^(31)-1 2^(32)+1 2^(31)+1 Kleinste: -2^(32) -2^(31) -2^(32)-1 -2^(31)-1 -2^(32)+1 -2^(31)+1 Aufgabe Binomialkoeffizient: Der Binomialkoeffizient C(int N, int k) gibt an wie viele verschiedene Arten man aus einer Menge von N Elementen eine Teilmenge mit k Elementen auswählen kann. Er kann wie folgt rekursiv berechnet werden: public static int C(int N, int k) { if (k==0) return 1; if (N==0) return 0; return C(N-1, k) + C(N-1, k-1); } 1) Welches Ergebnis liefert der Aufruf C(4,2) 2) Für die Berechnung von C(36,18) braucht ein herkömmlicher Pc über 15 Minuten. Des Weiteren liefert dieser Aufruf ein falsches Ergebnis, nämlich 485.200.700 anstatt 9.075.135.300. Erklären sie diese beiden Phänomene. Aufgabe Tribonacci: Die tribonacci Reihe ist folgendermaßen rekursiv definiert: trib(n) = trib(n-1) + trib(n-2) + trib(n-3), wobei trib(0) = 0, trib(1) = 1, trib(2)=1. Implementiere eine Funktion trib(int n) a) rekursiv, b) iterativ, also mit einer Schleife, welche die n-te Tribonacci Zahl berechnet. Bei negativen Zahlen soll das Programm abgebrochen werden. = Note (Optional) 1.0 = Fazit (Gute/schlechte Prüfung , angemessene Benotung etc...) War denke ich eine ganz faire Prüfung, aber es gab einen Fehler bei der Benotung.... Die Einsicht kann ich jedem empfehlen