雾里看花2

Android里有很多 property,包括系统版本等,都是property。这个有点儿像环境变量。不同的是,环境变量不是全局的,比如,父进程的环境变量可以被子进程继承。但是一旦子进程创建之后,父子进程之间的环境变量就是独立的了。父进程对自己的环境变量的修改不会影响到子进程,反之亦然。

Android里的property却不是这样,它是全局的。系统中任意一个进程对property进行修改,都会被其他进程看到。系统的第一个进程,也就是init进程被创建的时候,就会打开/dev/ashmem,并对它映射到内存中,然后把其fd(file descriptor,文件描述符)以及ashmem的大小放到环境变量里。以后运行的每个程序,只要它是链接了bionic库(Andriod的C 库),在这个库初始化的时候,就会自动针对这个环境变量作property的初始化。

这无疑是一种很特别的IPC(Inter Process Communication,进程间通信)机制。

IPC有很多种,详情可以看已故的Richard Stevens写的UNIX Network Programming,Volume 2,这本书是专门讲IPC的。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: