深入理解网络技术内幕 阅读笔记(二)

来源:互联网 发布:excel数据四舍五入取整 编辑:程序博客网 时间:2024/06/05 19:12

第三章 用户空间与内核的接口

内核通过不同的接口把内部信息输出到用户空间。除了程序员用于请求特定信息的系统调用(system call)外,还有三个特殊接口,而其中两个是虚拟文件系统:
        procfs(/proc文件系统)
                这是一个虚拟文件系统,通常是挂在/proc允许内核以文件的形式向用户空间输出内部信息。这些文件没有实际存在于磁盘中,但是可以通过cat 或 more 以及>shell重定向字符予以输入。
        sysctl(/proc/sys目录)
                此接口允许用户空间读取或修改变量的值。从用户空间,可以有两种方式访问sysctl输出的变量,一种是sysctl系统调用,而另一种是procfs。
        sysfs(/sys文件系统)
                sysfs以非常干净而有组织的方式输出很多信息。
此外,还有一下方式
        ioctl系统调用
                ioctl系统调用操作的对象是一个文件,通常是用于实现特殊设备所需但标准文件系统没有提供的操作。也可以把socket系统调用返回的套接字描述符传给ioctl而这也是网络代码使用ioctl的方式。
        Netlink套接字
                这是网络应用程序与内核通信时最新的首选机制。
procfs与sysctl都输出内核的内部信息,但是procfs主要是输出只读数据,而大多数sysctl信息都是可以写入的,但只有root能写入。
procfs
        大多数网络功能在初始化时都会在/proc中注册一个或多个文件。当一位用户读取该文件时,会引起内核间接运行一组内核函数,以返回某种输出内容。网络代码所注册的文件位于/proc/net。
        proc中的目录可以有proc_mkdir创建,/proc/net中的文件可以使用proc_net_fops_create和proc_net_remove予以注册和除名。
sysctl:目录/proc/sys
        用户在/proc/sys下看到的一个文件,实际上是一个内核变量。

0 0
原创粉丝点击