Linux内核启动流程详解:从bootsect.s到main.c的执行关键步骤
版权申诉
42 浏览量
更新于2024-07-02
收藏 1.85MB DOC 举报
本文档深入探讨了Linux内核的执行流程,主要分为两个阶段:从BIOS引导到main.c函数的启动过程以及从main.c开始到系统准备完毕的进程初始化。
第一阶段,从开机到main.c(内核版本0.11):
1. 启动BIOS,它负责设置实模式下的中断向量表(IVT)和中断服务程序,确保硬件中断可以正确传递到操作系统。
2. 通过BIOS中断(如0x19h)从启动设备(通常是硬盘)加载bootsect.s到内存0x07c00,然后执行此代码。接着,bootsect.s将自身复制到0x90000处,并加载setup.s到0x90200。
3. bootsect.s继续执行,将后续的硬盘扇区加载到内存0x10000~0x2EFFF,期间通过BIOS的中断服务程序获取内核运行所需的系统数据,并替换bootsect.s的代码。
4. 在执行setup.s时,中断被关闭,系统代码复制到内存的0x00000区域,覆盖原中断向量表和BIOS数据,同时创建新的地址映射结构(页目录和页表)以支持32位保护模式。
5. head.s(约25KB)被执行,划分出内存用于不同的用途,如页目录、页表、软盘缓冲区、中断描述符表和全局描述符表等。
第二阶段,从main.c函数开始到系统准备完毕:
1. 在main.c中,进程0(通常是第一个用户空间进程)被创建,其初始化包括根设备和硬盘参数的复制(102、110、111行),以及物理内存的规划和配置,确保进程能够在保护模式下进行高效运算。
2. 随着进程的初始化,系统会继续执行其他关键任务,如设备驱动加载、内存管理、文件系统挂载、初始化进程调度机制等,直至完成系统的基本准备,为用户空间操作提供支持。
文档详细地介绍了Linux内核启动初期的硬件交互、内存布局调整以及核心功能的初始化过程,这些都是理解操作系统底层工作原理的重要组成部分。通过这些步骤,Linux能够逐步建立起一个稳定且功能丰富的运行环境。
2022-01-10 上传
2021-09-06 上传
2021-09-05 上传
2022-05-30 上传
2022-03-07 上传
2022-03-07 上传
2021-11-27 上传
2021-09-26 上传
智慧安全方案
- 粉丝: 3789
- 资源: 59万+
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南