Two primitive operations wait(s) and signal(s) operating on a semaphore variable s is what constitutes a semaphore. The variable s can take on an integer value. If s is allowed to have 0 and 1, it is a binary semaphore. the general semaphore can take on any integer value.
The wait operation implements the busy-wait. WAIT causes a wait until the semaphore variable is Free. Then the process waiting for the semaphore can turn it to busy and enter the critical section. When CS is done, the process operates a signal(s) to signal to all waiting processes that the semaphore is free.
A good semaphore should have properties ( Milan Milenkovich book, p 91),
- ensure mutual exclusion - the semaphore does that.
- no assumptions are made about relative speeds and priorities of contending process - no process can get past the semaphore when it is not free, the process has to wait.
- Guarantee that when any process crashes outside the critical section, it does not starve any one else- semaphore meets that too.
Question: Describe briefly various models of distributed computer systems.
The models usually used are,
- Host/minicomputer based model - this is the model in which multiple processors are connected over a network. each of these hosts/minicomputers work with number of terminals.
- Workstation model- multiple workstation connected through a communication network.
- Processor Pool model- this is a model in which pools of processors are available are accessed through terminals connected through a communication network.
- Workstation/server model - multiple workstations are connected over a communication network to multiple servers
- Hybrid model - a model containing a mix of one or more of the above models.
Question: Why does RPCs need to be message based? What details need to be communicated to the receiver and back to the sender?What is the need for the messages to of uniform semantics?
In case of a distributed computer system, each is a self contained system with independent memory spaces. Thus memory based calling will not make sense a s a pointer to the message in one memory would not mean anything in another system's space. Thus, only thing that could be done is to send out a message with required data to the system where from some service is required.
What needs to be sent to the sender is some details describing what services are needed and relevant parameters. The sender, in its turn should receive the results of that request.
There are lot of differences between systems in how a variable is described, how they are stored etc. Unless a common meaning can be applied messages will not be understood between systems and hence things will go horribly wrong!
Question:There are several design issues involved in designing an advanced OS. Discuss two issues, you think, are the most important and why?
While there are a whole set of design issues Reliability and Performance seem to the most important to me. The range of issues are several kinds of transparency(access, location, replication,failure,migration, concurrency, performance, scaling etc.), reliability, performance and fault tolerance.
Performance is always important. You try to create a multiple computer systems to create higher performance, so that is a priority. Reliability is as important as if the system does not work reliably, the whole purpose of getting computing done without problems fails!
No comments:
Post a Comment