当前位置: 技术问答>linux和unix
内核进程与用户进程间的通信
来源: 互联网 发布时间:2015-06-26
本文导语: 在Linux下,用户远程可以方便地与内核进程进行通信(ioctl),但主动权掌握在用户进程手中,用户进程可以向内核进程请求服务,并得到响应。 但如何让内核进程通知用户进程某些事件的发生,并传递一些参数呢?...
在Linux下,用户远程可以方便地与内核进程进行通信(ioctl),但主动权掌握在用户进程手中,用户进程可以向内核进程请求服务,并得到响应。
但如何让内核进程通知用户进程某些事件的发生,并传递一些参数呢?
一种可能的方法是让用户进程定时查询,但效率明显太低,而且实时性也不够,不知各位有没有什么好的办法,请赐教!
但如何让内核进程通知用户进程某些事件的发生,并传递一些参数呢?
一种可能的方法是让用户进程定时查询,但效率明显太低,而且实时性也不够,不知各位有没有什么好的办法,请赐教!
|
是否可以考虑通过信号来进行??
|
就像阻塞式i/o操作一样,可先使用户进程阻塞等待,当有数据到达时,内核再让用户进程返回。
|
如果是简单字符设备的做法是实现read/poll操作,另外设一个等待队列,在条件满足时设置好数据并唤醒等待队列。用户态使用select等待通知,有通知时则去读取,具体的读取内容由自己定。其他设备的实现方法类似。
|
只有使用select/poll这样的机制比较适合你的要求,但其实也是由应用程序不断地去轮询。也可以阻塞等待事件返回。
|
linux的设计是按照,服务器/客户端的模式,内核是处在服务的位置,多数情况只能被动的接受响应.在内核驱动中好像可以使用任务队列来完成把