对于系统装载过程我们暂时不做介绍,我们假设内核已经被载入内存并且已经完成了异常表、中断表、调度程序、时钟、控制台、内存等初始化,最后进行进程管理器的初始化,从此内核可以开始使用真正的进程了。
初始化完成后,内核创建第一个进程(初始进程),该进程作为系统的第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系统启动的标准步骤及流程
相关推荐
- ✅ SmokyHosts 黑色星期五促销 – 无限量服务器每月 29.97 美元起
- *即将在 DedicatedNodes.IO 上推出高性能 AMD EPYC 9274F RPC SOL 节点
- 以实惠的价格购买专用服务器 | DDoS 保护 | 德克萨斯州达拉斯 | 24X7 支持
- *Tier.Net 黑色星期五 11 月全月大促销!整个月专用服务器大减价!
- *Tier.Net 服务器促销!新款 Intel 和 AMD 到货!Turbo Provisioning!全天候实时支持!
- *★★ 四核 Xeon 特价促销!| 中西部专用服务器托管 | 美国印第安纳波利斯 ★★
- *✅ 离岸 VPS ✅ 离岸 Windows VPS ✅ 离岸 Linux VPS ✅ 离岸存储 VPS ✅
- *linveo.com – AMD Ryzen 9 起价 99 美元/月,Intel Xeon Gold 起价 120 美元/月,10gbit 网络