Both services and applications provide resources that can be shared by clients in a distributed system. There is, therefore, a possibility that several clients will attempt to access a shared resource at the same time. For example, a data structure that records bids for an auction may be accessed very frequently when it gets close to the deadline time.
The process that manages a shared resource could take one client request at a time. But that approach limits throughput. Therefore services and applications generally allow multiple client requests to be processed concurrently. To make this more concrete, suppose that each resource is encapsulated as an object and that invocations are executed in concurrent threads. In this case it is possible that several threads may be executing concurrently within an object, in which case their operations on the object may conflict with one another and produce inconsistent results. For example, if two concurrent bids at an auction are ‘Smith: $122’ and ‘Jones: $111’, and the corresponding operations are interleaved without any control, then they might get stored as ‘Smith: $111’ and ‘Jones: $122’.
The moral of this story is that any object that represents a shared resource in a distributed system must be responsible for ensuring that it operates correctly in a concurrent environment. This applies not only to servers but also to objects in applications. Therefore any programmer who takes an implementation of an object that
was not intended for use in a distributed system must do whatever is necessary to make it safe in a concurrent environment.
For an object to be safe in a concurrent environment, its operations must be synchronized in such a way that its data remains consistent. This can be achieved by standard techniques such as semaphores, which are used in most operating systems.
Frequently Asked Questions
- Difference Between Manual And Automated System - Manual System vs Automated System
- System definition and concepts | characteristics and types of system
- Real-life Business sub-systems -Production, Marketing, Personal, Material, Finance
- Systems models types of models - Systems environment and boundaries
- Real Time And Distributed System
- Basic Principles Of Successful System
- Role and need of systems analyst
- Qualifications and responsibilities Of System Analyst
- System Analyst As Change Of Agent , Investigator and Monitoring Guy , Architect , Psychologist , Motivator , Intermediary
- System development life cycle (SDLC)
- Various phases of development - Analysis, Design, Development, Implementation, Maintenance
- Types of documentation and their importance
- Enforcing documentation discipline in an organization
- Data and fact gathering techniques- Interviews, Group communication, Presentations, Site visits
- Feasibility study and its importance