在android系统中,所有的进程是共享系统设置值,init进程创建了并初始化属性域,而后通过执行中的进程提供的api,访问属性域的设置值。
但是更改属性值只能在init进程中执行。当更改属性值的时候,要预先向init进程提交值变更申请,然后init进程处理该申请,并修改属性值。
那么,属性值的更改在init进程里面,其它进程是如何向init进程发出申请的呢?
通过socket。
/dev/socket/property_service,通过这个套接字接收其它进程的申请。这里不就是一对套接字吗?不是,这里是个单个的socket,通过create_socket建立的。
这样就创建了管道的一端。另外是怎么联系的呢?
on early-init
# Set init and its forked children's oom_adj.
write /proc/1/oom_adj -16
# set RLIMIT_NICE to allow priorities from 19 to -20
setrlimit 13 40 40
# Memory management. Basic kernel parameters, and allow the high
# level system server to be able to adjust the kernel OOM driver
# parameters to match how it is managing things.
write /proc/sys/vm/overcommit_memory 1
write /proc/sys/vm/min_free_order_shift 4
chown root system /sys/module/lowmemorykiller/parameters/adj
chmod 0664 /sys/module/lowmemorykiller/parameters/adj
chown root system /sys/module/lowmemorykiller/parameters/minfree
chmod 0664 /sys/module/lowmemorykiller/parameters/minfree
/proc/sys/vm/min_free_kbytes