290 likes | 456 Views
Tutorial 4. Test Practice . Today’s Agenda. Solving last year’s test questions. Q1: Which of the following is NOT an operating system theme or model as defined in lectures?. The donkey model. The onion model. The manager model. The resource allocator model.
E N D
Tutorial 4 Test Practice
Today’s Agenda • Solving last year’s test questions.
Q1: Which of the following is NOT an operating system theme or model as defined in lectures? • The donkey model. • The onion model. • The manager model. • The resource allocator model.
Q2: Early Unix had what type of operating system kernel? • A client/server module kernel. • A client/server microkernel. • An all-in-one monolithic kernel. • A hybrid layered client/server kernel.
Q3: Which of the following best describes the task of a resident monitor? • It kept several programs in memory at once and scheduled them according to time slices. • It supplied a disk operating system with spooling of input and output. • It enabled several people to use the computer at the same time from multiple terminals. • It cleared memory used by one program, automatically loaded the next program and jumped to its starting point.
Q4: What change contributed most to the development of time-sharing systems? • Disk drives became widely available. • Computers became cheaper. • Spooling - simultaneous peripheral operation online. • Multiple scheduling queues.
Q5: How did a time-sharing operating system differ from a batch operating system? • Compared to a batch system many of the scheduling decisions could no longer be made by the operating system. • Time-sharing systems allowed multiple processes to be running simultaneously. • The response time was slower on a time-sharing system. • Security was simpler in time-sharing systems.
Q6: The first smartphone operating systems were most similar to which of the following types of historical operating systems? • Batch systems. • Time-sharing systems. • Hard real-time operating systems. • Resident monitors.
Q7: Which of the following is NOT a reason that virtual machines are popular? • Multiple servers, each in its own virtual machine, can run on one computer. • Virtual machines can be easily moved from one machine to another. • Virtual machines can emulate any CPU architecture. • Virtual machines allow you to run programs from one operating system on top of another operating system.
Q8: Which of the following was NOT included in Popek and Goldberg’s requirements of virtualization? • Fidelity - the software should run identically on the virtual machine as on a real machine. • Performance - most instructions in the virtual machine should be run directly on the hardware. • Safety - each virtual machine, and the virtual machine monitor should be safe from actions in another virtual machine. • Simplicity - the implementation of the virtual machine monitor must be clear and simple.
Q9: Which of the following best describes what application virtualization is? • An API library layer is provided which allows an application designed to run on one operating system to run on another operating system. • Multiple virtual machines with the same kernel are implemented as applications on a host machine also running the same kernel. • Modifications are made to the source code of an application so that it can run efficiently on another operating system. • A guest operating system runs as an application on a host operating system.
Q10: Why are spin locks particularly bad when run on a single core processor? • Running in the spin lock is pointless as the thread holding the lock cannot run and therefore release the lock at the same time. • Single core processors get overheated more easily if a thread is running in a spin lock. • As only one thread can run on a single core processor there is no need for a lock of any kind, including spin locks. • Because time-slice preemption is the only way another thread can run on a single core, it is possible for the spin lock to fail.
Q11: Which of the following is the best definition of an atomic instruction? • The instruction stops all other processes or threads from working until it has completed. • As an atomic instruction executes intermediate states of the operand values are only accessible from within the same process. • Atomic instructions can only be broken down into smaller sub-atomic instructions. • The instruction executes without any of its operands being visible or modifiable by outside changes until the instruction has completed.
Q12: Which of the following statements about the x86-64 xchg instruction is FALSE? • It atomically swaps the values in its two operands. • It can be used to implement correctly working locks. • It can be used to atomically swap the values of two memory locations. • It can be used to atomically swap the values of two registers.
Q13: How does the Bakery algorithm guarantee a unique ordering of process requests to use a shared resource? • The ticket number distributed by the algorithm is kept unique by the use of a spin lock. • A hash value is generated from the process id of the process and the ticket number distributed by the algorithm. • The process id of the process is appended to the ticket number distributed by the algorithm. • The algorithm uses the scheduling priority of each process as its unique ordering identifier.
Q14: Which of the following problems does not occur as a possible consequence of locking resources? • Deadlock. • Inconsistent data. • Priority inversion. • Indefinite postponement.
Q15: What is priority inheritance? • The solution to priority inversion, where a process using a resource has its priority temporarily increased to that of the highest priority process waiting for the resource. • The solution to priority inversion, where all processes waiting on a resource temporarily get the same priority as the process currently using the resource. • The solution to indefinite postponement, where a process waiting for a resource gets the same priority as the process currently using the resource. • The solution to indefinite postponement, where all processes using or waiting for a resource get the maximum priority of all processes waiting for the resource.
Q16: Which of the following statements about semaphores is correct? • A semaphore is an integer count with some indivisible operations and an initialization. • Returning a resource when no process is waiting causes the semaphore value to increase. • A binary semaphore can be used in the same way as a simple lock. • All of the above.
Q17: The definition “an instance of a program in execution” best applies to which of the following? • a thread. • a process. • a user-level resource. • a system-level resource.
Q18: Which of the following is NOT an advantage of system-level threads over user-level threads? • Each thread can be scheduled separately. • Blocking threads don’t stop the entire process. • Threads from the same process can run simultaneously on different cores/processors. • Switching between threads is faster.
Q19: Which of the following statements is FALSE concerning Solaris threads before version 9? • There could be several kernel threads associated with one user-level thread at the same time. • Extra lightweight processes were added if necessary when a thread blocked in the kernel. • Several user threads could be associated with one lightweight process. • Each lightweight process was associated with one kernel thread.
Q20: With original Linux threads the clone system call created a new process which shared all of its memory with the original process. The new process was then used as a thread of the original process. Which of the following statements was TRUE about original Linux threads. • If one thread called exec to run another program, all threads in the same process would be killed. • If one thread in the process finished, all threads finished. • If a thread made a blocking system call, the other threads in the same process could still continue. • All of the above.
Q21: Which of the following statements about the producer/consumer problem is FALSE? • The order of data being consumed must match the order it was produced. • Each item of data produced must be consumed. • Each item of data produced must be consumed only once. • None of the above.
Q22: Which of the following statements about multitasking is FALSE? • Preemptive multitasking provides greater predictability of when processes will be scheduled compared to cooperative multitasking. • The use of cooperative multitasking over preemptive multitasking can make the design of the kernel simpler. • Multitasking means that multiple processes can take turns to execute on the same CPU in such a way that it appears that they are all running simultaneously. • Cooperative multitasking means that all processes run to completion before allowing other processes to run.
Q23: What is normally meant by a “context switch”? • Any change in state of a process as it executes. • Saving the state of one process and restoring the state of another process so that the CPU moves from running one process to running the other. • The switch between a process running in user mode to running in kernel mode. This can happen as the result of a system call or an exception. • The change which occurs on the stack of a running process as it makes a function call, including the allocation of memory for any parameters and the local variables.
Q24: Given three processes A, B, and C with corresponding burst times 20, 5, and 2, what is the average waiting time with a first come first served (FCFS) scheduler? All processes are ready to run at the same time but they arrived in the order A, B, then C. • 15 • 9 • 25 • 3
Here is a very simple attempt at implementing a lock: lock: while locked end locked = true unlock: locked = false Q25: Which of the following statements about the above lock code is FALSE? • It doesn't work, multiple threads could gain the lock simultaneously. • It is unfair, there is no guarantee a thread will progress through the lock. • It doesn't work, if a thread holds the lock and goes to sleep no other threads can gain access. • It wastes CPU cycles checking the value of the locked variable.
Here is the lecture version of Peterson’s software solution to the two thread lock problem: lock: flag[i] = true turn = j while (flag[j] && turn == j) end unlock: flag[i] = false Q26: Which of the following statements about this lock is FALSE? • It can be generalized to more than two threads by simply extending the size of the flag array. • The lock relies on the fact that the line “turn = j” is executed atomically by each thread. • The lock guarantees that each thread will eventually progress past the lock and enter the critical section of code. • The lock will not allow one thread to enter the critical section twice if the other thread is waiting to enter the critical section.
#include <stdio.h> int answer = 6; void main() { int x = 3; int y = 5; printf("answer1: %d\n", answer); __asm__("addl %1, %2\n\t" "movl %2, %0" : "=m" (answer) : "r" (x), "r" (y) ); printf("answer2: %d\n", answer); } Q27: What output is produced by the second printf function in the program above? • answer2: 6 • answer2: 2 • answer2: 8 • answer2: 5