[quote user="Wolfgang Muees1"]Doing IO in userspace is not professional.[/quote]
Wow, don't let microkernel enthausiasts hear that...
Doing IO in userspace can be a very reasonable choice for system stability reasons and easy of prototyping.
If interrupt handling is a requirement, there's the UIO framework. It still requires a tiny bit of kernel code (just whatever is needed get the interrupt line to clear), but most of the driver can remain in userspace.
[quote user="Wolfgang Muees1"]Writing device drivers has the additional benefit that you can add a layer of abstraction, so that the userspace can abstract from the device, and make it possible to change the hardware without a need to change the userspace program.[/quote]
A library or daemon/service can do the same.