{ "q1": { "type": "multiple", "question": "\n\n\nWhich of the following statements regarding system calls are true\n(select all that apply)?\n\n\n", "responses": { "block": "When a system call occurs, the process is blocked until the kernel returns a result.", "cheap": "Because system calls are handled by the kernel, they are generally fast and efficient when compared to normal function calls.", "context": "A system call always leads to a context switch from one process to another.", "modes": "A system call always leads to a transition from user mode to kernel mode.", "trap": "One way to implement system calls is to have a user application perform a trap that is caught by the CPU.", "table": "The code to handle each system call is stored in the CPU's trap table.", "signal": "Each process sets up its trap table by using the signal system call." } }, "q2": { "type": "multiple", "question": "\n\n\nWhich of the following statements regarding signals are true (select\nall that apply)?\n\n\n", "responses": { "ignored": "Any signal can be ignored by a user process.", "interrupt": "When a signal is delivered to a process, the process is interrupted and then runs the corresponding handler before returning to where it was interrupted.", "signal": "Applications can send a signal to another process by using the signal system call.", "kill": "Applications can send a signal to another process by using the kill system call.", "syscall": "Signals can interrupt system calls such as read.", "pause": "To pause another process, you can send it the SIGPAUSE signal.", "cont": "To unpause another process, you can send it the SIGCONT signal." } }, "q3": { "type": "multiple", "question": "\n\n\nWhich of the following statements regarding process states are true\n(select all that apply)?\n\n\n", "responses": { "new": "A new process is automatically placed in the running state when it is created.", "blocked": "A process can go from blocked to running when a system call completes.", "running": "A process can go from running to blocked when a system call is initiated.", "ready": "A process can go from blocked to ready when a system call completes.", "timeslice": "A process can go from running to ready when its timeslice is up.", "context": "A context switch usually occurs when a process goes from running to ready.", "terminated": "A process can only be terminated when it is in the waiting state." } }, "q4": { "type": "blank", "question": "\n
\n\nConsider a single-CPU, a timeslice of 10 ms, and the following processes:\n\n
\n\n\nProcess Arrival Time Run Time\nA 0 ms 20 ms\nB 10 ms 30 ms\nC 20 ms 10 ms\n\n\n
\nGiven the FIFO scheduling policy, sketch out when each process is in\neither the waiting and running state.\n
\n\n\nWaiting: _(01)_ _(02)_ _(03)_ _(04)_\n\nRunning: _(05)_ _(06)_ _(07)_ _(08)_ _(09)_ _(10)_\n\nTime: 0 ------ 10 ------ 20 ------ 30 ------ 40 ------ 50 ------ 60\n\n\n\n" }, "q5": { "type": "blank", "question": "\n
\n\nConsider a single-CPU, a timeslice of 10 ms, and the following processes:\n\n
\n\n\nProcess Arrival Time Run Time\nA 0 ms 20 ms\nB 10 ms 30 ms\nC 20 ms 10 ms\n\n\n
\nGiven the RDRN scheduling policy, sketch out when each process is in\neither the waiting and running state.\n
\n\n\nWaiting: _(01)_ _(02)_ _(03)_\n\nRunning: _(04)_ _(05)_ _(06)_ _(07)_ _(08)_ _(09)_\n\nTime: 0 ------ 10 ------ 20 ------ 30 ------ 40 ------ 50 ------ 60\n\n\n\n" }, "q6": { "type": "blank", "question": "\n
\n\nConsider a single-CPU, a timeslice of 10 ms, and the following processes:\n\n
\n\n\nProcess Arrival Time Run Time\nA 0 ms 20 ms\nB 10 ms 30 ms\nC 20 ms 10 ms\n\n\n
\nGiven the MLFQ scheduling policy, sketch out when each process is in\nthe running state and which queue level it is in.\n\nYou may assume that Queue 0 has a timeslice of 10 ms and\nQueue 1 has a timeslice of 20 ms.\n\n
\n\n\nQueue 0: _(01)_ _(02)_ _(03)_\n\nQueue 1: _(04)_ _(05)_ _(06)_ _(07)_ _(08)_\n\nRunning: _(09)_ _(10)_ _(11)_ _(12)_ _(13)_ _(14)_\n\nTime: 0 ------ 10 ------ 20 ------ 30 ------ 40 ------ 50 ------ 60\n\n\n\n" } }