linux 内核态与用户态_linux内核态和用户态通信
大家好,又见面了,我是你们的朋友全栈君。
创建于 2013-04-13
迁移自本人的百度空间
——————————–
1/内核态->用户态
在kernel module中调用printk是最简单的传递信息到用户空间的方法。
2/用户态->内核态
在linux中,用户对设备的操作往往被抽象为对文件的操作。利用这一特性,可以通过注册和实现伪字符设备到内核,来实现用户进程和内核空间的交互。当在用户空间执行对该伪设备的open/read/write/ioctl/mmap/release等操作时,这些被复用的系统调用就会使进程从用户态进入到内核态,从而在内核中完成事先注册的操作
int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);
static inline void unregister_chrdev(unsigned int major, const char *name)
3/内核态->用户态
内核态中,可以完成对用户文件系统任意文件的访问。因此,可以在内核态将要输出的信息写入文件,写入后用户态程序直接读取文件就可以完成从内核空间向用户空间的数据传递。
4/内核态<->用户态
proc文件系统,是当前内核或内核模块,和用户交互的主要方式,它通过将虚拟的文件系统挂载在/proc下,利用虚拟文件读写在用户和内核态间传递信息。通过内核模块,可以向/proc下注册新的文件,指定用户读写该文件时的回调函数;这样,当用户读写该文件时,工作在内核态的回调函数就可以执行信息交互的有关工作。
向内核中注册/proc下文件的调用是create_proc_entry
5/内核态<->用户态
netlink是一种特殊的socket,用于用户态与内核态的双向通讯。在实现用户和内核交互的各种方式中,netlink的主要特点得意于它继承了 socket的一些基本特性,包括异步通讯,多播,双向性,不需要额外的文件。在用户态中,netlink的使用与标准的socket API相同,在内核态,则需要使用专门的API。
在内核态,通过netlink_kernel_create可以在内核中新建socket结构并注册接收到消息的回调函数input,其原型为:
struct sock *netlink_kernel_create(int unit, void (*input)(struct sock *sk, int len));
void sock_release(struct socket *sock)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/192222.html原文链接:https://javaforall.cn
相关文章
- linux 切换内核版本,切换 Linux 内核版本[通俗易懂]
- openwrt使用linux内核版本,openwrt更换原有Linux内核版本「建议收藏」
- Linux内核交叉编译技术简介(linux交叉编译内核)
- 版本Linux查看CPU内核版本的方法(linux查看cpu内核)
- Linux系统:改变背景色的简单方法(linux背景颜色)
- 如何快速更新Linux内核(linux怎么升级内核)
- Linux内核:重新编织的未来(linux内核重新编译)
- 技术探索Linux系统内核的调试精髓(linux系统内核的调试)
- Linux下实现双系统极速安装(在linux下安装双系统)
- Linux系统下如何设置外网IP(linux设置外网ip)
- Linux服务器配置指南:实现快速部署(linux服务器配置手册)
- Linux内核栈:优化最大容量(linux内核栈大小)
- Linux系统的分支发展概述(linux的分支)
- Linux发展史:从分支到支撑(linux的分支)
- 「Linux内核:探索文件目录」(linux内核文件目录)
- 精通Linux 第二版:学习Linux的必备书籍(精通linux第二版)
- Linux 比较工具:让文件比较变得简单易用(linux比较工具)
- Linux最近修改文件:如何查找和管理您的最新更新(linux最近修改文件)
- 深入探索Linux木马编写(linux木马编写)
- Linux下串口通信编程实战(linux下串口通信编程)
- 配置“Linux下打印机配置简易指南”(linux打印机)
- Linux下共享内存:实现多任务间高效通信的利器(linux下共享内存)
- 如何解决Linux打开txt文档出现乱码问题?(linux打开txt乱码)
- 深入探索:博通Linux驱动技术(博通linux驱动)
- 探索Linux的查找命令行实用技能(linux的查找命令行)
- 「Linux下按键精灵」:高效实现键盘精准模拟的强大辅助工具(linux下按键精灵)
- Linux权限修改:读写自如(linux改变读写权限)