目录
第1章 从开机加电到执行main函数之前的过程
1.1 启动BIOS,准备实模式下的中断向量表和中断服务程序
1.1.1 BIOS的启动原理
1.1.2 BIOS在内存中加载中断向量表和中断服务程序
1.2 加载操作系统内核程序并为保护模式做准备
1.2.1 加载第一部分代码—引导程序(bootsect)
1.2.2 加载第二部分代码—setup7
1.2.3 加载第三部分代码—system模块
1.3 开始向32位模式转变,为main函数的调用做准备
1.3.1 关中断并将system移动到内存地址起始位置0x00000
1.3.2 设置中断描述符表和全局描述符表
1.3.3 打开A20,实现32位寻址
1.3.4 为在保护模式下执行head.s做准备
1.3.5 head.s开始执行
1.4 本章小结
第2章 从main到怠速
2.1 开中断之前的准备工作
2.1.1 复制根设备号和硬盘参数表
2.1.2 物理内存规划格局
2.1.3 虚拟盘设置与初始化
2.1.4 内存管理结构mem_map初始化
2.1.5 异常处理类中断服务程序挂接
2.1.6 初始化块设备请求项结构
2.1.7 与建立人机交互界面相关的外设的中断服务程序挂接
2.1.8 开机启动时间设置
2.1.9 系统开始激活进程
2.1.10 进程相关事务初始化设置
2.1.11 时钟中断设置
2.1.12 系统调用服务程序挂接
2.1.13 初始化缓冲区管理结构
2.1.14 初始化硬盘
2.1.15 初始化软盘
2.1.16 开中断
2.2 进程创建的最基本动作
2.2.1 操作系统为进程0创建进程1做准备
2.2.2 在进程槽中为进程1 申请一个空闲位置并获取进程号
2.2.3 复制进程信息之前,先将一些数据压栈
2.2.4 初步设置进程1管理结构
2.2.5 进程0创建进程1的过程中发生时钟中断
2.2.6 从时钟中断返回
2.2.7 调整进程1管理结构
2.2.8 设置进程1的线性地址空间及物理页面
2.2.9 继续调整进程1管理结构
2.2.10 操作系统如何区分进程0和进程
2.2.11 进程0准备切换到进程
2.2.12 系统切换到进程1执行
2.3 加载根文件系统
2.3.1 进程1如何开始执行
2.3.2 进程1开始执行
2.3.3 进程1开始以数据块的形式操作硬盘
2.3.4 将找到的缓冲块与请求项挂接
2.3.5 将请求项与硬盘处理函数挂接
2.3.6 进行硬盘读盘前的准备工作
2.3.7 给硬盘下达读盘指令
2.3.8 进程1由于等待读盘操作挂起
2.3.9 系统切换到进程0执行
2.3.10 进程0的执行过程
2.3.11 进程0执行过程中发生硬盘中断
2.3.12 硬盘中断服务程序响应后,进程0继续执行
2.3.13 再次响应硬盘中断并唤醒进程
2.3.14 读盘操作完成后,进程1继续执行
2.3.15 进程1继续设置硬盘管理结构
2.3.16 进程1获取软盘超级块,为加载根文件系统做准备
2.3.17 进程1备份超级块数据
2.3.18 进程1将根文件系统从软盘拷贝到虚拟盘
2.3.19 进程1开始加载根文件系统
2.3.20 进程1准备加载根文件系统超级块
2.3.21 进程1加载根文件系统超级块
2.3.22 进程1继续加载根文件系统
2.3.23 进程1准备读取根目录i节点
2.3.24 进程1加载根目录i节点
2.3.25 进程1结束加载根文件系统的过程
2.4 打开终端设备文件及复制文件句柄
2.4.1 进程1与内核文件表挂接,为打开文件做准备
2.4.2 确定打开操作的起点
2.4.3 获得枝梢i节点—dev目录文件的i节点
2.4.4 确定dev目录文件i节点为枝梢i节点
2.4.5 继续返回枝梢i节点
2.4.6 查找tty0文件的i节点
2.4.7 将tty0设备文件的i节点返回给sys_open系统调用
2.4.8 分析tty0文件i节点
2.4.9 设置文件管理结构并返回给用户进程
2.4.10 进程1复制tty0文件句柄
2.4.11 进程1继续复制tty0文件句柄
2.5 创建进程
2.5.1 进程1准备创建进程
2.5.2 复制进程2管理结构并进行调整
2.5.3 设置进程2的页目录项并复制进程2的页表
2.5.4 调整进程2管理结构中与文件有关的内容
2.5.5 进程1执行过程中发生时钟中断
2.5.6 进程1从时钟中断返回,准备切换到进程
2.6 进程1等待进程2退出
2.6.1 进程1查找它自己的子进程
2.6.2 对进程2的状态进行处理
2.6.3 切换到进程2执行
2.7 shell程序的加载
2.7.1 进程2开始执行
2.7.2 为打开/etc/rc文件做准备
2.7.3 进程2打开“/etc/rc”配置文件
2.7.4 通过压栈为加载shell文件做准备
2.7.5 为参数和环境变量设置做准备
2.7.6 得到shell文件的i节点
2.7.7 为加载参数和环境变量做准备
2.7.8 根据i节点,对shell文件进行检测
2.7.9 检测shell文件头
2.7.10 备份文件头并进行分析
2.7.11 对shell文件进行进一步分析
2.7.12 拷贝参数和环境变量
2.7.13 调整进程2的管理结构
2.7.14 继续调整进程2管理结构
2.7.15 释放进程2继承的页面
2.7.16 检测协处理器
2.7.17 调整shell程序所在的线性空间地址
2.7.18 为shell程序准备参数和环境变量
2.7.19 继续调整进程2管理结构
2.7.20 调整EIP,使其指向shell程序入口地址
2.7.21 shell程序执行引发缺页中断
2.7.22 缺页中断中shell程序加载前的检测
2.7.23 为即将载入的内容申请页面
2.7.24 将shell程序载入新获得的页面
2.7.25 根据shell程序的情况,调整页面的内容
2.7.26 将线性地址空间与程序所在的物理页面对应
2.8 系统实现怠速
2.8.1 shell进程准备创建update进程
2.8.2 进程2开始执行/etc/rc文件
2.8.3 准备加载update进程
2.8.4 update进程的作用
2.8.5 shell程序检测“/etc/rc”文件
2.8.6 shell进程退出
2.8.7 shell进程退出善后处理
2.8.8 进程1清理shell进程管理结构
2.8.9 系统开始重建shell
2.8.10 shell进程为何不会再次退出
2.9 小结
第3章 安装文件系统
第4章 文件操作
第5章 用户进程与内存管理
第6章 多个进程“同时”操作一个文件
第7章 IPC问题
第8章 操作系统的设计指导思想
结束语
“新设计团队”简介
附录 搭建Linux 0.11系统环境
猜您喜欢
评论