Operating systems for distributed architectures: distributed system characteristics, process synchronization and communication. Basic distributed algorithms. Principles of fault tolerance. Reliable broadcast. Naming. File systems. Load balancing. Layering, Security.