Buses are shared communication links that connect processors, memory, and input/output (I/O) devices. They allow new devices to be easily added and devices to be moved between systems using the same bus standard. However, buses can create communication bottlenecks and their maximum speed is limited by length and number of devices. Buses use control lines to signal requests/acknowledgments and indicate data type, while data lines carry addresses, data, and commands between devices. Devices controlling the bus are masters, while devices responding are slaves.