Linux内核基础入门:菜鸟学习与初始化过程详解

版权申诉
0 下载量 67 浏览量 更新于2024-06-26 收藏 1.96MB PDF 举报
本资源是一份名为《和菜鸟一起学linux内核源码之基础准备篇》的PDF文档,它旨在帮助初学者逐步理解Linux内核源码的基础知识。文档强调了在学习过程中遇到的挑战,如对操作系统基础知识的困惑,特别是块设备和应用层的区别。作者提到,尽管初学者可能会遇到看不懂的部分,但通过反复阅读和实践,可以逐渐掌握。 在Linux内核的初始化阶段,主要涉及以下几个关键步骤: 1. **根文件设备号和内存管理**:setup.s程序设置系统的基本参数,如根文件系统设备号和一些全局内存变量,这些变量指示内存布局,包括主内存起始地址、内存大小以及高速缓存区的末尾地址。如果存在虚拟盘(RAMDISK),内存分配会相应调整。 2. **硬件初始化**:包括设置陷阱门(trap handling)、块设备和字符设备,以及初始化TTY (终端控制器)。此外,还会创建第一个任务(task0),通常是守护进程,负责后续的初始化过程。 3. **特权级切换**:内核初始化完成后,控制权转交给用户模块,从0特权级(内核模式)切换到第3特权级(用户模式),这是为了限制普通用户的权限。接下来,系统会调用fork()函数创建进程,用于运行init()函数。 4. **控制台和shell程序**:在这个过程中,会启动控制台程序,如果成功,会创建一个子进程运行/bin/sh shell。父进程进入一个无限循环,不断创建并执行shell,直到shell进程退出。 5. **操作系统体系结构**:文档提到了Linux与其他操作系统(如Windows、iOS、Android等)的比较,指出Linux是一个典型的多任务操作系统,所有的任务都在用户模式下运行,包括系统应用程序,如shell和网络子系统。 这份资源提供了学习Linux内核源码的入门指南,强调了从零开始理解操作系统底层工作原理的重要性,鼓励读者通过实践和反复学习来深入掌握这一复杂但关键的领域。