Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - 3606864 ) Spring 2009.

Slides:



Advertisements
Similar presentations
一、统计范围 注册地在湖里区的具有房地产开发资质的 房地产开发企业 无论目前是否有开发项目 无论开发的项目是在湖里区还是在其他区 没有开发项目的企业需要报送年报和月报 中的资金表(空表)。 新成立的项目公司,要先入库,再报报表。
Advertisements

第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
第 12 章位运算 C 语言兼具高级语言及低级语言的特性,因此 适合编写系统软件。 C 语言具备低级语言的特性 就在于它能直接对硬件进行操作,即位运算。 所谓位运算是指,按二进制位进行的运算。 例如,将一个存储单元中各二进位左移或右移一 位等。
HistCite 结果分析示例 罗昭锋. By:SC 可能原因:文献年度过窄,少有相互引用.
实验:验证牛顿第二定律. 1 、实验目的:探究 a 与 F 、 m 的定量关系 2 、实验原理:控制变量法 A 、 m 一定时,探究 a 随 F 的变化关系 B 、 F 一定时, 探究 a 随 m 的变化关系.
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) Autumn 2009.
Linux 下驱动程序简介 —USB 摄像头 CWY-CTS-SA117L 袁师盛 柴佳杰 孙融 王磊.
编译程序 构造原理和实现技术 授课教师:吕江花. 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径.
主要内容  LR(0) 分析. 0 S→  E # E→  E+T E→  T T→  id T→  ( E ) 1 S→E  # E→E  +T 5 T→id  3 E→E+  T T→  id T→  (E) 4 E→E+T  9 E→T  6 T→(  E) E→
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
Thomson Reuters 中国办事处 2008 年 5 月 Web of Science 培训课件 第六部分 : Web of Science 的管理功能.
系统调用 Embedded Operating Systems2 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提 供了一组接口 —— 系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性.
地理信息系统概述. 数据和信息 (Data & Information) 数据 原始事实 如:员工姓名, 数据可以有数值、图形、声音、视觉数据等 信息 以一定规则组织在一起的事实的集合。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
嵌入式操作系统 Phone:
主讲教师:陈殿友 总课时: 124 第八讲 函数的极限. 第一章 机动 目录 上页 下页 返回 结束 § 3 函数的极限 在上一节我们学习数列的极限,数列 {x n } 可看作自变量 为 n 的函数: x n =f(n),n ∈ N +, 所以,数列 {x n } 的极限为 a, 就是 当自变量 n.
协同工作环境研究中心 协同共享 助力科研. 主要内容  认识协同及协同软件  协同科研软件 duckling 介绍.
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
Linux 操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 (西区电三 421 ) Autumn 2007.
Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - ) Spring 2009.
内存寻址 Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址 空间.
第 4 章 过程与变量的作用范围. 4.1 Visual Basic 的代码模块 Visual Basic 的应用程序是由过程组成的, 过程代码存放在模块中。 Visual Basic 提供了 三类模块,它们是窗体模块、标准模块和类 模块。 窗体模块 窗体模块是大多数 Visual Basic.
实验三: 用双线性变换法设计 IIR 数字滤波器 一、实验目的 1 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 2 掌握数字滤波器的计算机仿真方法。 3 通过观察对实际心电图信号的滤波作用, 获得数字滤波的感性知 识。
嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.
Linux 操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 (西区电三 421 ) Autumn 2007.
外文文献检索示例. 实验目的: 掌握利用计算机网络检索外文文献的基本方法; 了解熟悉下列数据库的结构、内容并掌握其检索方 法 ; 掌握检索的主要途径:出版物( Publication )、关键 词( Keyword )、作者( Author )等。
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) 助教:裴建国、冯晓静 Autumn 2008.
OS 进程调度模拟演示 制作人: 钱晶 高上上. OS 进程调度模拟-实验原理 静态优先级原理 在这种方式下,系统一旦把处理机分配给就绪队 列中的优先权最高的进程后,该进程便一直执行下去, 直至完成。或因为发生某事件使该进程放弃处理机,系 统方可再将处理机分配给另一优先级最高的进程。这些 事件包括有优先级更高的进程进入,或是因为某些原因.
信息利用与学术论文写作 Library of Jiangsu University, Zhenjiang Sha Zhenjiang
流态化 概述 一、固体流态化:颗粒物料与流动的流体接触,使颗粒物料呈类 似于流体的状态。 二、流态化技术的应用:流化催化裂化、吸附、干燥、冷凝等。 三、流态化技术的优点:连续化操作;温度均匀,易调节和维持; 气、固间传质、传热速率高等。 四、本章基本内容: 1. 流态化基本概念 2. 流体力学特性 3.
内存寻址 Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址.
从 Postscript 格式文献中提取 数学公式的方法. 概述 从 Postscript 格式文献中提取识别数学公式, 是数学公式识别领域的一个研究方向。主要针对 以 Word 和 Latex 为生成源的 Postscript 文档, 提出 基于内容的数学公式提取方法。首先重载 Postscript.
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
东南大学计算中心 网站应用与实践 主讲人 吴俊. 2 东南大学计算中心 网站制作流程  确定主题、风格  规划栏目、收集素材  版面设计、配色  编辑页面  测试发布 FrontPage 要完成的任务.
第5章 键盘与鼠标接口 5.1 键盘概述 5.2 键盘的工作原理 5.3 PC扩展键盘接口 5.4 键盘中断与键盘I/O 5.5 鼠标接口.
第二章 处理器管理 南通大学电子信息学院 2010 年 9 月. 第二章 处理器管理 2.1 中央处理器 2.2 中断技术 2.3 进程及其实现 2.4 线程及其实现 2.5 Linux 进程和线程 2.6 Windows 2003 进程和线程 2.7 处理器调度 2.8 作业的管理与调度 2.9.
第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
1.2 地理信息技术在区域 地理环境研究中的应用. 地理信息技术: 指获取、管理、分析和 应用地理空间信息的现 代技术的总称。 应用:资源调查、环境监测、自然灾害防御监测、国 土资源管理、国土开规划等。 地理信息 : 遥感 (RS) 、全球定位系统 (GPS) 和地理信息系统 (GIS)
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
如何注册报名? “ 一师一优课、一课一名师 ” 操作解读 如何晒课? 如何注册报名?
刘相兵 (Maclean Liu) 介绍 dbms_registry PL/SQL 程序包.
草原承包经营管理系统 额尔德木图 服务网站: 服务 QQ 群: 电话: QQ : 单位:内蒙古师范大学 内蒙古自治区遥感与地理 信息系统重点实验室.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
本讲主要内容: 1. 如何登陆网站后台 2. 基础信息修改 3. 网站文章类型资料更新 4. 网站图片类型资料更新 5. 网站链接类型资料更新 本讲主要目的: 在结束本讲内容之后,能够按照客户的需求对网站的资料 进行实时更新操作。
第四章 计算机数控( CNC )系统  本章重点:  1 计算机数控系统构成及其结构特点  2 运动轨迹插补原理  3 刀具补偿.
§10.2 对偶空间 一、对偶空间与对偶基 二、对偶空间的有关结果 三、例题讲析.
超星数字图书馆 一、页面的使用 进入数字图书馆网页 下载超星阅读器 查找图书.
企业产品标准信息公共服务平台 操作介绍 目录 一 、系统架构介绍 二 、企业产品标准自我声明填报系统 三 、企业产品标准公示系统.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
项目 1 典型低压电器 的拆装、检修及调试 任务 2 交流接触器的拆装与检修 接触器是一种自动的电磁式自动开关,是 一种依靠电磁力作用使触点闭合或分离的自 动电器,用于接通和断开电动机或其它用电 设备电路。适用于远距离频繁地接通或断开 交直流主电路及大容量控制电路。交流接触 器具有控制容量大、操作方便、便于远距离.
力的合成 力的合成 一、力的合成 二、力的平行四边形 上一页下一页 目 录 退 出. 一、力的合成 O. O. 1. 合力与分力 我们常常用 一个力来代替几个力。如果这个 力单独作用在物体上的效果与原 来几个力共同作用在物体上的效 果完全一样,那么,这一个力就 叫做那几个力的合力,而那几个 力就是这个力的分力。
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
参考文献管理软件. 常见参考文献管理软件 : 中文 : CNKI E-learning (目前免费) NoteExpress NoteFirst 英文: Refworks Endnote (网络版免费) Mendeley……
登陆数据录入明细申报生成汇总申报扣款 输入计算机编码及 密码即可登陆系统. 登陆数据录入明细申报生成汇总申报扣款.
一、 版 面 构 成 的 概 念 版 面 构 成 的 概 念 二、 版 面 构 成 的 发 展 趋 势 版 面 构 成 的 发 展 趋 势 三、 广 告 文 字 的 版 面 构 成 广 告 文 字 的 版 面 构 成 四、 广 告 版 面 的 视 觉 流 程 广 告 版 面 的 视 觉 流 程.
1. 利用图形化开发环境 LabVIEW 对 Xilinx Spartan3E 进行编程 汤敏 NI 高校市场部.
U niversity of S cience and T echnology of C hina VxWorks 及其应用开发 陈香兰 年 7 月.
张勤 人大报刊复印资料 专题全文数据库 简 介简 介 《人大报刊资料全文数据库》是中国人民大 学书报资料中心与北京博利群电子信息有限 公司联合开发研制的大型数据库光盘。它涵 盖面广、信息量大、分类科学、筛选严谨、 结构合理,是国内最具权威的社会科学、人.
1 第三章 数列 数列的概念 考点 搜索 ●数列的概念 ●数列通项公式的求解方法 ●用函数的观点理解数列 高考 猜想 以递推数列、新情境下的 数列为载体, 重点考查数列的通 项及性质, 是近年来高考的热点, 也是考题难点之所在.
1 文件的查找. 2 回收站的管理 3 磁盘管理 格式化软盘 复制文件到软盘 整理磁盘碎片 4 格式化软盘.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
2. MCS-51 单片机的组成及结构分析 2.1 MCS-51 单片机的内部结构及结构特点 1 )在 RAM 区有一个寄存器工作区( 4×8 个工作寄存器), 专门功能寄存器 SFR (完成定时器、串行口、中断逻辑等 控制)。 2 )程序存储器与数据存储器在空间上分开。 有不同的地址指针 PC 、
单元四 电动后视镜控制电路. 汽车辅助装置汽车辅助装置 一、教学目的要求: 掌握电动后视镜的组成、功用、工作过程以 及控制电路 二、主要教学内容: ( 1 )电动后视镜的组成 ( 2 )电动后视镜控制电路 ( 3 )电动后视镜工作过程 三、教学重点、难点: 电动后视镜工作过程.
SCI 数据库检索练习参考 本练习完全依照 SCI 数据库实际检索过程而 实现。 本练习完全依照 SCI 数据库实际检索过程而 实现。 练习中,选择了可以举一反三的题目,读 者可以根据题目进行另外的检索练习,如: 可将 “ 与 ” 运算检索改为 “ 或 ” 、 “ 非 ” 运算检索 等等。 练习中,选择了可以举一反三的题目,读.
上机任务 认真查看课件内容,理解: ① ① I/O 接口的含义 ② ② I/O 端口与编址 上网查阅资料,至少找一篇 “I/O 接口 ” 有关的技术 资料(比如显卡、或声卡、网卡、磁盘控制器等 ) 的工作原理)并仔细阅读,扩展知识面。
Presentation transcript:

Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - ) Spring 2009

 回顾编译得到的 bzImage 的结构  Setup.bin+vmlinux.bin (具有自解压能力) head_32.o+misc.o+piggy.o vmlinux Head-y + init-y + main

