android channel进程,深入理解Android系统第一弹

1. init进程

2. zygote进程

2.1 AndroidRuntime

2.2 ZygoteInit

3. system_server进程

3.1 init1阶段

3.2 init2阶段

接着Linux启动部分 http://blog.csdn.net/qianjin0703/article/details/6881107

1. init进程

uid-21074389-id-3482308.html

系统在内核空间初始化进程,内存,文件系统,驱动模块之后,调用init_post()函数,开启第一个用户进程init,进入用户空间。

/kernel/init/main.c (仅截取部分重要代码)

static noinline int init_post(void)

{

run_init_process("/sbin/init");

run_init_process("/etc/init");

run_init_process("/bin/init");

run_init_process("/bin/sh");

}

static noinline int init_post(void)

{

run_init_process("/sbin/init");

run_init_process("/etc/init");

run_init_process("/bin/init");

run_init_process("/bin/sh");

}

终端下查看1号进程,

uid-21074389-id-3482308.html

可见,init是系统守护进程和zygote的父进程。

/system/core/init/init.c

int main(int argc, char **argv)

{

mkdir("/dev", 0755);

mkdir("/proc", 0755);

mkdir("/sys", 0755);

mount("devpts", "/dev/pts", "devpts", 0, NULL);

mount("proc", "/proc", "proc", 0, NULL);

mount("sysfs", "/sys", "sysfs", 0, NULL);

open_devnull_stdio();

klog_init();

property_init();

get_hardware_name(hardware, &revision);

process_kernel_cmdline();

init_parse_config_file("/init.rc");

action_for_each_trigger("early-init", action_add_queue_tail);

queue_builtin_action(wait_for_coldboot_done_action, "wait_for_coldboot_done");

queue_builtin_action(keychord_init_action, "keychord_init");

queue_builtin_action(console_init_action, "console_init");

action_for_each_trigger("init", action_add_queue_tail);

for(;;) {

execute_one_command();

restart_processes();

nr = poll(ufds, fd_count, timeout);

for (i = 0; i

if (ufds[i].revents == POLLIN) {

if (ufds[i].fd == get_property_set_fd())

handle_property_set_fd();

else if (ufds[i].fd == get_keychord_fd())

handle_keychord();

else if (ufds[i].fd == get_signal_fd())

handle_signal();

}

}

}

return 0;

}

int main(int argc, char **argv)

{

mkdir("/dev", 0755);

mkdir("/proc", 0755);

mkdir("/sys", 0755);

mount("devpts", "/dev/pts", "devpts", 0, NULL);

mount("proc", "/proc", "proc", 0, NULL);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值