Test 1

Operating Systems and Networking

CS330

Fall 2014

Test date: October 9, 2014

Test modality: Closed book, closed notes, closed laptops and inactive cellphones

Q1. A. One of the goals of every OS is to ‘support’ its user community. Who are its users? Should the word ‘support’ include ‘discouragement’ in some cases? If so how? Are the needs different from users to users?

Or, B. What are the resources an OS needs to manage to support its user-base? Should the user-interfaces to handle user interactions be considered OS resources? Give some examples of this specific set.

Q2. A There are a number of registers in CPU which are available to users (meaning they are user visible), the rest, though, are not. If users cannot use them, why are they there in the first place? Suggest how they could be used.

Or, B. What is a bus? Surely, to connect all the components of a system, we could use a direct multi-connector network (see below) joining each subsystem to the others, but, instead, we use bus (see below). Would it not slow down the system?

Network connection architecture Bus layout architecture

Q3. A CPU instruction cycle comprises two distinct phases: Fetch, and Execute. How do we enforce concurrency to improve system performance? When can we say a ‘Fetch’ is complete?

Or B. An operating system is highly dependent on its interrupt system for successful operation. Why so? What possible actions an OS might take if another interrupts arrive while it is working on the first interrupt?

Q4. A. What is context switching? Under what conditions does a context-switch take place? What must be done when a context-switch is warranted? If it’s an overhead, can we somehow avoid it?

Or B. What is the difference between a multiprogramming system and a time-sharing system? In what ways are they similar? Under what conditions a multiprogramming system may be more desirable than a time-sharing time?

Q5. A. What is the difference between a batch and interactive system? When you pay your grocery bill with your credit card, what kind of system would you be using? What is the system goal or objective (performance) that one attempts to maximize in batch and in interactive system, respectively?

Or, B. What is the system goal of a real-time system? Should one also attempt to make a real-time system faster? Could we have a multiuser, multitasking system which at the same time cater to real-time processes additionally?