linux用户和内核之间通信

本文详细介绍了 Linux 下的进程间通信机制,包括 proc 文件系统的作用、共享内存与文件映射的区别、netlink 的使用场景、系统调用 ioctl 的功能、通过 bootloader 向内核传递参数的方法、sysfs 文件系统的特点以及 sysctl 工具如何帮助用户设置和获取内核配置参数。

1.proc文件系统

http://bbs.chinaunix.net/thread-2017914-1-1.html

2.共享内存和文件映射:原理差不多,都是将一段高速缓存映射进进程地址空间,区别就是,共享内存是专门为内存共享设计的,速度快,只存在于内存中,没有对应的磁盘文件;文件映射可以是和磁盘文件对应。其实两者最终都是共享内存,一种是通过mmap实现;一种是system v系统实现,通过特殊的文件系统来实现。

http://wenku.baidu.com/view/eeb5cde9102de2bd96058883.html

内存映射是用来加快对文件/设备的访问。共享内存是用来在多个进程间进行快速的大数据量的交换。

Android共享内存是:匿名共享内存 (和PMEM)

http://wenku.baidu.com/view/42c59e1c59eef8c75fbfb3a2.html

3.netlink.netlink既可以内核和应用,也可以用户态进程间通信。

http://www.bitscn.com/os/linux/200802/128204.html

http://bbs.chinaunix.net/thread-2029813-1-1.html   netlink why adn how

4.系统调用,ioctl

5.bootloader想内核传递参数 

Linux 提供了一种通过 bootloader 向其传输启动参数的功能,内核开发者可以通过这种方式来向内核传输数据,从而控制内核启动行为。

通常的使用方式是,定义一个分析参数的函数,而后使用内核提供的宏 __setup把它注册到内核中,该宏定义在 linux/init.h 中,因此要使用它必须包含该头文件:


__setup("para_name=", parse_func)


6.sysfs文件系统

7.

sysctl

Sysctl是一种用户应用来设置和获得运行时内核的配置参数的一种有效方式,通过这种方式,用户应用可以在内核运行的任何时刻来改变内核的配置参数,也可以在任何时候获得内核的配置参数,通常,内核的这些配置参数也出现在proc文件系统的/proc/sys目录下,用户应用可以直接通过这个目录下的文件来实现内核配置的读写操作,例如,用户可以通过


Cat /proc/sys/net/ipv4/ip_forward

来得知内核IP层是否允许转发IP包,用户可以通过


echo 1 > /proc/sys/net/ipv4/ip_forward

把内核 IP 层设置为允许转发 IP 包,即把该机器配置成一个路由器或网关。一般地,所有的 Linux 发布也提供了一个系统工具 sysctl,它可以设置和读取内核的配置参数,但是该工具依赖于 proc 文件系统,为了使用该工具,内核必须支持 proc 文件系统。下面是使用 sysctl 工具来获取和设置内核配置参数的例子:


$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
$ sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

注意,参数 net.ipv4.ip_forward 实际被转换到对应的 proc 文件/proc/sys/net/ipv4/ip_forward,选项 -w 表示设置该内核配置参数,没有选项表示读内核配置参数,用户可以使用 sysctl -a 来读取所有的内核配置参数,对应更多的 sysctl 工具的信息,请参考手册页 sysctl(8)。

但是 proc 文件系统对 sysctl 不是必须的,在没有 proc 文件系统的情况下,仍然可以,这时需要使用内核提供的系统调用 sysctl 来实现对内核配置参数的设置和读取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值