"深入解析Linux内核的启动及执行流程,从bootsect.s到main.c,主要涉及内核0.11版本的启动过程。" 在Linux操作系统启动时,其内核执行流程分为多个阶段,首先从BIOS启动,然后加载各种程序到内存,最后进入32位保护模式执行main函数。以下是对这一过程的详细分析: 1. **启动阶段**: - **BIOS初始化**:计算机加电后,BIOS开始运行,它负责初始化硬件,设置中断向量表(位于内存0x00000到0x003FF),并准备中断服务程序。 - **加载引导扇区**:通过BIOS中断0x19h,将硬盘上的第一个扇区(bootsect.s)加载到内存0x07c00位置,然后跳转执行。 2. **实模式到保护模式转换**: - **bootsect.s**:执行后,bootsect.s将自身复制到0x90000处,接着加载setup.s到0x90200。 - **setup.s**:此阶段会加载余下的内核扇区到0x10000~0x2EFFF,获取系统数据,关闭中断,将内核代码复制到0x00000,覆盖中断向量表和BIOS数据。同时,启用A20地址线,扩展内存访问,并重编程8259中断控制器。 3. **保护模式的建立**: - **head.s**:执行head.s,设置页目录和页表,初始化中断描述符表(IDT)和全局描述符表(GDT)。这部分内存布局如下: - 0x00000~0x04FFF:页目录和4个页表 - 0x05000~0x05400:软盘缓冲区 - 0x054b9~0x05cb8:IDT - 0x05cb9~0x064b8:GDT - 0x064b9之后:main函数的代码 4. **main.c的执行**: - **创建进程0**:在main.c中,系统开始创建进程0,并配置内存布局,包括根设备和硬盘参数的复制,以及32位保护模式下的计算能力。 - **内存规划**:main.c中定义了物理内存的使用格局,如页表、中断处理和用户空间分配等。 5. **系统准备完毕**: - **初始化进程管理**:建立进程调度机制,初始化系统调用表,设置信号处理等。 - **加载驱动程序**:加载必要的驱动程序,如块设备驱动、网络驱动等,以便于硬件操作。 - **启动用户态**:一旦内核初始化完成,它会跳转到用户空间,执行第一个用户进程,通常是init进程,至此,系统准备完毕。 这个过程展示了Linux内核从启动到运行用户进程的基本步骤,涉及硬件初始化、内存管理、中断处理、保护模式的建立等多个核心概念。了解这些细节有助于深入理解Linux系统的运作机制。
![](https://csdnimg.cn/release/download_crawler_static/75162998/bg4.jpg)
剩余16页未读,继续阅读
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 7万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)