user programs talk with device drivers through device files
But if I understand correctly,
if the device driver is inside the OS kernel, a user program accesses the device, by making system calls to request the OS kernel to act on its behalf. How do the device file and system calls work together then, since they both help the user program to access the device? (Does the device file act both as an id to the device and also as the interface to the device driver?)
If the device driver is outside the OS kernel, does the user program only use the device file to access the device, without system calls?