Device drivers are the OS code for talking to a specific device. They provide a higher-level, device-agnostic interface to the rest of the OS. The OS exposes this to the user program via system calls.
Devices must also be shared (multiplexed securely and usually concurrently).