Linux内核执行流程解析:从实模式到保护模式
版权申诉
91 浏览量
更新于2024-07-20
收藏 1.82MB DOC 举报
"简析linux内核的内核执行流程"
Linux内核的执行流程是操作系统启动的核心部分,它从硬件初始化开始,逐步进入用户空间提供服务。本文主要基于Linux内核版本0.11,详细解析其从开机到main.c执行的整个过程。
首先,计算机启动时,BIOS(基本输入输出系统)接管硬件,完成自检(POST)并准备实模式下的中断向量表和中断服务程序。中断向量表位于内存的0x00000到0x003FF,包含每个中断处理程序的地址。接下来,BIOS会从启动设备(通常是硬盘)加载操作系统引导扇区(bootsect.s)到内存的0x07c00处。
bootsect.s加载后,它的任务是将自身复制到内存的0x90000位置,然后加载setup.s到0x90200。setup.s负责加载剩余的内核扇区到内存,并获取系统配置信息。在此过程中,bootsect.s的代码被覆盖,只保留2字节的空间。
为了扩展内存寻址能力,setup.s会开启地址线A20,使得处理器能够访问4GB的内存空间。同时,它会重新配置8259中断控制器,以适应保护模式下的中断处理。接着,执行head.s,这个阶段会设置页目录和页表,为内存管理的分页机制打下基础,同时创建中断描述符表和全局描述符表,这两个表格是保护模式下访问内存和处理中断的关键。
进入第二阶段,main.c开始执行。这是内核初始化的重要步骤,主要包括:
1. 创建进程0:这是系统中的第一个进程,它负责后续所有进程的管理和调度。
2. 复制根设备和硬盘参数表:这些信息用于驱动设备和读取文件系统。
3. 物理内存规划:main.c会根据内核的需求分配内存区域,例如,为内核模块、页缓存等预留空间。
4. 初始化必要的系统数据结构:如进程表、文件系统信息等。
5. 启动设备驱动程序:使系统能够与硬件交互,如键盘、显示器、硬盘等。
6. 设置系统调用表:定义用户空间可以调用的系统服务接口。
7. 最后,通过switch_to()函数,从内核模式切换到用户模式,准备执行用户空间的第一个进程(通常是init进程),至此,系统准备完毕,可以开始执行用户程序。
这个过程展示了Linux内核从硬件层面到软件层面的逐步构建,体现了操作系统的启动逻辑和内存管理策略。理解这一过程对于深入学习Linux内核以及系统级编程至关重要。
2021-09-06 上传
2022-02-16 上传
2024-10-15 上传
2024-10-15 上传
2024-10-15 上传
2024-10-15 上传
安全方案
- 粉丝: 2179
- 资源: 3883
最新资源
- 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开发教程:全面学习资源指南