Académique Documents
Professionnel Documents
Culture Documents
Explicit addressing. The process with which communication is desired is explicitly named as a parameter in the communication primitive used.
Implicit addressing. The process willing to communicate does not explicitly name a process for communication (the sender names a server
instead of a process). This type of process addressing is also known as functional addressing.
A drawback of this method is that it does not allow a process to migrate from one machine to another if such a need arises.
To overcome the limitation of the above method, process can be identified by a combination of the following three fields: machine_id, local_id
and machine_id.
The first field identifies the node on which the process was created.
The second field is the local identifier generated by the node on which the process was created.
The third field identifies the last known location (node) of the process.
Another method to achieve the goal of location transparency in process addressing is to use a two-level naming scheme for processes. In this
method each process has two identifiers: a high-level name that is machine independent (an ASCII string) and the low-level name that is
machine dependent (such as pair (machine_id, local_id). A name server is used to maintain a mapping table that maps high-level names of
processes to their low-level names.
Group Communication:
The most elementary form of message-based interaction is one-to-one communication (also known as point-to-point, or unicast
communication) in which a single-sender process sends a message to a single-receiver process. For performance and ease of programming,
several highly parallel distributed applications require that a message-passing system should also provide group communication facility.
Depending on single or multiple senders and receivers, the following three types of group communication are possible:
Group Management:
In case of one-to-many communication, receiver processes of a message form a group. Such groups are of two types closed and open. A
closed group is one in which only the members of the group can send a message to the group. An outside process cannot send a message to
the group as a whole, although it may send a message to an individual member of the group. On the other hand, an open group is one in which
any process in the system can send a message to the group as a whole.
Group Addressing
D.C
A two-level naming scheme is normally used for group addressing. The high-level grup name is an ASCII string that is independent of
the location of the processes in the group. On the other hand, the low-level group name depends to a large extent on the underlying
hardware.
On some networks it is possible to create a special network address to which multiple machines can listen. Such a network address is called a
multicast address. Therefore, in such systems a multicast is used as a low-level name for a group.
Some networks that do not have the facility to create multicast address may have broadcast facility. A packet sent to a broadcast address is
automatically delivered to all machines in the network. In this case, the software of each machine must check to see if the packet is intended
for it.
If a network does not support either the facility to create multicast address or the broadcasting facility, a one-to-one communication
mechanism has to be used to implement the group communication facility. That is, the kernel of the sending machine sends the message
packet separately to each machine that has a process belonging to the group. Therefore, in this case, the low-level name of a group contains a
list of machine identifiers of all machines that have a process belonging to the group.
Many-to-One Communication:
In this scheme, multiple senders send messages to a single receiver. The single receiver may be selective or nonselective. A selective
receiver specifies a unique sender; a message exchange takes place only if that sender sends a message. On the other hand, a nonselective
receiver specifies a set of senders, and if any one sender in the set sends a message to this receiver, a message exchange takes place. An
important issue related to the many-to-one communication scheme is nondeterminism. It is not known in advance which member (or
members) of the group will have its information available first.
Many-to-Many Communication:
In this scheme, multiple senders send messages to multiple receivers. An important issue related to many-to-many communication
scheme is that of ordered message delivery. Ordered message delivery ensures, that all messages are delivered to all receivers in an order
acceptable to the application.
Thread is smallest part of program and It is independent sequential path of execution with in a program.
Suppose there r two threads that means that occurs at same memory location bcz of smallest part of program.
and the context switching b/w threads is less expensive rather than process that is why Thread is called Light
WEIGHT.
The major difference between threads and processes is
1. Threads (Light weight Processes) share the address space of the process that created it; processes have their own address
2.Threads have direct access to the data segment of its process; processes have their own copy of the data segment of the parent process.
3. Threads can directly communicate with other threads of its process; processes must use interprocess communication to communicate with
sibling processes.
4. Threads have almost no overhead; processes have considerable overhead.
5. New threads are easily created; new processes require duplication of the parent process.
6. Threads can exercise considerable control over threads of the same process; processes can only exercise control over child processes.
7. Changes to the main thread (cancellation, priority change, etc.) may affect the behavior of the other threads
of the process changes to the parent process does not affect child processes. If we consider running a word
processing program to be a process, then the auto-save and spell check features that occur in the background are different threads of that
process which are all operating on the same data set (your document).
Eg:
Threads are typically compared in terms of processing time. For example, a lightweight thread is a thread that takes less processing time,
whereas a heavyweight thread is a thread that requires more processing time. Thread processing time is also contingent on the language used
for thread implementation. For example, it may be more efficient to use C# to implement a program containing multiple threads.
Modern operating systems, like Mac, allow for more than a single thread in the same address space, reducing switching time between threads.
However, this does not make use of multithreading benefits.
Communication between processes also known as IPC, or inter-process communication is quite difficult and resource-intensive.
*Buffering
In the standard message passing model, messages can be copied many times: from the user buffer to the kernel buffer (the output buffer of a
channel), from the kernel buffer of the sending computer (process) to the kernel buffer in the receiving computer (the input buffer of a
channel), and finally from the kernel buffer of the receiving computer (process) to a user buffer.
Single-Message Buffer:
In single-message buffer strategy, a buffer having a capacity to store a single message is used on the receivers node. This strategy is usually
used for synchronous communication, an application module may have at most one message outstanding at a time.
Unbounded-Capacity Buffer:
In the asynchronous mode of communication, since a sender does not wait for the receiver to be ready, there may be several pending
messages that have not yet been accepted by the receiver. Therefore, an unbounded-capacity message-buffer that can store all unreceived
messages is needed to support asynchronous communication with the assurance that all the messages sent to the receiver will be delivered.
Finite-Bound Buffer:
Unbounded capacity of a buffer is practically impossible. Therefore, in practice, systems using asynchronous mode of communication use
finite-bound buffers, also known as multiple-message buffers. In this case message is first copied from the sending processs memory into the
receiving processs mailbox and then copied from the mailbox to the receivers memory when the receiver calls for the message.
When the buffer has finite bounds, a strategy is also needed for handling the problem of a possible buffer overflow. The buffer overflow
problem can be dealt with in one of the following two ways:
Unsuccessful communication. In this method, message transfers simply fail, whenever there is no more buffer space and an error is returned.
Flow-controlled communication. The second method is to use flow control, which means that the sender is blocked until the receiver accepts
some messages, thus creating space in the buffer for new messages. This method introduces a synchronization between the sender and the
receiver and may result in unexpected deadlocks. Moreover, due to the synchronization imposed, the asynchronous send does not operate in
the truly asynchronous mode for all send commands.
D.C
*Munin
Software distributed shared memory (DSM) is a software abstraction of shared memory on a distributed memory machine. The key problem in
building an efficient DSM system is to reduce the amount of communication needed to keep the distributed memories consistent. The Munin
DSM system incorporates a number of novel techniques for doing so, including the use of multiple consistency protocols and support for
multiple concurrent writer protocols. Due to these, and other, features, Munin is able to achieve high performance on a variety of numerical
applications. This paper contains a detailed description of the design and implementation of the Munin prototype, with special emphasis given
to its novel write shared protocol. Furthermore, it describes a number of lessons that we learned from our experience with the prototype
implementation that are relevant to the implementation of future DSM's.
Pre-transferring
It is also known as pre-copying.
The address space is transferred while the process is still running on the source node.
It is done as an initial transfer of the complete address space followed by repeated transfers of the page modified during the previous transfer.
The pre-transfer operation is executed at a higher priority than all other programs on the source node.
Reduces the freezing time of the process but it may increase the total time for migrating due to the possibility of redundant page transfers.
D.C
Transfer on reference
The process address space is left behind on its source node, and as the relocated process executes on its destination node.
Attempts to reference memory page results in the generation of requests to copy in the desired blocks from their remote location.
A page is transferred from its source node to its destination node only when referenced.
Very short switching time of the process from its source node to its destination node.
Imposes a continued load on the processs source node and results in the process if source node fails or is rebooted.
DCE Components: DCE uses various technologies that form the components such as:
1. Thread package
It is a package that provides a programming model for building concurrent applications. It is a collection of user-level library procedures that
supports the creation, management, and synchronization of multiple threads.
It was designed to minimize the impact on the existing software that could convert single threaded into multithreaded one.
D.C
Threads facility is not provided by many operating systems and DCE components require threads, hence threads package is included in DCE.
2. Remote procedure call
A procedure call is a method of implementing the Client/Server Communication.
The procedure call is translated into network communications by the underlying RPC mechanism.
In DCE RPC, one or more DCE RPC interfaces are defined using the DCE interface definition language (IDL). Each interface comprises a set of
associated RPC calls each with their input and output parameters.
RPC hides communication detail and removes system and hardware dependencies. It can automatically handle data type conversions between
the client and the server without considering whether they run on the same or different architecture, or have same or different byte ordering.
3. Name service
The Name service of DCE include
a. Cell Directory Service (CDS):The CDS manages a database of information about the resources in a group of machines called a DCE cell.
b. Global Directory Service (GDS):The Global Directory Service implements an international, standard directory service and provides a global
namespace that connects the local DCE cells into one worldwide hierarchy.
c. Global Directory Agent (GDA): The GDA acts as a go-between for cell and global directory services.
4. Distributed file service
Distributed File service is a worldwide distributed file system which allows users to access and share files stored on a file server anywhere on
the network without knowing the physical location of the file.
It provides characteristics such as high performance, high availability and location transparency and is able to perform tasks like replicating
data; log file system data, quick recovery during crash etc.
5. Time service
The DCE Time Service (DTS) provides synchronized time on the computers.
It enables distributed applications on different computers to determine event sequencing, duration, and scheduling participating in a
Distributed Computing Environment.
DTS also provides services which return a time range to an application, which compare time ranges from different machines.
6. Scheduling and synchronization
Scheduling determines how long a thread runs and which thread will run next.
It uses three algorithms namely FIFO, Round Robin, or the Default algorithm.
Synchronization prevents multiple threads from accessing the same resource at the same time.
7. Security service
There are three aspects to DCE security which provide resource protection within a system against illegitimate access. They are:
Authentication: This identifies that a DCE user or service is allowed to use a particular service.
Secure communications: Communication over the network can be checked for tampering or encrypted for privacy.
Authorization: The permission to access the service is given after authorization.
These are services are provided using Registry Service, Privilege Service, Access Control List (ACL) Facility, and Login Facility etc.
Advantages of DCE
Supports portability and interoperability
Supports distributed file service
a) 3-process each with its own clock, the clocks run at different rates. b) Lamport algorithm corrects the clocks.
7)Using these method , there is a way to assign time to all events in a distributed system subject to the following condition.
If a and b represent to sending and receiving of a message, respectively c(a)>c(b),
If a happens before b in the same process, c(a)<c(b)< li="">
D.C
Now, lets consider a case where the above Return Reply message gets lost in the connection, definitely with the timeout mechanism. The
client will wait for the reply from the Server for a specific time and after that, it assumes the request message has gotten lost and therefore
retransmission is needed. So, he will retransmit the same request to the Server this is the same thing we had seen in our previous article of
exactly once semantics, and this is not a reliable way to communicate.
Step 4
Now what happens is that the client sends the same request again as Retransmit (Debit, 100).
Step 5
On the server side, the server assumes it as a new request message, and treats it like that Balance = 900-100 = 800. You see here, 100 is
deducted twice, but the client wants to debit only 100. So we are very off in this communication path.
Step 6
The Server sends a reply message as Return (Success, 800) to the client.
D.C
*Namespace
Namespaces are commonly structured as hierarchies to allow reuse of names in different contexts. As an analogy, consider a system of naming
of people where each person has a proper name, as well as a family name shared with their relatives. If, in each family, the names of family
members are unique, then each person can be uniquely identified by the combination of first name and family name; there is only one Jane
Doe, though there may be many Janes. Within the namespace of the Doe family, just "Jane" suffices to unambiguously designate this person,
while within the "global" namespace of all people, the full name must be used.
In a similar way, hierarchical file systems organize files in directories. Each directory is a separate namespace, so that the directories "letters"
and "invoices" may both contain a file "to_jane".
In computer programming, namespaces are typically employed for the purpose of grouping symbols and identifiers around a particular
functionality and to avoid name collisions between multiple identifiers that share the same name.
In networking, the Domain Name System organizes websites (and other resources) into hierarchical namespaces.
Ability to function with varying intercomputer network speeds, from wide-area networks to high-speed local-area networks and tightly
coupled multiprocessors
Simplified kernel structure, with a small number of abstractions (In turn, these abstractions are sufficiently general to allow other operating
systems to be implemented on top of Mach.)
Distributed operation, providing network transparency to clients and an object-oriented organization both internally and externally
Integrated memory management and interprocess communication, to provide efficient communication of large numbers of data as well as
communication-based memory management
Heterogeneous system support, to make Mach widely available and interoperable among computer systems from multiple vendors The
designers of Mach have been heavily influenced by BSD (and by UNIX, in general), whose benefits include
A simple programmer interface, with a good set of primitives and a consistent set of interfaces to system facilities Easy portability to a wide
class of single processors
An extensive library of utilities and applications
The ability to combine utilities easily via pipes Of course, the designers also wanted to redress what they saw as the drawbacks of BSD:
A kernel that has become the repository of many redundant features and that consequently is difficult to manage and modify
Original design goals that made it difficult to provide support for multiprocessors, distributed systems, and shared program libraries (For
instance, because the kernel was designed for single processors, it has no provisions for locking code or data that other processors might be
using.) 4 Appendix B The Mach System
Too many fundamental abstractions, providing too many similar, competing means with which to accomplish the same tasks
* compare and contrast between Network Operating System and the Distributed Operating System with a suitable example.