Android init进程解析

本文主要探讨了Android 2.3版本的init进程,详细解析了init进程的运行过程,包括分析和执行init.rc配置文件,动作列表和服务列表的管理,设备节点文件的创建,以及进程的终止和重启机制。此外,还介绍了init进程中的属性服务功能。
摘要由CSDN通过智能技术生成

使用的版本:Android 2.3

Linux中的所有进程都是由init进程创建并运行的,Android中也存在init进程,首先Android内核启动,然后在用户空间中启动init进程,再依次启动系统运行所需的其他进程。
init进程是守护进程,用来监视其他进程,当某个进程终结后,变成僵尸进程(Zombie process),僵尸进程会占据进程列表中的位置,这时init进程就负责回收僵尸进程,Android平台中,Init进程除了负责回收僵尸进程外,还提供几种额外的功能。

·init进程运行过程

start_kernet() => init_post() =>run_initprocess() =>运行init进程

·init进程四大功能

1.分析及运行init.rc文件
2.生成设备驱动节点
3.处理子进程终止
4.属性服务

1.分析及运行init.rc文件

init.rc文件在system/core/rootdir目录下。
init.rc启动脚本是Android启动时,用来设置系统环境的脚本文件。action list与service list相关的内容是由init进程根据init.rc文件生成的。下面是init.rc文件的大致结构。

on early-init
    start ueventd

on init

sysclktz 0

loglevel 3

# setup the global environment
    export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
    export LD_LIBRARY_PATH /vendor/lib:/system/lib
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /mnt/sdcard
    export ASEC_MOUNTPOINT /mnt/asec
    export LOOP_MOUNTPOINT /mnt/obb
......
on boot
# basic network init
    ifup lo
    hostname localhost
    domainname localdomain
......
<pre name="code" class="plain">on property:ro.secure=0
    start console

# adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
    disabled

# adbd on at boot in emulator
on property:ro.kernel.qemu=1
    start adbd

on property:persist.service.adb.enable=1
    start adbd

on property:persist.service.adb.enable=0
    stop adbd

......
 
 
service servicemanager /system/bin/servicemanager
    user system
    critical
    onrestart restart zygote
    onrestart restart media

service vold /system/bin/vold
    socket vold stream 0660 root mount
    ioprio be 2

service netd /system/bin/netd
    socket netd stream 0660 root system

service debuggerd /system/bin/debuggerd

service ril-daemon /system/bin/rild
    socket rild stream 660 root radio
    socket rild-debug stream 660 radio system
    user root
    group radio cache inet misc audio sdcard_rw
......
init.rc文件分为两部分,一部分是以"on"关键字开头的动作列表(Action list),一部分是以"service"关键字开头的服务列表(Service list)。

1.1 动作列表

动作列表有三个段落,on init ,on boot ,on property段落。on init段落主要设置环境变量,生成系统运行所需的文件或目录,修改相应的权限,并挂载与系统运行相关的目录。环境变量设置主要设置运行根文件系统命令的目录以及程序编译时需要的库目录,根文件的挂载主要是/system和/data两个目录,挂载完毕后Android的根文件系统就准备好了。on boot段落主要用于设置应用程序终止条件,应用程序驱动目录及文件权限等。on property段落中,记录属性值改变时执行的命令,在默认的init.rc初始化脚本中,还记录adbd服务启动、终止的条件。Android平台中的共享属性存储区域中的值,只能通过通知init进程,由init进程负责改变&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值