《linux 内核完全剖析》 chapter 7 初始化程序
2014-04-27 18:38
260 查看
初始化程序
7.1 main.c 程序
图中,高速缓存的部分还要扣除显存和ROM BIOS占用的部分。告诉缓冲区是用于磁盘等块设备临时存放数据的地方,以1K字节为一个数据单位。
init().函数的功能可分为四个部分
安装根文件系统
显示系统信息
运行系统初始资源配置文件rc中的命令
执行用户登录程序shell程序
要注意的是,由于创建新进程的过程通过完全复制父进程代码段和数据段的方式实现。因此在首次使用fork()创建新进程init时,为了确保新进程用户态栈中没有进程0的多余信息,要求进程0在创建第一个新进程(进程1)之前不要使用其用户态栈,即要求任务0不要调用函数。(个人理解,之前的变量全都放寄存器上面了,不需要经过栈).因此在main.c主程序移动到任务0执行后,任务0中的代码fork()不能以函数形式进行调用。程序中实现的方法是采用内联函数的形式实现的。
7.1.3 CMOS信息
CMOS的地址空间在基本地址空间之外,因此其中不包括可执行代码。
2.fork()是一个syscall。除此之外,对于fork所有的了解可以去复习看APUE。那样更爽,《注释》说的很简略。
7.2环境初始化工作
init进程的主要任务是根据/etc/rc文件中设置的信息,执行其中设置的命令,然后根据/etc/inittab文件中的信息,为每一个允许登录的终端设备使用fork()创建一个子进程,并在每个新创建的子进程中运行agetty程序。
在正常操作下,init确定agetty在工作着以允许用户登录,并且收取zombie。当系统关闭时,init负责杀死所有其他进程,卸载所有文件系统以及停止处理器的工作,以及任何它被配置成要做的工作。
getty程序主要任务是设置终端类型,属性,速度和线路规程。
login程序主要用于要求登录用户输入密码。
马上就要开始第八章的“洗礼”了 chapter 8 is coming
相关文章推荐
- [Linux内核完全剖析]第七章 初始化程序(init)总结
- 《linux 内核完全剖析》 chapter 4 80x86 保护模式极其编程
- 《linux 内核完全剖析》 chapter 5 Linux内核体系结构
- Linux0.11内核剖析--初始化程序(init)
- 《linux 内核完全剖析》 chapter 8 内核代码
- 赵炯<<Linux 0.11内核完全剖析>>P30 MBR程序调试
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.8 保护模式编程初始化
- 《linux 内核完全剖析》chapter 13 内存管理 (不含swap.c)
- 《linux 内核完全剖析》 chapter 2 微型计算机组成结构
- [Linux内核完全剖析]第六章 引导启动程序(boot)总结
- 《linux 内核完全剖析》 chapter 3 内核编程语言和环境
- 《linux 内核完全剖析》sched.c sched.h 代码分析笔记
- [Linux内核完全剖析]第五章Linux内核体系结构5.1-5.3总结 Linux内存空间分配
- 《linux 内核完全剖析》 sys.c 代码分析
- Linux内核之内存管理完全剖析
- 《linux 内核完全剖析》编译linux 0.12 内核 Ubuntu 64bits 环境
- linux0.11内核完全剖析 - 块设备驱动程序
- 【Linux 内核网络协议栈源码剖析】系统网络协议栈初始化及数据传输通道建立过程
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.3 分段机制
- 【Linux 内核网络协议栈源码剖析】系统网络协议栈初始化及数据传输通道建立过程