内核空间与用户空间之间的接口

1. 内核空间与用户空间的相互作用

在android开发过程中,很多应用程序需要编写内核级和用户级的程序来一起完成某个任务,流程如下

(1)编写内核服务程序利用内核空间提供的权限和服务来接收,处理和缓存数据。

(2)编写用户程序与之前完成的内核服务程序交互。可以利用用户程序来配置内核服务的参数。

在andriod开发过程中,内核空间和用户空间联合完成的典型应用,Netfilter (内核服务程序:防火墙)VS IPtable(用户级程序:规则设置程序);IPSEC(内核服务程序:VPN协议部分)VS ike(用户级别程序:VPN密匙处理)

2.实现系统和硬件之间的交互

在linux平台下,5种方式实现硬件与系统的交互功能的方式

(1)编写自己的系统调用

系统调用是用户级程序访问内核的基本方法。linux 提供200多个标准的系统调用,include/asm-i386/unistd.h 和arch/i386/kernel/entry.s

(2)编写驱动程序

驱动程序运行在内核空间,用户空间的应用程序通过文件系统中/dev/目录下的一个文件来和它交互。

open()-read()-write()-ioctl()-close()

(3)使用PROC文件系统

proc用于监视,管理和调试系统,如PS和TOP等管理工具。

(4)使用虚拟文件系统(VFS)

#CAT/sagafa/log 获取日志信息

(5)使用内存映像

Linux通过内存映像机制来提供用户程序对内存直接访问的能力。内存映像就是把内存中特定部分的内存空间映射到用户级程序的内存空间去。

 

你可能感兴趣的:(移动开发)