This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Q1. A) exectuting nested transactions requires some form of coordination. Explain what a coordinator should actually do.
Let's take example of the following two types of transactions. Strict executions in which transactions delay for both read and write are required in order to escape both "dirty reads" and "premature writes". In this model transaction have only two options either committed or aborted. This occurs when both service delays read and write operations on an object until every transaction wrote that object before have either aborted or committed.
Tentative version. In an event where a server of recoverable objects must contribute in transactions, it has to be designed in a way that any updates of objects can be deducted if and when transaction aborts. In order to achieve this all update operations performed during a transaction are designed in tentative versions of objects in volatile memory. Objects are sent tentative version only when a transaction commits.
Nested transactions are simply an extension for the above models. It allows transactions to be created within transactions. In this case transactions formed within transactions are regarded as modules. The outermost transactions in a set of nested transactions is called the "top-level" transaction. And the rest are named subtransactions.
The job of a coordinator is also pretty simple. It waits for all transaction requested previously to complete before writing all the committed versions of the objects accessed by a particulay transaction. It then commits a transaction by checking consistency of all operations of transaction with previous versions.
Q1. B) We argued that distribution transparency may not be in place for pervasive systems. This statement is not true for all types of transparencies. Explain what do you understand by pervasive systems.
Pervasive systems consist of a group of machines that can sense their physical environment and adapt their behaviour accordingly. They are very flexible in term of adaptation and aware of who's around, what resources are available or close to them.
â€¢ Contextual change: The system is part of an environment in which changes should be immediately accounted for.
â€¢ Ad hoc composition: every single node may be used in a very in various ways by different users. A simple configuration is required to achive this.
â€¢ Resource sharing enabled by default: Nodes come and go, providing sharable services and information. Calls again for simplicity.
Pervasiveness and distribution transparency may not always make a good couple
Home Systems should be completely self-organizing and not require a system administrator. Personal space should be provided to each one of the users while providing simpler solutions to
Q2. Consider a chain of processes P1.P2,..., Pn implementing a mulititiered client-server architecture. Process Pi is client of process pi?, and Pi will return a reply to pi? Only after receiving a reply from pi?. What are the main problems with this organisation when taking a look at the request-reply performance at process P1?
In a situation where there are a large number of processes like in the scenario above the performance will be affected negatively. Reason behind this is simply because of the architecture functions in a form of a circle. If one machine along the chain breaks down, it automatically affects the others so therefore less performance.
Q3. Strong mobility in UNIX systems could be supported by allowing a process to fork a child on a remote machine. Explain how this would work.
UNIX fork semantics permits the child process to inherit and physically share the parent's text region. The information can be either shared or copied logically from the parent's region. The page frames is mapped simultaneously from the parent to a corresponding child. This also eliminates accuracy issues.
Q4 Describe how connectionless communication between a client and server proceeds when using sockets.
There is a way to maintain a connectionless communication when using socket. This is usually done when a process wants to communication with another process. First they connect by creating a socket by invoking the socket system call to define a communication domain and type "datagram or stream" or a particular internet protocol "TCP or UDP". After making the call, the socket call returns a descriptor by which the socket may be referenced. Before any type of communication takes place, both ends of the socket must come to an agreement. The recipient will bind its descriptor to a socket address while the sender also does the same in order to receive replies. This is called the "bind system call". The purpose of this call is to assign an address to an unbound socket. Once this is done, the address remains the same The link remains active unless its closed or until all process with its descriptor exits.
Example of the "bind system call"
Q5. The Request- Reply Protocol is underlying most implementations of remote procedure calls and remote method invocations. In the Request-Reply Protocol, the request messages carry a request ID so that the sender can match answer messages to the requests it sent out.
a) Task: Describe a scenario in which a client could receive a reply from an earlier request.
If the generator in the client fails to create a new request ID for each request message, the server can easily copy and link the previous request ID with a wrong message. For instance when the client sends two different request using the same request ID, when the doOperation checks the reply message of the second request it will not be able to tell whether it's a reply from a delayed earlier call or the current call.
The Request-Reply-Acknowledge (RRA) protocol is a variant of the Request-Reply (RR) protocol, where the client has to acknowledge the server's reply. Assume that the operations requested by the client are not idempotent, that is their outcome is different if they are executed a second time.
b) For each of the two protocols, RR and RRA, describe which information the server has to store in order to reliably execute the requests of the client and return information about the outcome. Discuss as well when the server can delete which piece of information under the two protocols.
History- this is where the server keeps information such as records of (reply) messafe which have been previously transmitted. This enables servers to re-transmit replies without having to re-execute a particular operation. A history entry contains information such as request identifier, a message and an identifier of the client where it was sent. The server keeps these informations to reliably execute requests of clients.
The amount of data stored in History depends on the number of users involved. The more the number of users increases the more memory is needed on the server in order to keep everyone satisfied. This is cost effective and can reduce performance by keeping unnecessary data on the server while also affecting other users.
Since clients are permitted to make only one request at a time, clients requests can be considered as an acknowledgement of its previous reply from the server's side. And seince the last reply received does not get acknowledged after the client process ends, any reply message sent to the server before the very last version becomes useless. From this stage messages stored in history are normally discarded after a certain period of time.
Question 4. Example of " Bind system call" http://www.ibm.com/developerworks/aix/library/au-tcpsystemcalls/index.html
DISTRIBUTED SYSTEMS, CONCEPTS AND DESIGN 4th Edition. by George Coulouris, Jean Dollimore and Tim Kindberg.