init运行过程

一。init

init是内核启动后运行的第一个应用程序,主要工作就是完成对一系列操作系统启动时就需要运行的应用程序的调用。

init的源码在SysVinit包中,可以从http://freshmeat.net/projects/sysvinit/获得更多信息。当然在Linux世界里,还有其它类型的init,例如busybox等。我们这里介绍的init是以sysvinit-2.86.tar.gz为对象,可以从ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/获得。

二。init的发展

在使用init过程中,人们发现由于init执行启动文件都是异步串行的,导致了启动时间过长,于是出现了基于依赖关系的方案initng和基于事件的方案upstart,后者更被目前流行的发布包Ubuntu所使用。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,init.c一般用于程序的初始化操作。init.c中的过程调用可以分为两种情况: 1. 全局变量初始化 在init.c中,我们可以定义全局变量,并对其进行初始化。在程序启动时,这些全局变量会被自动初始化,对应的初始化函数会被调用。这些初始化函数的调用顺序是按照它们在init.c中的定义顺序执行的。 例如,以下代码定义了两个全局变量,分别为a和b,并对它们进行初始化: ```c int a = 10; static int b = 20; ``` 在程序启动时,会自动调用对应的初始化函数。这里的初始化函数可以理解为是这两个变量的构造函数,用于初始化变量的值。在这个例子中,a和b的构造函数分别为__do_global_ctors_aux和__do_global_dtors_aux,它们会在程序启动时被调用。 2. 自定义的初始化操作 我们也可以在init.c中自定义一些初始化操作,例如初始化硬件设备、读取配置文件等。这些初始化操作可以通过在init.c中定义函数来实现,然后在main函数之前调用。 例如,以下代码定义了一个自定义的初始化函数init_device,用于初始化硬件设备: ```c void init_device(void) { // 初始化硬件设备 } // 在main函数之前调用init_device函数 __attribute__((constructor)) void init(void) { init_device(); } ``` 在这个例子中,我们使用了__attribute__((constructor))来告诉编译器,在main函数之前调用init函数。在init函数中,我们调用了自定义的初始化函数init_device来初始化硬件设备。 总之,在init.c中的函数调用都是在程序启动时执行的,用于对全局变量和程序进行初始化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值