Distributed systems connect loosely coupled processors over a communications network. They allow for resource sharing, increased computation speed and reliability. There are two main types - network operating systems where users explicitly access remote machines, and distributed operating systems where remote resources can be accessed like local ones. Communication in distributed systems must address naming, routing, connections and contention. Routing can be fixed, virtual or dynamic depending on adaptability needs. Connection strategies include circuit switching, message switching and packet switching. Distributed systems provide benefits of economics, speed and collaboration over distances but also complexity and security challenges.