The main goal of the course is to provide students with knowledge and skills in the field of distributed and network operating systems. Students get acquainted with the concepts used in network and distributed operating systems and their capabilities for building distributed applications. Basic issues related to the features and requirements of distributed systems, implementation of the client-server model, group communication, middleware environments, remote procedure calling, CPU allocation, parallel transactions, security, replication of services and resources, etc. are discussed. Attention is paid to the time synchronization (physical and logical) of the processes in the distributed systems.
1. Distributed and network operating systems. Basic concepts.
2. Tools for implementing the client-server model in operating systems. Primitives for sending and receiving messages.
3. Server architectures. Development of client-server applications.
4. Group communication. Arrange messages. IP multicast.
5. Remote procedure call (RPC). Semantics of errors. Aspects of realization.
6. Implementation of RPC in UNIX and Linux. RPC-based distributed application development technology.
7. Synchronization in distributed systems. Time accounting in distributed systems.
8. Algorithms for synchronization in physical time. Internet time synchronization. Logical time. Lamport algorithm.
9. Mutually exclusive access in distributed systems. Centralized and distributed algorithms for mutually exclusive access. Coordinator selection algorithms.
10. Mutual blocking in distributed systems. Centralized and distributed algorithms for detection and removal of mutual blocking in distributed systems.
11. Distribution of processors in distributed systems. Centralized and distributed algorithms. CPU load.
12. Atomic transactions. Transaction primitives. Transaction model. Parallel transaction management. Distributed transactions.
13. Security in distributed and network operating systems.
14. Replication of services and resources. Sync issues.
15. Distributed file systems. Distributed file system architecture. NFS, DFS file systems.