用户空间驱动程序的优点:
1)可以和整个C库链接
2)驱动程序不用借助外部程序(对于复杂的外设,常常需要和驱动一起发行用户提供策略的应用程序)就可以完成许多非常规的任务。
3)在驱动中可以使用浮点数,在某些特殊的硬件中,可能需要使用浮点数,而linux内核并不提供浮点数的支持。如果能在用户态实现驱动,就可以轻松解决这一问题
4) 驱动的问题不会导致整个系统挂起,有过驱动开发经验的人一定会对调试深有感触,一些错误常常导致整个系统挂起。而用户态的驱动在调试上就要方便很多。
5) 用户内存可以换出
6)设计良好的驱动仍然可以支持对设备的并发访问
7)可以给出封闭源码的驱动程序,不必采用GPL,更为灵活
用户空间驱动的最常见例子是X-server,很多USB设备的驱动也可以放到用户空间。目前,很多人尝试在用户态为PCI设备提供驱动
用户空间驱动的缺点:
1)中断在用户空间不可用,最新的UIO接口已经解决了这一问题
2)响应时间较慢
3)只能支持字符设备,无法支持块设备和网络设备
4)可靠性较低,很多驱动都是闭源的,我们没法通过阅读代码解决问题
5)有些硬件厂商只提供和某些linux开发版(常常早就过时了)相匹配的用户空间驱动
相关阅读: