Processes in Distributed Systems
1. Introduction
In distributed systems, communication between processes is a fundamental concept. A process is
essentially a program in execution, and its management, including scheduling and resource
allocation, is crucial for system performance. Distributed systems introduce additional complexities
such as multithreading, client-server organization, process migration, and the use of software
agents.
2. Threads and Their Implementation
Threads in Non-distributed Systems
Process: An independent execution unit with its own memory space.
Thread: A smaller unit of a process that can run concurrently within the same process memory
space.
[Placeholder for Processes and Threads Image]
Benefits of Threads:
- Simplified programming model
- Reduced resource allocation time compared to processes
- Improved performance through overlapping I/O and computation
- Real parallelism on multiprocessor systems
Thread Implementation:
Processes in Distributed Systems
User-level threads: Fast to create and manage but can block entire processes during system calls.
Kernel-level threads: Managed by the OS, allowing better scheduling but with higher overhead.
Hybrid Approach: Lightweight processes (LWPs) combine user-level thread benefits with
kernel-level thread management for efficient operation.
3. Anatomy of Clients
Clients interact with distributed systems through user interfaces and client-side software. The goal is
to provide transparency in operations such as location, replication, and access.
4. Servers and Design Issues
General Design Issues:
Organization: Iterative (single-threaded) vs. Concurrent (multithreaded or multiprocess)
Client Contact: Endpoints or ports are used for client-server communication. Well-known ports are
standardized, while dynamic ports are assigned as needed.
Interrupt Handling: Servers can handle interruptions through client disconnection or urgent data
signals.
Stateless vs. Stateful Servers: Stateless servers are simpler and more resilient to crashes, whereas
stateful servers offer better performance but need recovery mechanisms.
[Placeholder for Server Models Image]
Server Clusters:
Processes in Distributed Systems
Three-tier Architecture: Presentation, logic, and data tiers enhance scalability and reliability.
Distributed Servers: Provide multiple access points to avoid single points of failure.
5. Code Migration
Reasons for Code Migration:
Performance Improvement: Load balancing across machines.
Reduced Communication: Moving code closer to data sources.
Parallelism: Executing parts of a program simultaneously on different machines.
Flexibility: Dynamic reconfiguration of applications.
Models for Code Migration:
Weak Mobility: Only the code segment moves; the program restarts at the target.
Strong Mobility: The entire execution state moves, allowing the program to resume from where it left
off.
[Placeholder for Code Migration Models Image]
Resource Binding:
Unattached, Fastened, and Fixed Resources: Strategies for handling resource references during
migration.
Processes in Distributed Systems
6. Software Agents and Agent Technology
Types of Agents:
Collaborative Agents: Work together towards a common goal.
Mobile Agents: Move across different systems to perform tasks.
Interface Agents: Assist users by learning and adapting to their preferences.
Information Agents: Manage and retrieve information across distributed systems.
[Placeholder for Agent Types Image]