Assignment 1

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Assignment#3

SP21-BSCS-0030
ANEESH LOHANA
1. What are the three main purposes of an operating system?

The three main puropses are:


• To provide an environment for a computer user to execute programs on computer hardware in a
convenient and efficient manner.
• To allocate the separate resources of the computer as needed to solve the problem given. The
allocation process should be as fair and efficient as possible.
• As a control program it serves two major functions: (1) supervision of the execution of user
programs to prevent errors and improper use of the computer, and (2) management of the
operation and control of I/O devices.
2. We have stressed the need for an operating system to make efficient use of the computing
hardware. When is it appropriate for the operating system to forsake this principle and to
“waste” resources? Why is such a system not really wasteful?

Single-user systems should maximize use of the system for the user. A GUI might “waste” CPU
cycles, but it optimizes the user’s interaction with the system.
3. What is the main difficulty that a programmer must overcome in writing an operating
system for a real-time environment?

The main difficulty is keeping the operating system within the fixed time constraints of a real-
time system. If the system does not complete a task in a certain time frame, it may cause a
breakdown of the entire system it is running. Therefore when writing an operating system for a
real-time system, the writer must be sure that his scheduling schemes don’t allow response time
to exceed the time constraint.
4. Some CPUs provide for more than two modes of operation. What are two possible uses of
these multiple modes?

Although most systems only distinguish between user and kernel modes, some CPUs have
supported multiple modes. Multiple modes could be used to provide a finer-grained security
policy. For example, rather than distinguishing between just user and kernel mode, you could
distinguish between different types of user mode. Perhaps users belonging to the same group
could execute each other’s code. The machine would go into a specified mode when one of these
users was running code. When the machine was in this mode, a member of the group could run
code belonging to anyone else in the group.
5. Timers could be used to compute the current time. Provide a short description of how this
could be accomplished.

A program could use the following approach to compute the current time using timer interrupts.
The program could set a timer for some time in the future and go to sleep. When it is awakened
by the interrupt, it could update its local state, which it is using to keep track of the number of
interrupts it has received thus far. It could then repeat this process of continually setting timer
interrupts and updating its local state when the interrupts are actually raised.
6. Distinguish between the client–server and peer-to-peer models of distributed systems.

The client-server model firmly distinguishes the roles of the client and server. Under this model,
the client requests services that are provided by the server. The peer-to-peer model doesn’t have
such strict roles. In fact, all nodes in the system are considered peers and thus may act as either
clients or servers—or both. A node may request a service from another peer, or the node may in
fact provide such a service to other peers in the system.

7. Assume that a distributed system is susceptible to server failure. What mechanisms would
be required to guarantee the “exactly once” semantics for execution of RPCs?

The server should keep track in stable storage (such as a disk log) information regarding what
RPC operations were received, whether they were successfully performed, and the results
associated with the operations. When a server crash takes place and a RPC message is received,
the server can check whether the RPC had been previously performed and therefore guarantee
“exactly once” semanctics for the execution of RPCs.
8. When a process creates a new process using the fork() operation, which of the following
state is shared between the parent process and the child process?
a. Stack
b. Heap
c. Shared memory segments

Only the shared memory segments are shared between the parent process and the newly forked
child process. Copies of the stack and the heap are made for the newly created process.
9. Describe the actions taken by a kernel to context-switch between kernellevel threads.

Context switching between kernel threads typically requires saving the value of the CPU registers
from the thread being switched out and restoring the CPU registers of the new thread being
scheduled.
10. What resources are used when a thread is created? How do they differ from those used
when a process is created?

Because a thread is smaller than a process, thread creation typically uses fewer resources than
process creation. Creating a process requires allocating a process control block (PCB), a rather
large data structure. The PCB includes a memory map, list of open files, and environment
variables. Allocating and managing the memory map is typically the most time-consuming
activity. Creating either a user or kernel thread involves allocating a small data structure to hold a
register set, stack, and priority.
11. What are two differences between user-level threads and kernel-level threads? Under what
circumstances is one type better than the other?
a. User-level threads are unknown by the kernel, whereas the kernel is aware of kernel
threads.
b. On systems using either M:1 or M:N mapping, user threads are scheduled by the thread
library and the kernel schedules kernel threads.
c. Kernel threads need not be associated with a process whereas every user thread belongs
to a process. Kernel threads are generally more expensive to maintain than user threads as
they must be represented with a kernel data structure.
12. Provide three programming examples in which multithreading provides better performance
than a single-threaded solution.

a. A Web server that services each request in a separate thread.


b. A parallelized application such as matrix multiplication where different parts of the
matrix may be worked on in parallel.
c. An interactive GUI program such as a debugger where a thread is used to monitor user
input, another thread represents the running application, and a third thread monitors
performance.
13. Explain why spinlocks are not appropriate for single-processor systems yet are often used in
multiprocessor systems.

Spinlocks are not appropriate for single-processor systems because the condition that would
break a process out of the spinlock can be obtained only by executing a different process. If the
process is not relinquishing the processor, other processes do not get the opportunity to set the
program condition required for the first process to make progress. In a multiprocessor system,
other processes execute on other processors and thereby modify the program state in order to
release the first process from the spinlock.
14. Show that, if the wait() and signal() semaphore operations are not executed atomically, then
mutual exclusion may be violated.

A wait operation atomically decrements the value associated with a semaphore. If two wait
operations are executed on a semaphore when its value is 1, if the two operations are not
performed atomically, then it is possible that both operations might proceed to decrement the
semaphore value, thereby violating mutual exclusion.
15. What advantage is there in having different time-quantum sizes at different levels of a
multilevel queueing system?

Processes that need more frequent servicing, for instance, interactive processes such as editors,
can be in a queue with a small time quantum. Processes with no need for frequent servicing can
be in a queue with a larger quantum, requiring fewer context switches to complete the processing,
and thus making more efficient use of the computer.
16. Suppose that a scheduling algorithm (at the level of short-term CPU scheduling) favors
those processes that have used the least processor time in the recent past. Why will this
algorithm favor I/O-bound programs and yet not permanently starve CPU-bound
programs?
It will favor the I/O-bound programs because of the relatively short CPU burst request by them;
however, the CPU-bound programs will not starve because the I/O-bound programs will
relinquish the CPU relatively often to do their I/O.
17. Distinguish between PCS and SCS scheduling.

PCS scheduling is done local to the process. It is how the thread library schedules threads onto
available LWPs. SCS scheduling is the situation where the operating system schedules kernel
threads. On systems using either many-to-one or many-to-many, the two scheduling models are
fundamentally different. On systems using one-to-one, PCS and SCS are the same.
18. Is it possible to have a deadlock involving only one single-threaded process?

No. This follows directly from the hold-and-wait condition.


19. Name two differences between logical and physical addresses.

A logical address does not refer to an actual existing address; rather, it refers to an abstract
address in an abstract address space. Contrast this with a physical address that refers to an actual
physical address in memory. A logical address is generated by the CPU and is translated into a
physical address by the memory management unit(MMU). Therefore, physical addresses are
generated by the MMU.
20. Describe a mechanism by which one segment could belong to the address space of two
different processes.

Since segment tables are a collection of base–limit registers, segments can be shared when entries
in the segment table of two different jobs point to the same physical location. The two segment
tables must have identical base pointers, and the shared segment number must be the same in the
two processes.

You might also like