Zwei Prozesse benutzen shared memory um Daten auszutauschen. Warum brauchen Sie in C/C++ z.B. das Keyword "volatile" für die Prozesssynchronisation?
5.1. | Two processes use shared memory to exchange data. Why do you need the keyword "volatile" e.g. in C/C++ programs when you design the process synchronization? |
5.2. | Many modern applications consist of several processes instead of one big process. What are the advantages and disadvantages of using several processes for software architecture, maintenance, use of multiple CPUs? |
5.3. | Viele moderne Applikationen bestehen aus mehreren Prozessen statt einem einzigen grossen Prozess. Was sind die Vorteile und Nachteile mehrerer Prozesse in Bezug auf Software Architektur, Wartung und Benutzung mehrerer CPUs? |
5.4. | A process is called a heavyweight resource of the operating resource. Name some resources that belong to the process state. Do you think that the identity of the user who started the process should also be kept in the process state? Why? |
5.5. | Man nennt Prozesse schwergewichtige Resourcen eines Betriebsystems. Nennen Sie einige Resourcen die zum Prozess Status gehören. Gehört die Identität des Users der den Prozess gestartet hat dazu? Warum? |
5.6. | When memory gets scarce operating systems can swap complete processes to a storage medium to make room. Is the process table swapped out as well? |
5.7. | Wenn Memory knapp wird dann kann ein Operating System einen kompletten Prozess auf einem Speichermedium auslagern. Wird auch die Prozesstabelle ausgelagert? |
5.8. | Your program allocates several program elements. Given the list of elements, in which memory segment do they end up? Object allocated using "new" (Java or C++) | A String literal "This is a string" | Variables declard constant. | A function or method call | An integer variable allocated inside a method or function call | Object inside method call (compare Java and C++) | A large array of charactes without data in C |
|
5.9. | Ihr Programm allokiert verschiedene Programmelemente. In welchem Memorysegment enden die folgenden Elemente? Ein Objekt mit "new" allokiert (in Java oder C++) | Ein String Literal "This is a string" | Konstanten | Ein Funktions- oder Methodenaufruf | Eine Integervariable allokiert innerhalb eines Funktions- oder Methodenaufrufs | Ein Objekt innerhalb eines Methodenaufrufs (Vergleiche Java und C++) | Ein grosser Array von Characters ohne daten in C |
|
5.10. | Why is the creation of a new process frequently split into two system calls? Is the second always used? |
5.11. | Warum wird die Erzeugung eines neuen Prozesses meist auf zwei Systemcalls aufgeteilt. Wird der zweite immer benutzt? |
5.12. | You want to speed-up your image processing application which reads a large image and converts it into a black and white version. The application starts, reads the image and then uses the fork system call. Will the child processes be able to use the image of the parent process? A copy? What happens when the results of the processing needs to be combined to form the new image? |
5.13. | Sie wollen Ihre image processing Applikation schneller machen. Die Applikation liest ein grosses Image ein und konvertiert es in ein Schwarz-Weiss Bild. Die Applikation started und liest das Bild ein, danach benutzt sie den fork System Call. Können die Kindprozesse das Bild des Vaterprozesses im Speicher benutzen? Eine Kopie? Was passiert wenn die Resultate des Processings kombiniert werden müssen zum neuen Bild? |
5.14. | Why is it not enough to just remove a process entry from the process table when the process dies (is killed)? |
5.15. | Warum reicht es nicht einen Prozess der getötet wurde einfach aus der Prozesstabelle zu entfernen? |
5.16. | Many operating systems offer interprocess communication facilites like pipes, shared memory etc. What can we conclude about the design of those systems? |
5.17. | Viele Operating Systems bieten Interprozesskommunikation durch verschieden Mechanismen an, z.B: pipes, shared memory etc. Was können wir daraus über das Design dieser Systeme schliessen? |
5.18. | What are the basic processing steps of a command interpreter (shell)? |
5.19. | Was sind die hauptsächlichen Verarbeitungsschritte eines Kommandointerpreters (shell)? |
5.20. | The length of a timeslice can be a function of the workload characteristics on many operating systems. Give a typical length for a multi-user system. Would you change it for a server system? For a highly interactive system? In which direction would you change it for such systems and why? |
5.21. | Die Länge eines timeslices kann auf vielen Systemen eine Funktion der Arbeitslast sein. Geben Sie eine typische Länge für ein multi-user system an. Würden Sie das ändern für ein server system? Für ein hochgradig interaktives System? In welcher Weise würden Sie es ändern und warum? |
5.22. | The shorter the timeslice of processes the better the interactive responses for a user. What keeps us from using ultra-short timeslices? |
5.23. | Je kürzer der Timeslice von Prozessen desto kürzer die Antwortzeiten für User. Was hält uns von ultrakurzen timeslices ab? |
5.24. | A server process with a longer timeslice can work uninterrupted for a longer time. Should a system with several server process use really long timeslices or not? |
5.25. | Ein server Prozess mit einer langen Timeslice kann längere Zeit ohne Unterbrechung arbeiten. Sollte ein System mit mehreren Server Prozessen eine wirklich lange timeslice benutzen? |
5.26. | Where are the CPU registers of a process stored during a context switch? What else needs to be stored so that a process can continue later? Will the content of the CPU cache be saved? |
5.27. | Wo werden die CPU Register eines Prozesses während eines context switches gespeichert? Was muss sonst noch gespeichert werden damit ein Prozess später fortgesetzt werden kann? Wird der Inhalt des CPU cache gespeichert? |
5.28. | The way user processes are pre-empted differ across operating systems. What kind of applications are typically run by systems with the following mechanisms: User processes are not pre-empted by the operating system | Processes running in user mode can be pre-empted by the OS | Processes running in kernel mode can be pre-empted by the OS |
|
5.29. | Die Art und Weise wie Userprozesse per-empted werden unterscheidet sich je nach Operating System. Welche Art von Applikationen läuft typischerweise auf Systemen mit den folgenden Mechanismen: Userprozesse werden nicht vom OS per-empted | Prozess die im User Mode laufen können vom OS pre-empted werden | Prozesse die im kernel mode laufen können vom OS pre-empted werden. |
|
5.30. | If an operating system does not pre-empt user processes in user mode: does this mean that those processes can run forever? When are those processes suspended? |
5.31. | Wenn ein Operating System Userprozesse nicht per-empted: Heisst das dass diese Prozess für immer laufen? Unter welchen Voraussetzungen werden solche Prozesse suspendiert? |
5.32. | How does a process get from state "running" to state "ready"? How from "running" to "blocked/waiting"? |
5.33. | Wie kommt ein Prozess vom State "running" in den State "ready"? Wie vom State "running" in den State "blocked/waiting"? |
5.34. | The process with the highest priority in a realtime system does a read on a harddisk and the data are not ready. Should it be scheduled (put on the waiting list)? |
5.35. | Der Prozess mit der höchsten Priorität in einem realtime System liest von der Harddisk und die Daten sind nicht bereit. Soll er ge-scheduled (auf die Liste der wartenden Prozesse gesetzt) werden? |
5.36. | Processes which have used their timeslice are in most systems pre-empted. How does the kernel know when it is time to do a context switch? |
5.37. | Prozesse die ihre Timeslice aufgebraucht haben werden in den meisten Systemen suspendiert. Wie weiss der Kernel dass es Zeit für einen Context Switch ist? |
5.38. | An application process uses user level threads. Will the application process benefit from running on a system with more CPUs? Explain why or why not. |
5.39. | Ein Appplikationsprozess benutzt user-level Threads. Wird der Applikationsprozess von einem System mit mehreren CPUs profitieren? Erklären Sie warum oder warum nicht. |
5.40. | One thread in a mulit-threaded application executes a program bug which causes wild memory accesses and changes. Will the other threads be affected? A process executes the same bug - what happens to the other processes on the system? |
5.41. | A process or thread executes an endless loop on a system with kernel threads and pre-emption. Are the other processes affected? The other threads? Design a scheduling policy that tries to minimize the overall effects. |
5.42. | Ein Prozess oder Thread führt eine Enschlosschleife auf einem System mit kernel threads und Pre-emption aus. Sind die anderen Prozesse betroffen? Die anderen Threads? Entwerfen Sie eine Scheduling Strategie die versucht den Effekt zu minimieren. |
5.43. | You are designing a java virtual machine. Would you rather use an operating system with kernel or user threads or both? Explain why |
5.44. | Sie entwerfen eine Java virtual Machine. Würden Sie lieber ein Operating System mit kernel threads, user threads oder beidem verwenden? Erklären Sie warum. |
5.45. | Most modern applications with GUIs use multithreading internally. What is the architectural reason for this? Explain using an application that does database requests and presents the results to a user. |
5.46. | Die meisten modernen Applikationen mit GUIs benutzen intern multi-threading. Was ist der architektonische Grund dafür? Erklären Sie das anhand einer Applikation die Datenbankrequests macht und die Resultate einem User präsentiert. |
5.47. | Fairness with respect to CPU time is important in many Operating Systems, especially multi-user systems. Is the fairness based on processes or users? |
5.48. | Fairness in Bezug auf CPU Zuteilung ist wichtig in vielen Operating Systems, besonders mulit-user systemen.Was wird in diesen Systemen fair behandelt: Prozesse oder User? |
5.49. | Given a web server and a crypto module: which one is probably I/O bound and which one CPU (compute) bound? Why do those applications mix well on multi-tasking systems? Which application should have a higher priority? |
5.50. | Gegeben sind ein web server und ein crypto Modul. Welches ist wahrscheinlich I/O bound und welches CPU (compute) bound. Warum lassen sich solche Applikationen gut mischen auf einem multi-tasking system? Welche Applikation sollte eine höhere Priorität haben? |
5.51. | The java or C++ expression i++; : is it atomic or not (with i being an integer variable)? Two threads execute this expression in the same process and after 100 executions by each thread the result value is below the expected value. What happened? |
5.52. | Ist die java oder c++ expression i++ atomar oder nicht ( i ist eine Integer Variable)? Zwei Threads führen diese Expression im gleichen Prozess aus und nach 100 Durchläufen pro Thread ist der Wert von i unter dem erwarteten. Was ist passiert? |
5.53. | Member fields of an object can be tagged as "private". Does this protect those variables from being accessed by two threads at the same time? |
5.54. | Member Variablen eines Objekts können als "private" markiert werden. Schützt das diese Variablen davor von 2 Threads gleichzeitig manipuliert zu werden? |
5.55. | A method uses primitive parameters and allocates local variables. It allocates objects with new and stores those references. It writes to static variables. The method should now become part of a multithreaded program. Where do you need to make changes to make the method re-entrant (thread-safe)? |
5.56. | Eine Methode verwendet Parameter (primitive Typen) und allokiert lokale Variablen. Sie allokiert Objekte mit "new" und speichert die Refernzen. Sie schreibt in statische Variablen. Jetzt soll die Methode Teil eines multi-threaded Programmes werden. Wo müssen Sie Auml;nderungen machen um die Methode re-entrant (thread-safe) zu machen? |
5.57. | If two threads try to access a common resource only one can get the resource if you want to keep a consistent system. What should happen with the thread that did not get access? Give some alternative mechanisms and discuss their advantages and disadvantages. |
5.58. | Wenn zwei threads gleichzeitig auf eine gemeinsame Resource zugreifen wollen dann kann sie nur einer bekommen wenn die Systemkonsistenz bewahrt werden soll. Was soll mit dem Thread passieren der keinen Zugriff bekommen hat? Nennen Sie einige alternativen und diskutieren Sie Vor- und Nachteile. |
5.59. | Experienced Java programmers use notifyAll() instead of just notify(); Explain. |
5.60. | Erfahrene java Programmierer verwenden notifyAll() statt nur notify(). Erklären Sie warum. |
5.61. | Explain the concept of a guarded wait. Why must a thread that was just woken up check the wait-condition once again before accessing the resource? |
5.62. | Erklären Sie das Konzept eines "guarded wait". Warum muss ein Thread der gerade aufgeweckt wurde nochmals die Wartebedingung prüfen bevor er Zugriffe auf die Resource macht? |
5.63. | The Java gods decided to tag the thread.stop() Method (kill) as deprecated. Why did they think killing threads was a bad idea? |
5.64. | Die Java Götter haben sich entschieden die thread.stop() Methode (kill) für veraltet zu erklären. Warum dachten sie dass das Töten eine Threads eine schlechte Idee sei? |
5.65. | You have inserted only a few "synchronized" statements into your program. Suddenly it runs correctly but much slower than before. Why? |
5.66. | Sie haben einige wenige "synchronized" statements in ihr Programm eingefügt. Es läuft plötzlich korrekt aber viel langsamer als bevor. Was ist passiert? |
5.67. | The methods to stop or kill a thread have been deprecated. Why? |