深入解析Linux内核初始化过程
5星 · 超过95%的资源 需积分: 0 47 浏览量
更新于2024-07-31
8
收藏 1.4MB PDF 举报
"疯狂内核之——内核初始化"
在深入探讨Linux内核初始化的过程中,我们需要了解从硬件上电到操作系统完全启动的整个流程。本文主要分为五个部分,详细阐述了内核从创建到运行的各个关键阶段。
1. **引子**:
- **上电**:计算机电源开启后,硬件开始进行自检(POST),然后进入基本输入输出系统(BIOS)。
- **BIOS时代**:BIOS执行硬件初始化,并根据用户设置加载启动设备的引导程序。
- **内核引导程序**:引导程序负责加载内核映像到内存并准备执行,如GRUB或LILO。
2. **内核映像的形成**:
- **Makefile预备知识**:介绍了Makefile的书写规则、变量、条件判断、函数以及隐含规则和模式规则,这些都是构建内核的构建工具KBuild的基础。
- **KBuild体系**:讲解内核目标、主机程序和编译标志,以及如何通过Makefile进行递归编译、链接内核镜像(vmlinux)和制作可引导的bzImage。
3. **实模式下的内核代码**:
- **内核映像内存布局**:内核映像在内存中的分布,包括不同部分如引导扇区、初始化数据等。
- **header.S**:实模式下的汇编代码,包括无用的bootsect代码,初始化头变量,为C语言环境做准备。
- **main函数**:实模式下的主要入口点,涉及复制初始化头变量,初始化堆,CPU支持检查,BIOS模式设置,内存检测,键盘配置,系统环境表填充,IST信息设置和视频模式设置。
- **go_to_protected_mode**:转换到保护模式的关键函数,包括禁止中断,打开A20线,安装临时GDT,以及第一次启动保护模式。
4. **保护模式下的内核代码**:
- **32位x86保护模式**:内核解压缩前期工作,解压缩内核,第二次启动保护模式,首次启用分页管理和初始化0号进程。
- **向start_kernel进发**:涉及中断描述符表初始化,第三次启动保护模式,启动x86虚拟机。
5. **走向现代:start_kernel函数**:
- **初始化同步与互斥环境**:包括中断屏蔽,大内核锁,时钟通知链,激活第一个CPU,地址散列,打印版本信息。
- **setup_arch**:拷贝可用内存区信息,计算总页面数,建立永久内核页表,二次启动分页,构建内存管理架构,以及其他初始化工作。
- **设置每CPU环境**,初始化内存管理区列表,使用early_res分配内存,初始化虚拟文件系统,异常服务,内存管理,调度程序,中断处理系统,包括APIC中断,本地软时钟,软中断,定时器中断等。
- **后start_kernel时代**:创建1号进程,子系统初始化,启动shell环境等,完成内核初始化的最后步骤。
本文详细阐述了从硬件启动到Linux内核完全初始化的复杂过程,涵盖从低级的实模式转换到保护模式,再到内核的高级功能初始化,为理解Linux内核的工作原理提供了深入洞察。对于想要深入研究操作系统内核设计和实现的读者来说,这是一份非常有价值的参考资料。
2011-05-30 上传
2023-08-03 上传
2023-05-10 上传
2023-05-24 上传
2024-06-01 上传
2023-09-19 上传
2023-08-30 上传
yunsongice
- 粉丝: 1114
- 资源: 14
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