47
OS (Subject) / Aufgabe 1. Grundlagen (Lesson)
Advertisement
- Nennen Sie die zwei grundlegenden Aufgaben eines Betriebssystems. Name the two basic functions of an operating system. Ein Betriebssystem muss die Entnahme von Informationen von der Hardware zur verfügung stellen und Schutz vor anderen Anwendungen bieten. An OS must provide abstractions (0.5 P) from the hardware and protection (0.5 P)from other applications.
- Erklären Sie den Unterschied zwischen einem Interrupt und einer Exception. Explain the difference between an interrupt and an exception. Ein Interrupt wird generell außerhalb des gerade ausgeführten Programms erzeugt.Technisch gesehen kommt das Programm ohne die Vearbeitung des Interrupts aus.Im Kontrast wird die Exception von einer Instruktion(instruction) von dem momentan ausgeführten Programm verursacht und bewahrt das Programm davor weiterzumachen, bevor die Exception verarbeitet wurde. An Interrupt is generally caused outside the currently executing program. (1 P) Technically, the program could thus go on without handling the interrupt. In contrast, an exception is caused by an instruction in the currently executing program (1 P) and prevents the program from continuing until the exception is handled.
- Erklären Sie den Begriff "multiprogramming". Explain the term multiprogramming. Multiprogrammierung bezieht sich auf mehrere Programme, die gleichzeitig in den Speicher geladen werden.Das Betriebssystem wechselt zwischen ihnen so wie es gerade nötig ist. (1 P)Wenn zum Beispiel a für die I/O blockt, kann das Betriebssystem zu einem anderen wechseln, um die CPU weiter zu beschäftigen. Multiprogramming refers to multiple programs being loaded in memory at the same time, with the OS switching between them as necessary. (1 P)If, for example, a program blocks for I/O, the OS can switch to a different one to keep the CPU busy.
- I/O-Instruktionen, mit denen auf Geräte zugegriffen wird, sind normalerweise privilegiert, d.h. diese Instruktionen können nur im Kernelmodus, aber nicht im Benutzermodus ausgeführt werden. Geben Sie einen Grund an, warum diese Instruktionen privilegiert sein sollten. Nennen Sie außerdem einen Grund, warum es sinnvoll sein kann, dem Benutzermodus direkten Zugriff auf bestimmte Geräte zu geben. I/O-instructions, which are used for accessing hardware devices, are typically privileged (i.e., these instructions can only be executed in kernel mode). Give a reason why these instructions are privileged. Also, give a reason why it may be beneficial to allow user mode direct access to some devices. I/O-Instruktionen sollten privilegiert sein, um die isolation des Prozesses zu gewährleisten.Zum Beispiel:Wenn der Benutzer space code direkten Zugang zu einem DMA-angeschalteten Gerät hat, könnte dieser Code die DMA benutzen, um Zugang zum Speicher von anderen Prozessen zu bekommen.Wenn man den Gerätezugang priviligiert, erlaubt man dem Kernel DMA anfragen zu bestätigen.Um den Kernal zu bei jeder I/O Anfrage zu betreten, Induziert es die Anfrage der Anwendung overhead(Daten, die als Zusatzinformation benötigt werden.).Deswegen kann es vorteilhaft sein, dem user Space zu erlauben den Code direkten Geräte Zugang zu geben, wenn die Durchführung kritisch ür die Operation des Geräts ist.Beispiele für solche Geräte sind GPUs oder zwei gewisse Hochleistungs- Netzwerks-Hardware.Wie auch immer, diese Geräte müssen einen angemessenen Schutzmechanismus beinhalten um dem Userspace direkten Zugang zu erlauben ohne die Isolation zu brechen. I/O instructions should be privileged to guarantee process isolation. (1 P) For example, if user space code had direct access to a DMA-enabled device, that code could use DMA to access the memory of other processes.Making device access privileged allows the kernel to validate DMA requests. Entering the kernel on each I/O request induces application overhead. Therefore, it may be beneficial to allow user space code direct device access if performance is critical for the operation of the device. (1 P) Examples of such devices are GPUs or certain 2 high-performance network hardware. However, these devices must implement appropriate protection mechanisms themselves to allow user space direct access without breaking isolation.
- Nennen Sie zwei Möglichkeiten, die Parameter eines Systemaufrufs an den Kernel zu übergeben. Welche dieser Möglichkeiten würden Sie wählen? Begründen Sie Ihre Antwort. (2 pt) Name two ways of passing the parameters of a system call to the kernel. Which of these ways would you prefer? Explain your answer. Parameter können entweder in Registern übergeben werden oder in einem Stapel.In Registern ist vorteilhafter, denn auf Register kann schneller zugegriffen werden als auf Speicher, was die System call performance verbessern kann. Parameters can be passed either in registers (0.5 P)or on the stack. (0.5 P)Passing them in registers is preferable, (0.5 P)because registers can be accessed faster than memory, which may improve system call performance (0.5 P).
- Nennen Sie zwei Beispiele für Abstraktionen in einem Betriebssystem. (1 pt) Give two examples for abstractions in an operating system. Dateien als Abstraktion für Speichergeräte wie Festplatten-Threads als Abstraktion für die CPU-Virtuelle Adressräume als Abstraktion des physicalischen Speicher.General "Hardware Abstraktion" wurde zu vage bewertet. SystemaufrufeBieten eine Schnittstelle, sind aber keine Abstraktion.Files as abstraction for storage devices such as hard disks• Threads as abstraction for the CPU• Virtual address spaces as abstraction of physical memory(0.5 P) each. General ”hardware abstraction” was rated too vague. System callsprovide an interface, but are not an abstraction.
- Durch welche drei Umstände kann es zur Ausführung von Kernel-Mode Code kommen? Geben Sie jeweils eine kurze Erläuterung. (3 pt) What three circumstances can lead to the execution of kernel-mode code? Give a short explanation for each. -System Calls - Freiwilliger, synchroner Aufruf durch ein Programm, um einen privilegierten OS-Service anzufordern.-Interrupts - Unfreiwilliges, asynchrones Signal durch ein Gerät, das die Aufmerksamkeit des Betriebssystems benötigt, zum Beispiel die Beendigung einer E / A-Operation-Exceptions - Unfreiwilliger, synchroner Aufruf als Reaktion auf die Durchführung einer ungültigen Operation in der CPU• System Calls - Voluntary, synchronous invocation by a program to request a privileged OS service• Interrupts - Involuntary, asynchronous signal by a device that requires the OS’sattention, for example the completion of an I/O operation• Exceptions - Involuntary, synchronous invocation as reaction to performing an invalid operation in the CPU (1 P) each
- Welche Varianten zur Behandlung von Ausnahmen gibt es? Geben Sie für jede Variante ein Beispiel an, in welchem Sie zum Einsatz kommt. (2 pt) What variants for exception handling exist? For each variant, give an example where it is used. • Fortsetzen der Ausführung durch Wiederholen der Fehleranweisung (z. B. Seitenfehler).• Fortsetzen der Ausführung durch Überspringen der fehlerhaften Anweisung (z. B. Virtualisierung mit Fangen und emulieren).• Abbruch der Ausführung (z. B. Division durch Null, ungültiger Opcode).Auch akzeptiert: Hand-Ausnahme zum verarbeiten, um benutzerdefinierte Ausnahmebehandlung durchzuführen.• Continue execution by retrying the faulting instruction (e.g., page fault).• Continue execution by skipping the faulting instruction (e.g., virtualization withtrap and emulate).• Abort execution (e.g., division by zero, invalid opcode).Also accepted: Hand exception to process to perform custom exception handling
- Nennen Sie je zwei Vorteile von statischem und dynamischem Verknüpfen (linking). (2P) Give two advantages of both dynamic and static linking. Dynamische Verknüpfung:• Kleinere Speicherabmessungen (Bibliothekscode kann zwischen Prozessen gemeinsam genutzt werden)• Vermeidet das Laden von unnötigem Code (Bibliothekscode kann geladen werdenwenn er tatsächlich benutzt wird)• Einfache globale Aktualisierung von gemeinsamen BibliothekenStatische Verknüpfung:• schnellerer Code (keine Indirektion über Importtabelle, nicht positionsunabhängig)• Schnellerer Programmstart (keine Notwendigkeit, auf den dynamischen Linker zu warten)(Jeweils 0,5 P) Einfache "schneller" -ähnliche Antworten wurden als zu vage bewertet.Dynamic linking:• Smaller memory footprint (library code may be shared between processes)• Avoids loading unnecessary code (library code can be loaded when actuallyused)• Easy global updating of shared librariesStatic linking:• Faster code (no indirection via import table, not position-independent)• Faster program startup (no need to wait for dynamic linker)(0.5 P) each. Plain ”faster”-like answers were rated as too vague.
- Beim Kopieren einer großen Datei von einer SSD auf eine Festplatte liegt die Kopiergeschwindigkeit für einige Zeit deutlich über der maximalen Schreibgeschwindigkeit der Festplatte und fällt dann abrupt auf das Maximum ab. Wie erklären Sie diese Beaobachtung? (2 pt) While copying a large file from an SSD to an HDD the copy speed greatly exceeds the HDD’s maximum write speed and then suddenly drops to the maximum. How do you explain this? Die Datei wird mit dem Dateisystem-Cache des Betriebssystems kopiert und die Zieldatei zwischengespeichert.Während der ersten Periode gibt es noch freien RAM, um den Cache größer werden zu lassen und die volle Lesegeschwindigkeit der SSD zu nutzen. Allerdings kann die langsame HDD nicht mit der hohen Rate der eingehenden Daten mithalten und eventuell wächst der Cache auf seine maximale Größe und die Lesegeschwindigkeit wird auf die Schreibgeschwindigkeit der HDD gekappt (d.h. die Geschwindigkeit, mit der der Speicher in der Cache ersetzt werden kann).The file is copied using the operating system’s file system cache, caching the destinationfile. During the first period there is still free RAM to let the cache grow and use the full read speed of the SSD. However, the slow HDD cannot keep up with the highrate of incoming data and eventually the cache grows to its maximum size, capping the read speed to the HDD’s write speed (i.e., the speed with which memory in the cache can be replaced).
- Advertisement
- Welche der folgenden Segmente einer ELF-Datei können schreibgeschützt in den Speicher eingeblendet werden? Welche Segmente müssen schreibbar eingeblendet werden? (falsches Kreuz: -0.5P, kein Kreuz: 0P, korrektes Kreuz: 0.5P) (2 pt) : .text ? .data ? .rodata ? .bss ? Which of the following segments from an ELF-file can be mapped read-only? Which segments must be mapped writable? (incorrectly marked: -0.5P, not marked: 0P, correctly marked: 0.5P) Schreibgeschützt/read-only:.text.rodataSchreibbar/writable:.data.bss
- Wie werden die folgenden Operationen in der Programmiersprache C geschrieben? Nehmen sie an, dass die folgenden Definitionen gelten: int a, b, A[42];. Drücken Sie die letzte Antwort ohne eckige Klammern aus! (2 pt) How are the following operations expressed in the C programming language? Assume the following definitions: int a, b, A[42];. Express the last answer without square braces! Bitwise exclusive or of a and b: aˆbBitwise not of a: ∼aAddress of a: &aAddress of A[23]: A+23
- Beachten Sie Listing 1. In welchem Addressraumsegement werden die folgenden Variablen jeweils angelegt? (4 pt) Consider Listing 1. In which address space segment will the following variables be allocated respectively? Listing 1 1 int a = 23; 2 int f ( ) 3 { 4 int ∗ p = malloc ( 42 ∗ sizeof ( int ) ) ; 5 } a data segmentf text segmentp (pointer) stack segment*p (content that p points to) heap segment
- Unterstreichen Sie diejenigen Funktionen, welche man als Systemaufruf bezeichen wurde! (1 pt) Underline those functions that one would consider system calls! getopt read lseek malloc memset mmap getopt >read >lseek malloc memset >mmap
- Ordnen Sie die folgenden Dinge aufsteigend ihrer Dauer nach an: (a) Kontextwechsel, (b) Funktionsaufruf, (c) Speicherzugriff (1 Byte), (d) SSD Leseoperation (2 pt) Order the following entities by the time they take in increasing order: (a) Context switch, (b) Function call, (c) Memory access (1 Byte), (d) SSD read c ⇒ b ⇒ a ⇒ d
- Nennen Sie zwei plattform-unabhängige ganzzahlige Datentypen aus stdint.h und geben Sie für beide die größte darstellbare Zahl an. (2 pt) Name two platform-independent integer data types defined by stdint.h and state their largest representable number. • uint8 t, 0xFF• int16 t, 0x7FFF• ...
- Welche der folgenden Anweisungen sind korrekt, um den Wert 0x00133700 an die Speicheradresse 0x00733100 zu schreiben? (1 pt) Which of the following are correct statements to write the value of 0x00133700 to memory address 0x00733100? a) uint32_t * addr = (uint32_t *)0x00733100; addr = 0x00133700; b) * (uint32_t * const)0x00733100 = 0x00133700; c) * (uint32_t const)0x00733100 = 0x00133700; b)
- Nennen Sie drei Möglichkeiten, Parameter an einen Betriebssystem-Aufruf zu übergeben. (1 pt) Name three ways in which to hand parameters to an operating system call. • über Register der CPU• Über den Programmstapel der Anwenderebene• über dedizierte Hauptspeicherbereiche -0.5P für jeden falschen, fehlenden Eintrag• Via registers of the CPU• Via the user-level program stack• Via dedicated main memory regions• -0.5P fur jeden falschen, fehlenden Eintrag
- Beschreiben Sie knapp den Unterschied zwischen Multiprogramming und Multitasking. (Gehen Sie von einem Uniprozessorsystem aus.) (1 pt) Briefly describe the difference between multiprogramming and multitasking. (Assume a uniprocessor system.) • Bei der Multiprogrammierung wechselt das Betriebssystem zwischen Aufträgen / Prozessenbei OS-spezifischen Programmbedingungen, z.B. Wenn der gerade laufende Job / Prozessauf I / O wartet. (0,5P)• Mit Multitasking kann das Betriebssystem zwischen Aufträgen / Prozessen umschalten, unabhängigvon irgendwelchen Programm Bedingungen / Design. (0,5P) Beim Hochschaltenauf eine höhere Rate, wird die Interaktivität der Arbeitsplätze / Prozesse gefördert.• With multiprogramming, the operating system switches between jobs/processesat OS-specific program conditions, e.g. when the currently running job/processis waiting for I/O. (0.5P)• With multitasking, the operating system can switch between jobs/processes independentof any program conditions/design. (0.5P) When switching at a highrate, interactivity of the jobs/processes is fostered.
- Schreiben Sie eine gültige Zeile C-Code um der Variablen b den vierten Wert des Arrays a zuzuweisen. Benutzen Sie für die Zuweisung den Pointer "ptr". Benutzen Sie nicht den Index-Operator [ ]. (1 pt) Write a valid line of C-Code to assign the fourth value of Array a to variable b. Use the pointer ptr for the assignment. Do not use the index-operator [ ]. int a [32 ] , b , ∗ptr ; ptr = a ;• 1.0P fur ¨ b = *(ptr + 3);• 0.5P fur ¨ b = *(ptr + 4); -0.5P bei jedem Syntaxfehler
- Erklären Sie, was jeweils in den folgenden Ausdrücken deklariert wird. ( 3 pt) Explain what is declared in the following statements, respectively. a) int (*a)(); b) int *b(); c) int c( int d() ); a) int (*a)(); :Funktionszeiger auf eine Funktion, die eine Ganzzahl zurückgibt.b) int *b(); :Funktion, die einen Zeiger auf eine Ganzzahl zurückgibt.c) int c( int d() ); :Funktion, die eine Ganzzahl zurückgibt und einen Funktionszeiger als Parameter aufnimmt. Die Funktion, auf die verwiesen wird, gibt eine Ganzzahl zurück.a) int (*a)(); :Function pointer to a function that returns an integer.b) int *b(); :Function that returns a pointer to an integer.c) int c( int d() ); :Function that returns an integer and takes a function pointer as a parameter. The function that is pointed to returns an integer
- Was tut der folgende Assembler-Befehl auf einer IA-32 Architektur? Wofür wird er semantisch benutzt? (1 pt) What does the following assembly command do on an IA-32 architecture? What is it used for semantically? subl $16, %esp Er subtrahiert 16 Bytes vom Stack-Pointer. Semantisch ist dies eine Zuordnung von 16 Bytesauf den Stapel. Subtract 16 bytes from stack pointer. Semantically this is an allocation of 16 byteson the stack.
- Nennen Sie 2 privilegierte IA-32 Instruktionen und erklären Sie jeweils, warum diese privilegiert sein müssen (Eine Instruktion und ihre inverse Instruktion zahlen als dieselbe Instruktion). (2 pt) Give 2 privileged IA-32 instructions and explain why each one of them needs to be privileged (An instruction and its inverse instruction count as the same instruction). • CLI / STI - IRQ aus / an - z. B. Timer löst über Interrupt aus, wenn der Benutzer Interrupts deaktivieren könnte,könnte sie die Terminierung beeinträchtigen.• PUSHF / POPF - Push / Pop-Flags - z. B. um CPL einzustellen, wenn der Benutzer CPL einstellen könnte, dann könnte sie Kernel-Modus-Privilegien bekommen.• CLI/STI - IRQ off/on - e.g., Timer triggers via interrupt, if user could disableinterrupts, she could interfere with scheduling• PUSHF/POPF - Push/Pop Flags - e.g., to set CPL, if user could set CPL, she couldget kernel-mode privileges.
- Erklären Sie den Begriff: preemption. (1 pt) Explain the term: preemption. Gewaltsam eine Ressource aus einem Prozess wegnehmen. Forcefully take away a recource from a process.
- Welche Abstraktion wird vom Betriebssystem für das Multiplexen von CPUs bereitgestellt? (0.5 pt) What abstraction does the operating system supply for multiplexing CPUs? Das Betriebssystem abstrahiert CPUs mit Prozessen und Threads (0,5 P). EntwederProzess oder Thread genügt hier.The operating system abstracts CPUs with processes and threads (0.5 P). Eitherprocess or thread is sufficient.
- Was versteht man unter der Trap Instruktion? Ist diese privilegiert? (1.5 pt) What is the trap instruction? Is is privileged? Der Trap-Befehl schaltet den Prozessor auf den privilegierten Modus (0,5 P) und fährt fort mit der Ausführung an einer vom Betriebssystem definierten location. Es wird verwendet, um System calls zu implementieren (0,5 P) und ist somit nicht privilegiert (0,5 P).The trap instruction switches the processor to privileged mode (0.5 P) and continuesexecution at an operating system defined location. It is used to implement systemcalls (0.5 P) and is thus not privileged (0.5 P).
- Nennen Sie eine Betriebssystemfunktion für die üblicherweise kein Eintritt in den Kern notwendig ist. Begründen Sie Ihre Antwort. (1.5 pt) Give an operating system function that typically does not require entering the kernel. Explain your answer. Malloc (0,5 P). Der Heap-Allokator wird in der Regel in einer User-Space-Bibliothek implementiert und ruft nur in den Kernel, wenn der heap keinen Speicher mehr hat. (1P)Ein weiteres Beispiel: GetTickCount. Das Empfangen der Anzahl der ticks seit dem Start des Systems muss billig und schnell sein. Der Kernel bildet daher eine Seite durch die dieaktuelle Tickzahl an einem bekannten Ort in jeden Prozess gezählt wird.Andere Antworten werden akzeptiert, wenn sie richtig erklärt werden.malloc (0.5 P). The heap allocator is usually implemented in a user-space library andonly calls into the kernel if the heap ran out of memory (1 P).Another example: GetTickCount. Receiving the number of ticks since the start of thesystem must be cheap and quick. The kernel therefore maps a page containing thecurrent tick count at a known location into each process.Other answers are accepted if properly explained.
- Bewerten Sie folgende Aussage: Bei einem Systemaufruf muss das Page Table Directory (CR3) ausgetauscht werden, um in den Kernadressraum zu wechseln. Begründen Sie Ihre Antwort. (2 pt) Evaluate the following statement: On a system call, the page table directory (CR3) must be switched to transition to the kernel address space. Explain your answer. Die Aussage ist falsch (0,5 P). Der Kernel-Adressraum wird in jeden Prozess-Adressraum(1.5 P) am oberen Ende des virtuellen Adressbereichs erfasst. Ein Wechselndes CR3-Registers ist daher nicht erforderlich. The statement is wrong (0.5 P). The kernel address space is mapped into each process’saddress space (1.5 P) at the high end of the virtual address range. A switch of the CR3 register is thus not needed.
- Was versteht man unter einem Trampolin für Systemaufrufe? Wie stellt der Kernel dieses einem Prozess zur Verfügung? (3 pt) What is a system call trampoline? How does the kernel provide a process access to the trampoline? Einige CPU-Architekturen wie x86, bieten unterschiedliche Trap-Anweisungen je nach Hersteller (1 P) (Intel oder AMD), nämlich Sysenter und Syscall. Um Benutzerfreundliche Programme zu erstellen, die mit allen Varianten kompatibel sind, platziert das Betriebssystem System call Aufrufcode (einschließlich der Trap-Anweisung) für jede Variante in einem separaten Code Segment - dem Trampolin (0,5 P). Das Betriebssystem wählt das richtige Trampolin basierend auf der erkannten CPU-Architektur-Variante (zum Zeitpunkt des Bootens) (0,5 P).Das ausgewählte Trampolin wird in jedem Prozess an einem bekannten Ort abgebildet.(1 P)Some CPU architectures such as x86, provide different trap instructions depending onthe manufacturer (1 P) (Intel or AMD), namely sysenter and syscall. To make userlevelprograms compatible with all variants, the operating system places system callinvocation code (including the trap instruction) for each variant in a separate codesegment–the trampoline (0.5 P). The operating system chooses the right trampolinebased on the detected CPU architecture variant (at boot time) (0.5 P).The selected trampoline is mapped into every process at a known location (1 P).
- Nennen Sie eine CPU Ausnahme, die eine weitere Ausführung des Programms erlaubt. Welche Bedingungen müssen dabei erfüllt sein? (1.5 pt) Give a CPU exception that allows continuing program execution. What conditions must be fulfilled in that case? Seitenfehler (0,5 P). Der Zugang muss erlaubt sein (1 P), dh. der Adressbereich muss gültig sein und der Zugriffsmodus (Lesen / Schreiben / Ausführen) muss im aktuellen Zustand erlaubt sein (user / kernel).Auch akzeptiert: unjustierter Speicherzugriff (0,5 P). Keine Bedingungen erforderlich (1 P). page fault (0.5 P). The access must be permitted (1 P), which means the addressspace region must be valid and the access mode (read/write/execute) must be permittedin the current state (user/kernel).Also accepted: un-aligned memory access (0.5 P). No conditions required (1 P).
- Advertisement
- Unterstreichen Sie diejenigen Segmente, die nicht Teil einer ELF-Datei sind. Geben Sie eine kurze Begründung, warum diese nicht Bestandteil sind. (2 pt) Underline those segments that are not part of an ELF file. Shortly explain why these segments are missing. Data R/O-Data Heap BSS Text Stack Data R/O-Data >Heap (0.5 P) BSS Text >Stack (0.5 P)Jeder Thread benötigt einen Stapel. Da Threads während der Programmausführung dynamisch erstellt werden, kann die ELF-Datei die Stapelsegmente (0,5 P) nicht definieren. Das gleiche gilt Für den heap, da er dynamisch zugeordnete Daten speichert und die richtige Größe nicht bestimmt werden kann während der Kompilierzeit (0,5 P).Each thread requires a stack. Since threads are created dynamically during programexecution, the ELF file cannot define the stack segments (0.5 P). The same is truefor the heap as it stores dynamically allocated data and the correct size cannot bedetermined at compile time (0.5 P).
- Beschreiben Sie knapp den Unterschied zwischen Virtualisierung und Para-Virtualisierung. Welche Auswirkungen hat dies für das Gast-OS? (1 pt) Describe the difference between virtualization and para-virtualization briefly. What are the implications for the guest OS? • Mit der benutzung von Virtualisierung werden Gastbetriebssysteme mit (virtuellen aber)identische Kopien der zugrunde liegenden Hardware versehen. Deshalb müssen die Gäste nicht geändert werden.• Mit der Para-Virtualisierung sind Gastbetriebssysteme nicht versehen mit vollständig identischen Kopien der zugrunde liegenden Hardware. Deshalb müssen sich die Gäste "Bewusst ihrer Virtualisierung" sein und geändert werden. Either one of the following (+1P)• Using virtualization, guest operating systems are provided with (virtual but)identical copies of the underlying hardware. Therefore, the guests do not haveto be modified.• Using para-virtualization, guest operating systems are not provided with fullyidenticalcopies of the underlying hardware. Therefore, the guests have to be“aware of their virtualization” and be modified.
- Beschreiben Sie knapp die Unterschiede in der Struktur von Systemen auf Basis von monolitischen und Mikro-Kernen. In welcher Art von Systemen liegt prinzipiell ein größerer Overhead durch IPC vor? Begründen Sie Ihre Antwort kurz. (1.5 pt) Describe the differences in the structures of systems based on monolithic and micro kernels briefly. Which type of systems imposes larger overhead caused by IPC in general? Explain your answer briefly. • micro kernel: user-space (Hosting-Anwendungen und "so viele wie mögliche Teiledes Kernels "), Kernel-Raum (Hosting der" Kernel Essentials ") (+ 1P)• Micro-Kernel verleihen einen größeren IPC-Overhead, wie die kernelinterne Kommunikation auferlegt wechseln sie zwischen user- und kernel-mode. (+ 0,5P) • micro kernel: user-space (hosting applications and “as many as possible partsof the kernel”), kernel-space (hosting the “kernel essentials”) (+1P)• Micro kernels impose larger IPC overhead, as kernel-internal communication imposesswitches between user- and kernel-mode. (+0.5P)
- Die Funktion strcpy(char * target, char * source) kopiert eine Zeichenkette. Vervollständigen Sie die folgende Zeile C-Code, um vor dem Kopieren ein genau passendes Speicherstück (target) vom Betriebssystem anzufordern. (1 pt) target = The function strcpy(char * target, char * source) copies a character string. Complete the following line of C code to allocate an exactly fitting chunk of memory (target) from the operating system before copying. target = target = malloc(strlen(source) + 1); (+1P) For each syntax error: (-0.5P) – the semicolon is optional
- Erklären Sie, was jeweils in den folgenden Ausdrücken deklariert wird. Geben Sie außerdem an, wie viel Speicherplatz (in Byte) die deklarierte Struktur auf einem 64-Bit-System jeweils benötigt. (2 pt) void *(*v)(void * v); Explain what is declared by each of the following statements. Furthermore, state how much memory (in bytes) each declared structure consumes on a 64-bit system. void *(*v)(void * v); Ein Zeiger auf einer Funktion, die einen Zeiger auf Daten eines undefinierten Typs alsArgument hat und einen Zeiger auf Daten eines undefinierten Typs zurück gibt. Länge: 8 Bytes.Void * v [8]; Ein Array von 8 Zeigern, die jeweils auf Daten eines undefinierten Typs verweisen. Länge: 8* 8 Bytes = 64 Byte. A pointer to a function which takes a pointer to data of an undefined type as anargument and returns a pointer to data of an undefined type. Length: 8 bytes.void *v[8]; An array of 8 pointers, each of which points to data of an undefined type. Length: 8* 8 bytes = 64 bytes.
- Nennen Sie die drei in der Vorlesung besprochenen Zeitpunkte, an denen bei der Verarbeitung eines Programms, dessen Programmtext und Programmvariablen an Speicheradressen gebunden werden. (1.5 pt) Name the three points in time during program processing, when program text and program variables are bound to memory addresses, which were discussed in the lecture. • Kompilierzeit (Übersetzungszeit) (+ 0.5P)• Ladezeit (Ladezeit) (+ 0,5P)• Ausführungszeit (Ausführungszeit) (+ 0,5P) • Compile time (Übersetzungszeit) (+0.5P)• Load time (Ladezeit) (+0.5P)• Execution time (Ausführungszeit) (+0.5P)
- Schreiben Sie eine gültige Zeile C-Code, um den Offset der Adresse zu berechnen, auf die der Zeiger addr zeigt (innerhalb der virtuellen Seite page num). Verwenden Sie ausschließlich Bitoperationen (<<, >>, &, |, ˆ, ˜). Nehmen Sie eine Seitengröße von 4 KiB an. (1 pt) Write one valid line of C-code to calculate the offset of the address that pointer addr points to (within the virtual page page num). Use only bit operators (<<, >>, &, |, ˆ, ˜). Assume a page size of 4 KiB. offset = addr & 0xfff;
- Schreiben Sie eine gültige Zeile C-Code, um die Nummer der virtuellen Speich- erseite zu berechnen, auf die der Zeiger addr zeigt. Verwenden Sie ausschließlich Bitoperationen (<<, >>, &, |, ˆ, ˜). Nehmen Sie eine Seitengröße von 4 KiB an. (1 pt) Write one valid line of C-code to calculate the virtual page number that the pointer addr points to. Use only bit operators (<<, >>, &, |, ˆ, ˜). Assume a page size of 4 KiB. page num = addr >> 12;
- Schreiben Sie einen kurzen, syntaktisch korrekten C Codeabschnitt, in welchem D, S, T und ein Array H jeweils in bestimmten Addressraumsegmenten allokiert werden: D im Datensegment, H auf dem Heap, S im Stacksegment und T im Textsegment. (4 pt) Write a short piece of syntactically correct C code that allocates D, S, T, and an array H in particular address space segments: D in the data segment, H on the heap, S in the stack segment, and T in the text segment. (1 P) each int D = 23;int T ( ){ int S ; int ∗H = malloc ( 42 ∗ sizeof ( int ) ) ;}
- Sowohl E/A Geräte, als auch DMA-Controller signalisieren die Fertigstellung eines Transfers mithilfe eines Interrupts. Warum führt die Nutzung eines DMA-Controllers dennoch zu einer besseren Auslastung des Systems? (2 pt) Both an I/O device and a DMA controller signal the completion of a transfer with an interrupt. Why does the use of a DMA controller still lead to a better utilization of the system? (1 P) jeweils für:1. Der DMA-Controller kopiert auch das I / O-Ergebnis vom Gerätespeicher in den Hauptspeicher.2. Weniger Interrupts werden benötigt, wenn DMA verwendet wird, da nur die gesamte Transaktion zu letzt signalisiert werden muss. (1 P) each for:1. The DMA controller also copies the I/O result from device memory to main memory.2. Less interrupts are needed, when DMA is used, as only the entire transactionneeds to be finally signalled.
- Warum ergibt es keinen Sinn einen Spinlock mithilfe von zwei Registern zu implementieren anstatt Hauptspeicher zu nutzen? (1 pt) Why does it not make sense to implement a spinlock with two registers instead of using memory? Jeder Thread hat (praktisch) seinen eigenen Satz von Registern. Every thread has (virtually) its own set of registers.
- Warum kann ein Spinlock vollständig im Benutzermodus implementiert werden? Was benötigt die Implementierung? (1 pt) Why can a spinlock be fully implemented in user space? What does the implementation require? Ein Spinlock benötigt nur eine atomare Swap-Anweisung. Heute implementieren CPUs solcheAnweisungen im Userpace, da Speicherzugriffe, wie zum Beispiel das Austauschen von zwei Speichern Standorte (oder Speicherplatz und Register) keine besonderen Berechtigungen erfordern.Sagen wir, , keine privilegierten Anweisungen: (0 P) wie diese sind immer der Fall für jede Anweisung im Userpace ausgeführt zu werden. A spinlock only requires an atomic swap instruction. Today, CPUs implement suchinstructions in userspace because memory accesses, such as swapping two memorylocations (or a memory location and a register) does not require special privileges.Only saying no privileged instructions: (0 P) as this is always the case for any instructionexecuted in userspace.
- Was berechnet der folgende C-Code? Nehmen Sie an, dass a vom Typ uint32 t ist. (1 pt) What does the following C-code calculate? Assume that a has the type uint32 t. for ( u int32 t i = 0 ; a & 1 ; ++ i ) a >>= 1 ; return i ; Es berechnet die Position des ersten 0-bit, gezählt vom LSB. It calculates the position of the first 0-bit, counted from the LSB.
- Was sind Zombies und Waisen im Betriebssytem-Kontext? (2pt) What are Zombies and Orphans in the context of operating systems? Zombies: Kind verlassen, aber niemand sammelte seinen Ausgangstatus, bis jetzt.Zombies (windows): Prozess verlassen aber Prozesskontext noch nicht gereinigt. (1 P)Waise: Elternteil verlassen und Kind hat kein lebendiges Elternteil mehr. (1 P) Zombies: Child exited but no one collected its exit status, yet.Zombies (windows): Process exited but process context not cleaned up yet. (1 P)Orphan: Parent exited and child does not have a living parent anymore. (1 P)
- Welche Annahme steht hinter der LRU Seitenersetzungsstrategie? (1 pt) On which assumption is the LRU page replacement strategy based upon? Die Annahme ist, dass das Zugangsmuster der Vergangenheit eine gute Projektion für die Zukunft ist. (0,5 P) Im LRU-Fall bedeutet dies, dass es davon ausgeht, dass Seiten, deren Referenzam weitesten in der Vergangenheit liegen, in der Zukunft am weitesten wieder erreicht werden. (0,5 P) The assumption is, that the access pattern of the past is a good projection for the future.(0.5 P) In the LRU case this means, that it assumes, that pages whose referencelies furthest in the past will be accessed again farthest in the future. (0.5 P)
- Wie kann die CPU erkennen, dass ein nicht privilegierter Prozess versucht eine privilegierte Instruktion aufzurufen? Wie wird das Betriebssystem darüber benachrichtigt? (1 pt) How can the CPU detect that a non-privileged process has tried to execute a privileged instruction? How is the operating system notified about it? • Die CPU verfügt über ein Modus-Flag (d.h. User-Modus). Jetzt ist das Ausführen von privilegierten Anweisungen verboten. (+ 0,5P)• Die CPU erzeugt eine Ausnahme, die sofort einen Betriebssystem-Handler aufruft. (+ 0,5P) • The CPU has mode flag (i.e. user mode). Now, privileged instructions are prohibitedto be executed. (+0.5P)• The CPU generates an exception, which invokes an operating system handlerimmediately. (+0.5P)
- Wie verhindert das Betriebssystem, dass Prozess A auf den Hauptspeicher von Prozess B zugreifen kann? (1 pt) How does the operating system prevent process A from accessing the memory contents of process B? Jeder Prozess hat seine eigene AS. Wenn du es nicht nennen kannst, kannst du es nicht anfassen.Zu Sagen, dass die CPU versucht, auf andere AS zuzugreifen: (-1 P) können Sie nicht an physikalischen Speicher adressieren. Every Process has it’s own AS. If you cannot name it, you cannot touch it.Saying that the CPU will trap attempts to access other AS: (-1 P) you cannot addressphysical memory