理论教育 Linux操作系统启动运行过程

Linux操作系统启动运行过程

时间:2023-11-25 理论教育 版权反馈
【摘要】:init 进程在Linux 操作系统中是一个具有特殊意义的进程, 它是由内核启动并运行的第一个用户进程, 由内核进程装载硬盘上的用户可执行文件而形成,它运行在用户态, 然后逐步分化出更多的用户子进程, 其中也包括等待用户登录、 接收用户请求的用户接口进程。图5.14Linux 启动过程进程分化及进程关系示意图

Linux操作系统启动运行过程

操作系统本质上是运行在硬件上的系统级软件, 当计算机加电后, 主板芯片里的基本输入/输出程序开始了星星之火的燎原之势, 触发了引导程序进入内存执行, 继而引导程序再把硬盘中的操作系统程序引导装入内存。 程序代码在内存中有序执行起来, 计算机系统的核心功能逐步初始化, 内核稳定执行后, 系统提供给用户一个命令控制台或图形界面接口, 开始准备接受用户的工作请求, 如文档编辑、 QQ 聊天通信等, 这些应用程序随着用户请求被系统响应, 开始进入内存并发执行。

我们知道数据常以文件形式存储在外存, 而进入内存执行的主要是源代码编译而成的指令集合文件——可执行程序。 现代操作系统为了描述这些进入内存执行的程序, 引入了进程的概念, 简单来说进程就是程序在内存的一次执行, 而管理和控制进程的信息就形成了标志进程存在的重要数据结构——进程控制块。 所以关于用户程序的执行, 严谨的说法应该是, 随着用户应用程序提出执行请求, 产生了如Word 进程、 QQ 进程等多道进程在内存中并发执行。

如果从Linux 系统源码分析角度看, 操作系统内核经历关键的一些.s(汇编程序)和.c程序启动后, 内存中会产生诸多操作系统内核进程, 它们分别负责内存管理、 处理机管理、 设备管理、 文件管理等底层工作。 而当内核程序稳定执行起来后, 会开始执行用户进程的祖先——init。 init 进程在Linux 操作系统中是一个具有特殊意义的进程, 它是由内核启动并运行的第一个用户进程, 由内核进程装载硬盘上的用户可执行文件而形成,它运行在用户态, 然后逐步分化出更多的用户子进程, 其中也包括等待用户登录、 接收用户请求的用户接口进程。 系统启动过程进程的分化过程如图5.14 所示, 从观察进程的角度, 也能看到这样的进程关系。

图中可以看到0 号进程分化出了1 号用户祖先进程和2 号内核祖先进程, 中括号标志的进程都是内核级的。 还能够看到接收用户命令的Shell 命令, 接口程序/bin/bash 就是1 号用户进程启动的子进程。(www.daowen.com)

下面我们并不深入学习操作系统内核级程序, 而是在侧重应用编程的角度上, 认识用户级进程从产生到结束消亡的整个生命期, 学习进程如何产生、 并发执行、 处理同步和通信问题, 同时在内存管理上也展开分析学习。

图5.14 Linux 启动过程进程分化及进程关系示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