当前位置: 技术问答>linux和unix
关于内核空间和用户空间之间的实时通信?
来源: 互联网 发布时间:2016-05-16
本文导语: 当内核空间接收到数据时,为了可以很及时的通知用户空间的程序来接收, 用了异步通知,可是实时性感觉又不够,可能是我不太熟悉吧,不知道可以用异步通知来实现 内核空间和用户空间之间的实时通信么??...
当内核空间接收到数据时,为了可以很及时的通知用户空间的程序来接收,
用了异步通知,可是实时性感觉又不够,可能是我不太熟悉吧,不知道可以用异步通知来实现
内核空间和用户空间之间的实时通信么???
除了异通知不知道还有别的方法么??
用了异步通知,可是实时性感觉又不够,可能是我不太熟悉吧,不知道可以用异步通知来实现
内核空间和用户空间之间的实时通信么???
除了异通知不知道还有别的方法么??
|
用户层和内核之间的通讯有多种方式:
1.通过ioctl
这种方式的特点是用户层为主动的,当用户层通过ioctl下发指令内核给出相应的操作,具体的细节更具自己实现的代码决定
2.通过proc
这种方法标准的做法是内核单向向用户层传递数据,根据自己实现的代码来决定通过什么方式显示
3.通过netlink
这种方法是利用sock网络套结字来实现用户层和内核的双向数据传递,但是相对编码复杂一点,但是接口都是封装好的,这种方法的特点是用户层可以像操作网络套结字那样的轻松的操作内核传递上来的数据,比如用户层作客户端,内核作服务端,或者用户层做服务端,内核做客户端。
4.也可以自己实现内核和用户层的数据传递
可以内核读写用户层的文件,但是效率低下。也可以仿造linux内核已有的方式自己修改相关代码实现用户层与内核的数据传递。
总的来说,基本的通讯方式已经满足了大多数的引用,如果有特殊应用可以在上述几种已有接口上自己封装。
1.通过ioctl
这种方式的特点是用户层为主动的,当用户层通过ioctl下发指令内核给出相应的操作,具体的细节更具自己实现的代码决定
2.通过proc
这种方法标准的做法是内核单向向用户层传递数据,根据自己实现的代码来决定通过什么方式显示
3.通过netlink
这种方法是利用sock网络套结字来实现用户层和内核的双向数据传递,但是相对编码复杂一点,但是接口都是封装好的,这种方法的特点是用户层可以像操作网络套结字那样的轻松的操作内核传递上来的数据,比如用户层作客户端,内核作服务端,或者用户层做服务端,内核做客户端。
4.也可以自己实现内核和用户层的数据传递
可以内核读写用户层的文件,但是效率低下。也可以仿造linux内核已有的方式自己修改相关代码实现用户层与内核的数据传递。
总的来说,基本的通讯方式已经满足了大多数的引用,如果有特殊应用可以在上述几种已有接口上自己封装。