Ya, tapi jarang berguna. Pada sistem x86 32-bit, Anda dapat menggunakan ioperm(2)
panggilan sistem untuk mengatur proses saat ini untuk memungkinkannya melakukan port I/O secara langsung. Saya yakin ini tidak berfungsi pada sistem 64-bit. Anda juga dapat melakukan lseek/read/write
kombinasi terhadap /dev/port
dan menurut saya ini juga tidak terlalu portabel. Lihat http://tldp.org/HOWTO/IO-Port-Programming-2.html untuk detail lebih lanjut. Kedua pendekatan ini jauh lebih lambat dan kurang fleksibel daripada menulis driver perangkat tentunya (/dev/port
paling lambat). Tak satu pun dari mekanisme ruang pengguna ini memungkinkan Anda menangani interupsi atau semacamnya, tentu saja. Jika kinerja menjadi masalah, Anda pada akhirnya akan menulis driver perangkat.
Tebakan Anda benar. Kernel adalah satu-satunya perangkat lunak yang dapat mengirimkan permintaan perangkat keras. Itu tidak hanya berlaku untuk Linux. Hampir tidak ada sistem operasi yang lebih baru dari DOS yang memungkinkan Anda mengakses perangkat keras secara langsung, karena, seperti yang Anda duga, ini cukup berbahaya.
Namun, tidak ada masalah dalam menulis driver Anda sendiri dan banyak dokumentasi yang tersedia. Misalnya, tutorial di xatlantis ini tampaknya merupakan sumber terbaru (itu penting!) dan bagus.