Linux内核启动流程详解:从bootsect.s到main.c的执行关键步骤
版权申诉
78 浏览量
更新于2024-07-06
收藏 55KB DOCX 举报
本文档深入探讨了Linux内核的启动执行流程,主要分为两个阶段:第一阶段从BIOS引导到main.c函数的加载和初始化,第二阶段是从main.c函数执行到系统完全准备就绪。以下是每个阶段的详细分析:
**第一阶段:从BIOS引导到main.c执行**
1. **BIOS引导和中断向量表设置**:
- 启动时,BIOS负责设置实模式下的中断向量表和中断服务程序,这些信息存储在0x00000到0x003FF处,包括BIOS数据区。
- 利用BIOS中断0x19h加载bootsect.s代码至内存0x07c00,然后转到该地址执行。
- bootsect.s的功能包括将自身复制到0x90000,以及加载setup.s到0x90200。
2. **内存管理和加载setup.s**:
- 内存布局中,bootsect.s被覆盖,仅留下少量空间。
- 将系统代码复制到0x00000,覆盖中断向量表和BIOS数据,同时创建新的页目录和页表以扩展寻址空间到4GB。
3. **中断服务程序与硬件配置**:
- 开启地址线A20,启用更大的内存寻址范围,并对8259中断控制器进行重新编程,调整中断号。
4. **head.s的执行**:
- head.s负责初始化内存的不同部分,如页目录、页表、软盘缓冲区、中断描述符表和全局描述符表,为后续操作做好准备。
**第二阶段:main.c函数后的进程管理与系统初始化**
1. **进程0的创建与保护模式支持**:
- 在main.c中,通过一系列操作创建进程0,并确保其能够在32位保护模式下运行,这涉及到硬件和内存管理的协调。
2. **物理内存规划**:
- 根设备和硬盘参数表被复制到内存,这是系统设备驱动程序的基础。
- main.c的102、110、111行代码可能涉及内存分配、设备注册等关键步骤。
3. **系统初始化与设备驱动**:
- 此阶段包括初始化操作系统核心组件,如内存管理、进程调度、文件系统等,以便为用户提供一个稳定的操作环境。
总结,Linux内核的启动流程复杂且有序,涉及到BIOS交互、内存管理、中断处理、系统分区和设备驱动等多个方面。理解这个过程对于深入研究Linux内核工作原理至关重要,尤其是在底层开发和优化性能时。
2021-12-16 上传
2024-09-05 上传
2021-11-08 上传
2023-09-27 上传
2019-07-03 上传
2021-12-16 上传
2021-10-26 上传
2024-06-12 上传
2021-11-17 上传
cailibin
- 粉丝: 4
- 资源: 7001
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性