+ -
当前位置:首页 → 问答吧 → 谁知道_initfunc()

谁知道_initfunc()

时间:2003-04-11

来源:互联网

我在读linux源代码时,在初始化部分,经常看到一些函数如setup_arch包含在一个_initfunc()的东西里面,谁知道这个_initfunc()是起什么作用的?多谢

作者: donhoff_h   发布时间: 2003-04-11

[init]
init是第一个进程,或者说内核线程

从boot一路过来,最早执行startup_32,从
start_kernel( )程序用于初始化系统内核的各个部分,包括:

*设置内存边界,调用paging_init( )初始化内存页面。
*初始化陷阱,中断通道和调度。
*对命令行进行语法分析。
*初始化设备驱动程序和磁盘缓冲区。
*校对延迟循环。

最后的function'rest_init' 作了以下工作:

·开辟内核线程'init'
·调用unlock_kernel
·建立内核运行的cpu_idle环, 如果没有调度,就一直死循环

实际上start_kernel永远不能终止.它会无穷地循环执行cpu_idle.

最后,系统核心转向move_to_user_mode( ),以便创建初始化进程(init )。此后,进程0开始进入无限循环。

初始化进程开始执行/etc/init、/bin/init 或/sbin /init中的一个之后,系统内核就不再对程序进行直接控制了。之后系统内核的作用主要是给进程提供系统调用,以及提供异步中断事件的处理。多任务机制已经建立起来,并开始处理多个用户的登录和fork( )创建的进程。

建议看看bootsect.s分析这个帖子

作者: yoytdt   发布时间: 2003-04-16