- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
init进程1
init进程1init启动过程init启动过程众所周知,Linux中的所有进程都是有init进程创建并运行的。首先Linux内核启动,然后在用户空间中启动init进程,再启动其他系统进程。在系统启动完成完成后,init将变为守护进程监视系统其他进程。Android是基于Linux的操作系统,所以init也是Android系统中用户空间的第一个进程,它的进程号是1。下面先简单的看一下init进程的启动过程。@/kernel/goodfish/init/main.c[cpp]view plaincopyprint?static?int?__init?kernel_init(void?*?unused)??{??????/*??????*?Wait?until?kthreadd?is?all?set-up.??????*/??????wait_for_completion(kthreadd_done);??????/*??????*?init?can?allocate?pages?on?any?node??????*/??????set_mems_allowed(node_states[N_HIGH_MEMORY]);??????/*??????*?init?can?run?on?any?cpu.??????*/??????set_cpus_allowed_ptr(current,?cpu_all_mask);????????cad_pid?=?task_pid(current);????????smp_prepare_cpus(setup_max_cpus);????????do_pre_smp_initcalls();??????lockup_detector_init();????????smp_init();??????sched_init_smp();????????do_basic_setup();????????/*?Open?the?/dev/console?on?the?rootfs,?this?should?never?fail?*/??????if?(sys_open((const?char?__user?*)?/dev/console,?O_RDWR,?0)??0)??????????printk(KERN_WARNING?Warning:?unable?to?open?an?initial?console.\n);????????(void)?sys_dup(0);??????(void)?sys_dup(0);??????/*??????*?check?if?there?is?an?early?userspace?init.??If?yes,?let?it?do?all??????*?the?work??????*/????????if?(!ramdisk_execute_command)??????????ramdisk_execute_command?=?/init;????????if?(sys_access((const?char?__user?*)?ramdisk_execute_command,?0)?!=?0)?{??????????ramdisk_execute_command?=?NULL;??????????prepare_namespace();??????}????????/*??????*?Ok,?we?have?completed?the?initial?bootup,?and??????*?were?essentially?up?and?running.?Get?rid?of?the??????*?initmem?segments?and?start?the?user-mode?stuff..??????*/????????init_post();??????return?0;??}??static int __init kernel_init(void * unused){/* * Wait until kthreadd is all set-up. */wait_for_completion(kthreadd_done);/* * init can allocate pages on any node */set_mems_allowed(node_states[N_HIGH_MEMORY]);/* * init can run on any cpu. */set_cpus_allowed_ptr(current, cpu_all_mask);cad_pid = task_pid(current);smp_prepare_cpus(setup_max_cpus);do_p
文档评论(0)