Linux内核启动解析:从实模式到保护模式
需积分: 15 72 浏览量
更新于2024-08-23
收藏 1.37MB PPT 举报
"Linux内核源代码导读-陈香兰-基于x86的Linux 2.6.26的启动"
这篇文档是关于Linux内核源代码的解读,特别关注了在x86架构上的Linux 2.6.26版本的启动过程。作者是中国科学技术大学计算机系的陈香兰教授,她详细讲解了从BIOS启动到内核加载的关键步骤和技术。
首先,Linux内核的启动过程始于一个名为`bzImage`的编译产物,它包含了`Setup.bin`和`vmlinux.bin`两部分,具备自解压能力。`Setup.bin`和`misc.o`、`piggy.o`等组件一起构建了启动流程的初始阶段,而`vmlinux`则包含了内核的主体部分,如`Head-y`、`init-y`和`main`。
计算机启动通常由BIOS(基本输入输出系统)引导,可以是通过软盘或硬盘启动。在x86平台上,常见的启动加载器有GRUB和LILO。启动协议定义了如何从这些启动媒介过渡到内核加载。在这一过程中,BIOS会将控制权交给位于0x07c0地址处的引导扇区。这个扇区通常包含一段简单的代码,负责加载更复杂的引导程序。
实模式是x86处理器的一种工作模式,它是为兼容早期8086处理器而设计的。在这种模式下,地址总线为20位,可访问的内存空间限制在1MB以内。地址计算基于段地址和段内偏移,每个段寄存器(如CS、DS、ES、FS、GS)与16位的段地址关联,通过左移4位来扩大寻址范围。
保护模式是现代x86处理器的主要工作模式,它提供了更高级的安全性和内存管理功能。在这个模式下,地址总线扩展至32位,允许访问4GB的内存。段寄存器现在作为段选择子,它们与全局描述符表(GDT)配合工作,GDT由GDTR寄存器指示其位置和长度。此外,还有中断描述符表(IDT),用于处理中断和异常。
在进入保护模式后,系统需要加载GDT和IDT,并重新初始化段寄存器。CS通常通过长跳转指令来设置,其他数据段寄存器则直接设置。控制寄存器(如CR0、CR3等)也在此阶段被用来启用分页机制和其他特性。
这个文档深入探讨了x86架构下Linux内核启动的底层细节,涵盖了从实模式到保护模式的转变,以及分页、GDT、IDT等核心概念,对于理解Linux内核的启动流程和x86体系结构具有极高的价值。
2024-11-10 上传
2024-11-10 上传
三里屯一级杠精
- 粉丝: 35
- 资源: 2万+
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析