CS407 M1 Ktunotes.in
CS407 M1 Ktunotes.in
Module 1
At the very beginning, one computer could only do one particular task at a time (batch
processing). Then multiprogramming introduced, which can execute multiple programs but there is
only one processor, there can be no true simultaneous execution of different programs. If we need
multiple tasks to be done in parallel, we need to have multiple computers running in parallel.
Multiprocessor run multiple programs simultanesouly by sharing same memory,so it is tightly coupled
system. But running them parallel was not enough for building a truly distributed system since it
requires a mechanism to communicate between different computers.
Distributed Computing is a field of computer science that studies distributed systems. A
distributed system is a model in which components located on networked computers communicate and
coordinate their actions by passing messages. Distributed system is said to be loosely coupled because
each processor has its own local memory.
1. The Internet
2. Mobile Computing
3. Intranet
4. Multiplayer online game
1. The Internet: A vast interconnected collection of computer networks of many different types.
In distributed system, there is no global clock among the multiple processor. So it is very hard
to schedule the processor. Designing a distributed system does not come as easy and straight forward.
A number of challenges need to be overcome in order to get the ideal system. The major challenges
in distributed systems are listed below:
Heterogeneity
Openness
Security
Scalability
Failure handling
Concurrency
Transparency
Heterogeneity :
The Internet enables users to access services and run applications over a heterogeneous
collection of computers and networks. Heterogeneity (that is, variety and difference) applies to all of
the following:
• Networks;
• Computer hardware;
• Operating systems;
• Programming languages;
• Implementations by different developers.
Different programming languages use different representations for characters and data
structures such as arrays and records. These differences must be addressed if programs written in
different languages are to be able to communicate with one another. Programs written by different
developers cannot communicate with one another unless they use common standards.
-Middleware : The term middleware applies to a software layer that provides a programming
abstraction as well as masking the heterogeneity of the underlying networks, hardware, operating
systems and programming languages.
-Heterogeneity and mobile code : The term mobile code is used to refer to program code that can be
transferred from one computer to another and run at the destination – Java applets are an example.
Code suitable for running on one computer is not necessarily suitable for running on another because
executable programs are normally specific both to the instruction set and to the host operating system.
Openness:
The openness of a computer system is the characteristic that determines whether the system can be
extended and re-implemented in various ways. The openness of distributed systems is determined
primarily by the degree to which new resource-sharing services can be added and be made available
for use by a variety of client programs.
To summarize:
• Open systems are characterized by the fact that their key interfaces are published.
• Open distributed systems are based on the provision of a uniform communication
mechanism and published interfaces for access to shared resources.
• Open distributed systems can be constructed from heterogeneous hardware and software,
possibly from different vendors
Security:
Security for information resources has three components:
-confidentiality (protection against disclosure to unauthorized individuals)
-integrity (protection against alteration or corruption)
-availability (protection against interference with the means to access the resources).
However, security challenges have not yet been fully met: for Denial of service attacks’ and Security
of mobile code’.
Scalability:
Distributed systems operate effectively and efficiently at many different scales, ranging from a small
intranet to the Internet. A system is described as scalable if it will remain effective when there is a
significant increase in the number of resources and the number of users. The number of computers and
servers in the Internet has increased dramatically.
The design of scalable distributed systems presents the following challenges:
Controlling the cost of physical resources
Controlling the performance loss
Preventing software resources running out
Avoiding performance bottlenecks
Failure handling
Computer systems sometimes fail. When faults occur in hardware or software, programs
may produce incorrect results or may stop before they have completed the intended
computation. Failures in a distributed system are partial – that is, some components fail while others
continue to function. Therefore the handling of failures is particularly difficult.
Detecting failures: Some failures can be detected. For example, checksums can be
used to detect corrupted data in a message or a file
Masking failures: Some failures that have been detected can be hidden or made less
severe. Two examples of hiding failures:
1. Messages can be retransmitted when they fail to arrive.
2. File data can be written to a pair of disks so that if one is corrupted, the other may
still be correct.
Tolerating failures: Most of the services in the Internet do exhibit failures – it would
not be practical for them to attempt to detect and hide all of the failures that might
occur in such a large network with so many components. when a web browser cannot contact a web
server, it does not make the user wait for ever while it keeps on trying – it informs the user about the
problem, leaving them free to try again later.
Recovery from failures: Recovery involves the design of software so that the state of
permanent data can be recovered or ‘rolled back’ after a server has crashed
Concurrency
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
Transparency
Transparency is defined as the concealment from the user and the application programmer of the
separation of components in a distributed system, so that the system is perceived as a whole rather
than as a collection of independent components.
Access transparency: enables local and remote resources to be accessed using
identical operations.
Location transparency :enables resources to be accessed without knowledge of their
physical or network location (for example, which building or IP address).
Concurrency transparency: enables several processes to operate concurrently using
shared resources without interference between them.
Replication transparency: enables multiple instances of resources to be used to
increase reliability and performance without knowledge of the replicas by users or
application programmers.
Failure transparency : enables the concealment of faults, allowing users and application
programs to complete their tasks despite the failure of hardware or software components.
Mobility transparency: allows the movement of resources and clients within a system
without affecting the operation of users or programs.
Performance transparency: allows the system to be reconfigured to improve performance as
loads vary.
The most important transparency are access and location transparency. They are referred together as
network transparency.
Distributed systems are undergoing a period of significant change and this can be traced back
to a number of influential trends:
• The emergence of pervasive networking technology
• The emergence of ubiquitous computing coupled with the desire to support user mobility in
distributed systems
• The increasing demand for multimedia services
• The view of distributed systems as a utility.
1.4.1 Pervasive networking and the modern Internet
The modern Internet is a vast interconnected collection of computer networks of many
different types, with the range of types increasing all the time. Example, a wide range of wireless
communication technologies such as WiFi, WiMAX, Bluetooth and third-generation mobile phone
networks. The net result is that networking has become a pervasive resource and devices can be
connected (if desired) at any time and in any place.
1.4.2 Mobile and ubiquitous computing
Technological advances in device miniaturization and wireless networking have led
increasingly to the integration of small and portable computing devices into distributed systems. These
devices include:
Laptop computers.
Handheld devices, including mobile phones, smart phones, GPS-enabled devices, pagers,
personal digital assistants (PDAs), video cameras and digital cameras.
Wearable devices, such as smart watches with functionality similar to a PDA.
Devices embedded in appliances such as washing machines, hi-fi systems, cars and
refrigerators.
The portability of many of these devices, together with their ability to connect conveniently to
networks in different places, makes mobile computing possible.
Mobile computing is the performance of computing tasks while the user is on the move, or visiting
places other than their usual environment.
1.4.3 Distributed multimedia systems
Another important trend is the requirement to support multimedia services in distributed
systems. The benefits of distributed multimedia computing are considerable in that a wide range of
new (multimedia) services and applications can be provided on the desktop, including access to live or
pre-recorded television broadcasts, access to film libraries offering video-on-demand services, access
to music libraries, the provision of audio and video conferencing facilities and integrated telephony
features including IP telephony or related technologies such as Skype, a peer-to-peer alternative to IP
telephony.
Webcasting is an application of distributed multimedia technology. Webcasting is the ability to
broadcast continuous media, typically audio or video, over the Internet.
1.4.4 Distributed computing as a utility
With the increasing maturity of distributed systems infrastructure, a number of companies are
promoting the view of distributed resources as a commodity or utility, drawing the analogy between
distributed resources.
eg. Cloud computing, grid computing