基于 I386 的 Linux 的启动

计算机是如何启动的  BIOS  软盘启动  硬盘启动  Grub  Lilo  启动协议

 特殊的几个地址  BIOS :第一个扇区  0x07c0  第一个扇区的内容是什么?  观察 setup.ld 了解第一个扇区的内容

关键:  实模式  保护模式  分页模式  页表  GDT 表  IDT 表 阅读: documentation/i386/boot.txt

I386 内核从实模式开始运行 首先看一下什么是实模式  实模式是为了兼容早期的 CPU 而设置的  i386 系统总是始于实模式  实模式下  地址总线: 20 位  内存范围: 0~1MB  逻辑地址 = 段地址 + 段内偏移 段地址 = 段寄存器中的值 *16 (或左移 4 位) 段寄存器长度: 16bit  段寄存器有: cs/ds/es/fs/gs

 保护模式下,  地址总线 32 位,访存范围为 4GB  原来的段寄存器现在被称作段选择子,与 GDT 表配合 使用 GDT 表由 gdtr 指示其位置和长度 使用特殊的指令进行操作: sgdt/lgdt

图示 descriptor Interrupt Descriptor Table Global Descriptor Table GDTR IDTR

 一般装载 gdt 和 idt 之后,要重新装载段寄存器  cs 、 ds 、 es 、 fs 、 gs  cs 通常通过一条长跳转指令装载  其他数据段寄存器直接设置

