Linux系统启动过程Linux的特点及发展简史.ppt
文本预览下载声明
第一讲:linux概述 Linux的特点及发展简史 Linux内核的特点 Linux内核的结构及主要组成部分 Linux系统启动过程 Linux的特点及发展简史 1991: Finnish student Linus Torvalds started working on update of Minix POSIX-compliant kernel,Unix-like OS Open source: entire kernel source available free using GPL(GNU Public License ) distribution: “ free” as in freedom (not zero cost) Written mainly in C, Some Assembler Linux内核的特点 Unix内核是单内核、单模块设计 它是一个不可分割的静态可执行体,必须以完整、单独的可执行块的形式在一个单独的地址空间运行 Windows NT和Mach是微内核的典型实例 微内核的功能被划分为多个独立的过程,每个过程叫做一个服务器。 Linux内核与Unix内核一样是单内核,多模块设计 Linux内核运行在单独的内核地址空间。 与Unix内核不同的是,Linux内核汲取微内核的思想 具备模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力 所有模块全部运行在内核态,直接调用函数,无需消息传递 支持多称多处理SMP机制 Linux内核的结构及主要组成部分 Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。 arch:包含与硬件体系结构相关的代码,每种平台占一个相应的目录。比如:32位PC相关的代码存放在i386目录下,ARM平台相关的代码存放在arm目录下。在每个平台的目录中,还有一些子目录。其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、lib(硬件相关工具函数)和boot(引导程序)等。 Documentation:关于内核各部分的通用解释和注释。 drivers:设备驱动程序,每个不同的驱动占用一个子目录。 fs:各种支持的文件系统,如ext、fat、ntfs等。 include:内核头文件。其中,include/asm-*/中是体系结构相关的头文件(*表示体系结构的名称,比如:include/asm-arm)。include/linux中是内核基本的头文件。 init:内核C语言部分的初始化代码(注意不是系统引导代码)。 ipc:进程间通信的代码。 kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。 lib:各种库文件代码。 mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。 net:网络相关代码,实现了各种常见的网络协议。 crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。 scripts:用于配置内核文件的脚本文件。 sound:常用音频设备的驱动程序等。 usr:实现了一个cpio。cpio可以从cpio或tar格式的归档包中存入和读取文件,归档包是一种包含其他文件和有关信息的文件。 Linux系统启动过程 针对linux系统的单x86 cpu的版本 基础知识 系统引导 基础知识 Linux源代码中的C语言代码 Linux源代码中的汇编语言代码:两种 完全的汇编代码,以.s作为文件名后缀 嵌入在c程序中的汇编代码。 C语言代码 Linux主体是用GNU的c语言编写 从c++中吸收了“inline”和“const” 支持“属性描述符”(attribute) 增加了新的基本数据类型“long long int”用于支持64位cpu 汇编语言代码 与一般的386汇编语言采用intel定义不同,它采用的是ATT定义的格式。主要差别如下: Intel中多使用大写字母,而这里大多使用小写字母 寄存器名前面要加“%”作为前缀, 指令的源操作数与目标操作数的顺序与intel的正好相反。ATT格式中,源在前,目标在后 汇编语言代码 访问内存的指令的操作数大小(即宽度)由操作码名称的最后一个字母决定,用作操作码后缀的字母有b(8位),w(16位),l(32位),e.g movb 直接操作数要加“$”作为前缀,intel中不用 基本格式 asm(“汇编语句” :输出寄存器 :输入寄存器 :会被修改的寄存器); 输出和输入寄存器统一按顺序编号,起始是%0 基础知识 Linux的启动是指从系统加电到控制台显示登录提示为止的运行阶段: 主
显示全部