对于系统装载过程我们暂时不做介绍,我们假设内核已经被载入内存并且已经完成了异常表、中断表、调度程序、时钟、控制台、内存等初始化,最后进行进程管理器的初始化,从此内核可以开始使用真正的进程了。
初始化完成后,内核创建第一个进程(初始进程),该进程作为系统的第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——执行软件中断。
Linux系统启动的标准步骤及流程
转载请注明出处:服务器评测 » Linux系统启动的标准步骤及流程
相关推荐
- *✅ 离岸专用服务器✅ 无限量专用服务器✅ 离岸流媒体服务器✅
- HC ★ AMD 专用服务器 ★ 1 Gbps – 100 Gbps 带宽
- *100G 无计量 AMD EPYC 服务器
- ♥ HPC 特价:EGI Hosting CA – 44 核 – 512GB RAM – 1Gbps 无限制 ♥ 8TB SSD ♥
- TMS 黑色星期五大促销!Zen4 大减价!9950X 和 14900K 降价!当天设置!
- 完全托管的 cPanel/DirectAdmin 服务器 – 亚洲|欧洲|美国
- *███ 双 E5-2660 / 64GB / 2x500GB SSD / 1Gbit 不限流量 – 49 美元 ███
- [ ⚡️ 转售专用服务器 ⚡️ ] 美国专用服务器,带 50% 定期经销商折扣