控制寄存器( Control Registers )  CR0  CR1  CR2  CR3  CR4 (扩展相关,忽略)  与内存相关

CR0  CR0, MSW register (Machine Status Word, 32-bit version)  包含系统控制位,用于控制操作模式和状态  Instruction: lmsw  LINUX’ setup.S: movw $1, %ax lmsw %ax jmp flush_instr // why? flush_instr:  To turn on the PE-bit (enables protected-mode), PE-bit (Protection Enabled) 0  CPU is in real-mode, 1  CPU is in protected-mode

CR1 、 CR2 、 CR3  CR1 :保留  CR2 :在缺页异常的时候,记录缺页地址  CR3 :记录页目录所在的物理地址和两个标记 (PCD & PWT)

阅读 documentation/i386/boot.txt  对于 i386 平台,由于一些历史的原因,因此 Linux 的启动比较复杂  这个文档包含如下内容 1 、 Linux/i386 的启动协议( 10 个 + ) 2 、内存布局图(大内核,小内核) 3 、实模式下的内核头结构(即 setup header )以及各参 数的解释 4 、内核的命令行( command line )

5 、实模式代码的内存布局 6 、启动配置示例 7 、装载 Linux 的剩余部分 8 、特殊的命令行参数 9 、运行内核 10 、高级启动回调函数  关于其中的一些内容,我们将在合适的时候说明

