文档详情

init进程1.docx

发布:2017-08-08约3.36万字共22页下载文档
文本预览下载声明
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
显示全部
相似文档