一直说,要写一篇关于Binder的详解,今天终于发福利了~
说到Binder,真的是头大,因为它涉及到的知识点实在是太多,所以在这里,我不准备总结太底层的东西,原因嘛,就是因为我也还没搞清楚,哈哈~~;
好了,言归正传,要想了解Binder,首先得了解一些Linux内核的基础知识:
1.Linux内核基础知识:
(1)用户空间/内核空间:
一切从简,用户空间指的是用户程序所运行的空间,内核空间是 Linux 内核的运行空间,为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。
(2)系统调用
Linux将用户空间和内核空间隔离是有其道理的,用户软件良莠不齐,要是它们乱搞把系统玩坏了怎么办?因此对于某些特权操作必须交给安全可靠的内核来执行。
但是虽然是隔离的,但是总有一些用户软件需要访问内核空间,比如应用程序访问文件,网络是很常见的事情,怎么办呢?
用户空间访问内核空间的唯一方式就是系统调用;通过这个统一入口接口,所有的资源访问都是在内核的控制下执行,以免导致对用户程序对系统资源的越权访问,从而保障了系统的安全和稳定。
(3)Binder驱动:
通过系统调用,用户空间可以访问内核空间,那么如果一个用户空间想与另外一个用户空间进行通信怎么办呢?很自然想到的是让操作系统内核添加支持;传统的 Linux 通信机制&#