加载 I386 内核的内存布局图  zImage/Image 的内核加载器所使用的经 典的内存布局( 1M=0x )为

Header.S 分析  前 512 个字节的内容

关于 msg_loop 输出的字符串 ??不支持软盘启动???

Header.S 分析  关于 512 字节的最后( setup header ) 在 setup.ld 中 在 Head.S 中 …

Header.S 分析  第二个扇区开始  接下来仍然是 setup header 参数部分,直到 start_of_setup

 start_of_setup  设置堆栈  检查 setup 中的标签  清除 BSS 段  调用 C 入口 main start_of_setup _start(512 处 ) main

Main.c 分析 main go_to_protected_mode =? 重点:

关于 go_to_protected_mode  关键 move_kernel_around setup_idt setup_gdt protected_mode_jump :参见 pmjump.S 重点:

关于 protected_mode_jump  关键  进入保护模式 通过设置 cr0  进入 32 位代码 通过一条手工设置的代码  最后进入 setup header 中指定的 code32_start

关于 boot_params.hdr.code32_start  对 boot_params.hdr 的赋值之处: copy_boot_params  Hdr 的定义之处 在 Head.S 中 …

 code32_start 在 setup header 的第二部分  此处对应于压缩映像的 head_32.S

解压缩头中的 head_32.S  32 位代码  关键 1 :调用 decompress_kernel  关键 2 :跳转到 vmlinux 的头 head_32.S  阅读此目录下的 vmlinux_32.lds  了解入口处的代码

关于解压缩 head_32.S 中的 relocated 相关  即 “.text” 部分  Clear BSS  Setup the stack for the decompressor  Do the decompression, and jump to the new kernel..

Vmlinux 中的 head  观察 vmlinux.lds  观察 “.text.head” 、 “.text” 、 “.data” 等 .text.head  Set segments to known values.  Clear BSS first so that there are no surprises...  Copy bootup parameters out of the way.  Initialize page tables.  Enable paging  Set up the stack pointer  Initialize eflags.  call setup_idt  check if it is 486 or 386.  call check_x87  装载 GDT 、 IDT ,进入 3G 地址空间  jmp i386_start_kernel i386_start_kernel start_kernel startup_32 最后 重点

关于页表的初始化  观察 default_entry 后的代码,忽略 PAE  页目录: swapper_pg_dir :参见 head_32.S 第一个页表: pg0 :参见 vmlinux_32.lds

swapper_pg_dir

pg0 内核代码段 内核数据段 内核 BSS 段 低地址 高地址 pg0 swapper_pg_dir

初始化页目录和页表 对应线性地址 0 对应线性地址 3GB 1024 项 pg0swapper_pg_dir 物理地址 空间低端 4M … …

打开分页机制

关于 GDT  1 ) boot_gdt  2 ) per_cpu__gdt_page

关于堆栈 stack_start

关于 setup_idt  在 idt 表中,填写 ignore_int  几个特殊的项: 输出如下信息:

装载 GDT 、 IDT ,进入 3G 地址空间

关于 start_kernel  对 Linux 内核的各个部分进行初始化  Start_kernel 属于手工初始化的第一个进程( 0 号 进程),该进程最后执行 cpu_idle ,成为 idle 进程  系统创建的第一个进程( 1 号进程)  该进程最后找到一个 init 程序进行 Linux 运行环境的初 始化

upstart 管理的 ubuntu 启动过程: 1, 内核启动 init 2,init 找到 /etc/event.d/rc-default 文件,确定默认运行级别 (X) 3, 触发相应的 runlevel 事件,开始运行 /etc/event.d/rcX 4,rcX 运行 /etc/init.d/rc ,传入参数 X 5,/etc/init.d/rc 脚本进行一系列设置,最后运行相应的 /etc/rcX.d/ 中的脚本 6,/etc/rcX.d/ 中的脚本按事先设定的优先级依次启动,直至 最后给出登录画面 ( 启动 X 服务器和 GDM)  若不想启动某程序,只要把相应的符号链接从 /etc/rc2.d/ 中删去即可

Thanks ! The end.