感谢支持
我们一直在努力

Linux系统启动的标准步骤及流程

  对于系统装载过程我们暂时不做介绍,我们假设内核已经被载入内存并且已经完成了异常表、中断表、调度程序、时钟、控制台、内存等初始化,最后进行进程管理器的初始化,从此内核可以开始使用真正的进程了。

  初始化完成后,内核创建第一个进程(初始进程),该进程作为系统的第0号进程,在进程描述符表中由task[0]或INIT_TASK表示。该进程进而再创建了一个进程去执行init()函数进行第二阶段的初始化操作,而初始进程(INIT_TASK)本身则去执行idle循环,可见初始进程在内核初始化后唯一的作用就是去使用空闲的CPU时间。

  第二阶段的初始化工作要比前一阶段轻松一点,因为现在是由一个真正进程完成它们的,而前一阶段都是由“硬件进程”手工去做的。该阶段,这个由INI_TASK创建的新进程需要初始化总线、网络并启动系统中的各种系统内核后台线程,然后再初始化外设、设置文件格式,在这之后,它要为进入系统做最后的准备——初始化文件系统,安装根文件,打开/dev/console设备,重定向stdin、stdout和stderr到控制台,然后搜索文件系统中的init程序,并使用 execve()系统调用加载执行init程序。系统自此进入了用户态。

  init程序接着将依照initab配置文件中的选项依次执行:  1 确定运行级别(1-6)

  2 运行rc.sysinit脚本中的的系统服务,如激活交换分区,检查磁盘,加载硬件模块等

  3 运行规定级别下的服务:/etc/rc.d/rc*.d/下的S打头的服务,如网络服务S*NETWORK。

  4 在指定串口上运行getty程序,getty打开终端线,并设置模式,然后运行login程序。如果用户帐号和密码正确(需要通过/etc/passwd验证),则进入用户的工作目录,并按照其工作目录中的设置执行相应的shell。

  到这里用户才可以真正实用操作系统了。

  Idle进程是个奇怪的进程,它是在没有别的任务使用CPU时是才使用CPU的,它的存在价值据说可以延长CPU寿命。

  内核后台线程是种执行在内核态的进程,它们和用户进程一样受调度程序调度,系统利用它们周期性(不一定固定周期)地执行一些自身管理方面的“家务事”。主要的几种内核线程为:bdflush——清理被写过的内存缓冲区;kupdate——按时将内存缓冲区中的信息更新到磁盘中; Kswapd——将内存页交换到磁盘;keventd——关系系统事件;Ksoftirq——执行软件中断。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux系统启动的标准步骤及流程
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