linux 内核态与用户态_linux内核态和用户态通信

linux 内核态与用户态_linux内核态和用户态通信创建于2013-04-13迁移自本人的百度空间——————————–1/内核态->用户态      在kernel module中调用printk是最简单的传递信息到用户空间的方法。 2/用户态->内核态      在linux中,用户对设备的操作往往被抽象为对文件的操作。利用这一特性,可以通过注册和实现伪字符设备…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

创建于 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.net/192222.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • M语言编程_所有编程语言大全

    M语言编程_所有编程语言大全一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言)。那就先从最简单的开始:解释执行器。一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮、智能提示等,不过还没

    2022年8月4日
    12
  • css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决「建议收藏」

    css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决「建议收藏」问题描述按钮样式为图标+文字,在使用flex布局写垂直居中时,iphone7手机上文字和图标却没有居中,居左显示。代码如下(已精简):{{confirmButtonText}}…button{display:flex;align-items:center;justify-content:center;img{width:36px;height:36px;display:…

    2022年6月12日
    53
  • DHCP协议 详解[通俗易懂]

    DHCP协议 详解[通俗易懂]原文地址:http://blog.csdn.net/windeal3203/article/details/50677166  DHCP:动态主机配置协议  TCP/IP协议想要运行正常的话,网络中的主机和路由器不可避免地需要配置一些信息(如接口的IP地址等)。有了这些配置信息主机/路由器才能提供/使用特定的网络服务。  主机信息的必要元素有:IP地址、子网掩码、DNS服务器IP地址

    2022年5月24日
    40
  • 转–《煮酒探西游》吴闲云

    转–《煮酒探西游》吴闲云煮酒探西游吴闲云目录(1)唐僧的父母之谜(2)《西游记》中最大的秘密(3)殷小姐为什么要绣球招亲(4)唐僧的亲爹究竟是谁(5)小姐为什么要弃婴江中(6)唐僧复仇(7)观音菩萨的黑帐(8)唐僧的相貌之谜(9)唐僧为什么要取经(10)唐太宗地府还魂(11)真经究竟有什么作用(12)取经难,传经更难(13)观音菩萨是一个什么样的人

    2022年6月6日
    45
  • ImportError: No module named bz2问题解决方法「建议收藏」

    ImportError: No module named bz2问题解决方法「建议收藏」问题:File”out/host/Linux-x86/obj/EXECUTABLES/mksnapshot.arm_intermediates/js2c.py”,line36,in  importbz2ImportError:Nomodulenamedbz2Traceback(mostrecentcalllast): File”out

    2022年6月1日
    40
  • 网络通信常见加密剖析[通俗易懂]

    网络通信常见加密剖析[通俗易懂]系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学

    2022年6月2日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号