Linux 操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 3606864-83 (西区电三 421 ) Autumn 2007.

Slides:



Advertisements
Similar presentations
首 页 首 页 上一页 下一页 本讲内容 投影法概述三视图形成及其投影规律平面立体三视图、尺寸标注 本讲内容 复习: P25~P31 、 P84~P85 作业: P7, P8, P14[2-32(2) A3 (1:1)]
Advertisements

一、统计范围 注册地在湖里区的具有房地产开发资质的 房地产开发企业 无论目前是否有开发项目 无论开发的项目是在湖里区还是在其他区 没有开发项目的企业需要报送年报和月报 中的资金表(空表)。 新成立的项目公司,要先入库,再报报表。
基本知识和几何要素的投影 模块一: 字体练习 第一章 制图的基本知识与基本技能 题目提示返回.
数控机床结构及维修 主编:于万成 王桂莲 副主编:李昊 人民邮电出版社 北京 ◎ 了解数控系统的组成和常见数控系统 的特点 ◎ 熟悉常见数控系统的参数设置 ◎ 掌握数控系统的常见故障诊断及维修 方法 调试与维修数控 机床的数控系统.
DCN 多核防火墙快速配置之 目的 NAT 配置 神州数码网络 蒋忠平.
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) Autumn 2009.
一、拟合优度检验 二、变量的显著性检验 三、参数的置信区间
计算机 在分析化学的应用 ( 简介 ) 陈辉宏. 一. 概述 信息时代的来临, 各门学科的研究方法都 有了新的发展. 计算机的介入, 为分析化学的进展提供了 一种更方便的研究方法.
Linux 操作系统分析 陈香兰 (西区电三 421 ) Autumn 2007.
Linux 下驱动程序简介 —USB 摄像头 CWY-CTS-SA117L 袁师盛 柴佳杰 孙融 王磊.
嵌入式操作系统 陈香兰 助教:王振明 Spring 2006.
编译程序 构造原理和实现技术 授课教师:吕江花. 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径.
带传动实验 机械工程学院机械基础实验室. 带传动实验 实验目的: 1 、通过实验确定三角带传动的滑动曲线和 效率曲线,并确定单根三角带所能传递 的功率; 2 、观察带传动的滑动与打滑现象,加深对 带传动工作原理和设计准则的理解; 3 、掌握转矩与转速的基本测量方法。
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
地理信息系统概述. 数据和信息 (Data & Information) 数据 原始事实 如:员工姓名, 数据可以有数值、图形、声音、视觉数据等 信息 以一定规则组织在一起的事实的集合。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
嵌入式操作系统 Phone:
1 为了更好的揭示随机现象的规律性并 利用数学工具描述其规律, 有必要引入随 机变量来描述随机试验的不同结果 例 电话总机某段时间内接到的电话次数, 可用一个变量 X 来描述 例 检测一件产品可能出现的两个结果, 也可以用一个变量来描述 第五章 随机变量及其分布函数.
Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - ) Spring 2009.
主讲教师:陈殿友 总课时: 124 第八讲 函数的极限. 第一章 机动 目录 上页 下页 返回 结束 § 3 函数的极限 在上一节我们学习数列的极限,数列 {x n } 可看作自变量 为 n 的函数: x n =f(n),n ∈ N +, 所以,数列 {x n } 的极限为 a, 就是 当自变量 n.
嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.
第十一章 曲线回归 第一节 曲线的类型与特点 第二节 曲线方程的配置 第三节 多项式回归.
协同工作环境研究中心 协同共享 助力科研. 主要内容  认识协同及协同软件  协同科研软件 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.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 3 章 曲线拟合的最小二乘法 给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。 在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。
嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) 助教:裴建国、冯晓静 Autumn 2008.
OS 进程调度模拟演示 制作人: 钱晶 高上上. OS 进程调度模拟-实验原理 静态优先级原理 在这种方式下,系统一旦把处理机分配给就绪队 列中的优先权最高的进程后,该进程便一直执行下去, 直至完成。或因为发生某事件使该进程放弃处理机,系 统方可再将处理机分配给另一优先级最高的进程。这些 事件包括有优先级更高的进程进入,或是因为某些原因.
内存寻址 Embedded Operating Systems2 在 intelx86 处理器下,有三种不同的地址 逻辑地址:每个逻辑地址由一个段 (segment) 和偏 移量 (offset) 组成 线性地址: 32 位无符号整数,可以表示 4G 的地址.
操作系统原理课程设计指南 姜海燕 设计考核幻灯制作  1.1 封皮:系统名称,研制人员  1.2 目的及意义  1.3 功能设计:功能框图、用例图  1.4 结构设计:系统结构  1.5 核心技术及技术路线:画图  1.6 进度安排  1.7 人员安排  1.8.
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
嵌入式操作系统 陈香兰 助教:王振明 Spring 2007.
东南大学计算中心 网站应用与实践 主讲人 吴俊. 2 东南大学计算中心 网站制作流程  确定主题、风格  规划栏目、收集素材  版面设计、配色  编辑页面  测试发布 FrontPage 要完成的任务.
1 学籍归档工作 年学籍归档工作安排 从 2008 年开始,改为按届移交档案 从 2008 年开始,改为按届移交档案 今年的归档工作范围: 今年的归档工作范围: 2014 年应届毕业班级 2014 年应届毕业班级 2014 年办理毕业证的往届生。 2014 年办理毕业证的往届生。 整理内容:根据.
第一节 相图基本知识 1 三元相图的主要特点 (1)是立体图形,主要由曲面构成; (2)可发生四相平衡转变; (3)一、二、三相区为一空间。
第二章 处理器管理 南通大学电子信息学院 2010 年 9 月. 第二章 处理器管理 2.1 中央处理器 2.2 中断技术 2.3 进程及其实现 2.4 线程及其实现 2.5 Linux 进程和线程 2.6 Windows 2003 进程和线程 2.7 处理器调度 2.8 作业的管理与调度 2.9.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
首 页 首 页 上一页 下一页 本讲内容本讲内容 视图,剖视图(Ⅰ) 复习: P107 ~ P115 作业: P48(6-2,6-4), P49( 去 6-6) P50, P51(6-13), P52 P50, P51(6-13), P52 P53 (6-18,6-20) P53 (6-18,6-20)
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
常州机电职业技术学院 数控编程与加工技术 精品课程 项目 3 加工中心程序编制 模块 2 方形型腔类零件 上饶职业技术学院 课程负责人:罗根云 2011 年 5 月
1 、如果 x + 5 > 4 ,那么两边都 可得 x >- 1 2 、在- 3y >- 4 的两边都乘以 7 可得 3 、在不等式 — x≤5 的两边都乘以- 1 可得 4 、将- 7x — 6 < 8 移项可得 。 5 、将 5 + a >- 2 a 移项可得 。 6 、将- 8x < 0.
新一代移动物联系统 MC MOBILE CONTROL 开启办公物联网时代 Product Promotion.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
1 物体转动惯量的测量 南昌大学理学院
本讲主要内容: 1. 如何登陆网站后台 2. 基础信息修改 3. 网站文章类型资料更新 4. 网站图片类型资料更新 5. 网站链接类型资料更新 本讲主要目的: 在结束本讲内容之后,能够按照客户的需求对网站的资料 进行实时更新操作。
第四章 计算机数控( CNC )系统  本章重点:  1 计算机数控系统构成及其结构特点  2 运动轨迹插补原理  3 刀具补偿.
请同学们仔细观察下列两幅图有什么共同特点? 如果两个图形不仅形状相同,而且每组对应点所在的直线 都经过同一点, 那么这样的两个图形叫做位似图形, 这个点叫做位 似中心.
超星数字图书馆 一、页面的使用 进入数字图书馆网页 下载超星阅读器 查找图书.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
项目 1 典型低压电器 的拆装、检修及调试 任务 2 交流接触器的拆装与检修 接触器是一种自动的电磁式自动开关,是 一种依靠电磁力作用使触点闭合或分离的自 动电器,用于接通和断开电动机或其它用电 设备电路。适用于远距离频繁地接通或断开 交直流主电路及大容量控制电路。交流接触 器具有控制容量大、操作方便、便于远距离.
力的合成 力的合成 一、力的合成 二、力的平行四边形 上一页下一页 目 录 退 出. 一、力的合成 O. O. 1. 合力与分力 我们常常用 一个力来代替几个力。如果这个 力单独作用在物体上的效果与原 来几个力共同作用在物体上的效 果完全一样,那么,这一个力就 叫做那几个力的合力,而那几个 力就是这个力的分力。
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
八. 真核生物的转录 ㈠ 特点 ① 转录单元为单顺反子( single cistron ),每 个蛋白质基因都有自身的启动子,从而造成在功能 上相关而又独立的基因之间具有更复杂的调控系统。 ② RNA 聚合酶的高度分工,由 3 种不同的酶催化转 录不同的 RNA 。 ③ 需要基本转录因子与转录调控因子的参与,这.
U niversity of S cience and T echnology of C hina VxWorks 及其应用开发 陈香兰 年 7 月.
张勤 人大报刊复印资料 专题全文数据库 简 介简 介 《人大报刊资料全文数据库》是中国人民大 学书报资料中心与北京博利群电子信息有限 公司联合开发研制的大型数据库光盘。它涵 盖面广、信息量大、分类科学、筛选严谨、 结构合理,是国内最具权威的社会科学、人.
欢 迎 使 用 《工程流体力学》 多媒体授课系统 燕 山 大 学 《工程流体力学》课程组. 第九章 缝隙流动 概述 9.1 两固定平板间的层流流动 9.2 具有相对运动的两平行平板 间的缝隙流动 9.3 环形缝隙中的层流流动.
1 第三章 数列 数列的概念 考点 搜索 ●数列的概念 ●数列通项公式的求解方法 ●用函数的观点理解数列 高考 猜想 以递推数列、新情境下的 数列为载体, 重点考查数列的通 项及性质, 是近年来高考的热点, 也是考题难点之所在.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
单元四 电动后视镜控制电路. 汽车辅助装置汽车辅助装置 一、教学目的要求: 掌握电动后视镜的组成、功用、工作过程以 及控制电路 二、主要教学内容: ( 1 )电动后视镜的组成 ( 2 )电动后视镜控制电路 ( 3 )电动后视镜工作过程 三、教学重点、难点: 电动后视镜工作过程.
SCI 数据库检索练习参考 本练习完全依照 SCI 数据库实际检索过程而 实现。 本练习完全依照 SCI 数据库实际检索过程而 实现。 练习中,选择了可以举一反三的题目,读 者可以根据题目进行另外的检索练习,如: 可将 “ 与 ” 运算检索改为 “ 或 ” 、 “ 非 ” 运算检索 等等。 练习中,选择了可以举一反三的题目,读.
§7.2 估计量的评价标准 上一节我们看到,对于总体 X 的同一个 未知参数,由于采用的估计方法不同,可 能会产生多个不同的估计量.这就提出一 个问题,当总体的一个参数存在不同的估 计量时,究竟采用哪一个好呢?或者说怎 样评价一个估计量的统计性能呢?下面给 出几个常用的评价准则. 一.无偏性.
上机任务 认真查看课件内容,理解: ① ① I/O 接口的含义 ② ② I/O 端口与编址 上网查阅资料,至少找一篇 “I/O 接口 ” 有关的技术 资料(比如显卡、或声卡、网卡、磁盘控制器等 ) 的工作原理)并仔细阅读,扩展知识面。
Presentation transcript:

Linux 操作系统分析 主讲:陈香兰 助教:贾永泉、毛熠璐 (西区电三 421 ) Autumn 2007

Operating System Analysis2 上次课内容回顾 Linux 简介 Linux 内核分析的一些基础知识 操作系统基本概念 堆栈 用户态 / 内核态 虚拟内存

基于 i386 体系结构的 Linux 启动代码分析

Linux Operating System Analysis4 主要内容 源代码简介 启动代码简介 Linux 内核代码组成分析 Linux 的启动层次 Linux 的启动分析

Operating System Analysis5 源代码来源 根据《 Understanding the Linux Kernel 》 ( 2 nd Edition ),我们采用 Linux 有中文版 下载地址: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux tar.gz 加压缩后,建立 Source Insight 工程

Operating System Analysis6 Source Insight 可以用来辅助代码阅读 到 上可以下载 到它的试用版,试用期估计在 30 天左右

Operating System Analysis7 Linux 阅读 linux 目录下的 README 关于 Linux 的介绍 该版本内核支持的体系结构 如何配置、编译、安装

Operating System Analysis8 Linux 内核源代码中的主要子目录 Documentation 内核方面的相关文档。 arch 与体系结构相关的代码。对应于每个 支持的体系结构,有一个相应的目录 如 i386 、 arm 、 alpha 等。每个体系结 构子目录下包含几个主要的子目录: kernel 与体系结构相关的核心代码 mm 与体系结构相关的内存管理代码 lib 与体系结构相关的库代码 include 内核头文件。对每种支持的体系结构 有相应的子目录。 init 内核初始化代码。

Operating System Analysis9 kernel 内核管理代码。 mm 内存管理代码。 ipc 进程间通讯代码。 net 网络部分代码。 lib 与体系结构无关的内核库代码。 drivers 设备驱动代码。每类设备有相应的子 目录,如 char 、 block 、 net 等 fs 文件系统代码。每个支持文件系统有 相应的子目录,如 ext2 、 proc 等。 modules 可动态加载的模块。 Scripts 配置核心的脚本文件。

Operating System Analysis10 考虑 Arch 为 i386 在 arch/i386 下存在如下目录 I386 的启动源代码文件目录 I386 的核心源代码文件目录 I386 的库源代码文件目录 I386 的数学仿真源代码文件目录 I386 的内存管理源代码文件目录 I386 的配置文件 I386 的体系相关部分的 Makefile I386 的 Linux 内核的链接描述文件

Operating System Analysis11 I386 的启动代码文件 在 arch/i386/boot 目录下 在 arch/i386/boot/compressed 目录下 I386 的体系结构相关部分的启动代码 都采用汇编码写的 启动扇区中的启动代码, 其目标码必然是 512 字节 I386 初始化 内核解压缩

Operating System Analysis12 在 arch/i386/kernel 目录下的.S 文件 在 init 目录下 32 位启动代码 这是体系结构无关部分, i386 体系结构相关部分的启动, 其目的就是进入 main.c 中的 start_kernel 处执行

Operating System Analysis13 阅读 documentation/i386/boot.txt 对于 i386 平台,由于一些历史的原因,因此 Linux 的启动比较复杂 这个文档包含如下内容 1 、 Linux/i386 的启动协议( 4 个) 2 、内存布局图 3 、实模式下的内核头结构 4 、内核的命令行( command line )

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

Operating System Analysis15 阅读顶层目录下的 Makefile 找到缺省目标 链接

Operating System Analysis16 找到 vmlinux vmlinux 找到 vmlinux 所依赖的各个文件或者目标 可以看到 vmlinux 包含如下内容 i386/kernel/head.S + init/main.c + init/version.o + CORE_FILES + DRIVERS + NETWORKS + LIBS

Operating System Analysis17 若 make install 在 i386 的 Makefile 中有 install 规则 若 make boot/bzImage/zImage 等等,则要找 到对应的目标然后进行 make boot 在顶层的 Makefile 中可以找到 boot 规则 boot bzImage/zImage 可以在 i386 的 Makefile 中找到相应 规则 Makefile 其他的 zXXX/bzXXX 也都依赖于 boot 下的 zImage/bzImage 它们最终都找到 i386/boot 的 Makefile

Operating System Analysis18 i386/boot 的 Makefile 看 i386/boot 的 Makefile Makefile z 代表压缩; b 代表大内核 可见 compressed 下的 vmlinux/bvmlinux 为 compressed/head.S + 压缩后的顶层目录下的 vmlinux zImage 为 bootsect + setup + compressed/vmlinux bzImage 为 bbootsect + bsetup + compressed/bvmlinux

Operating System Analysis19 下面根据在 bzImage/zImage 中的顺序,我们 依次看启动相关的源代码和相关概念 arch/i386/boot/bootsect.S arch/i386/boot/setup.S arch/i386/boot/compressed/head.S arch/i386/kernel/head.S 最后进入 kernel/main.C

Operating System Analysis20 I386 机器的启动层次 BIOS (Basic I/O System) Boot loader 软盘启动、硬盘启动 Linux kernel

Operating System Analysis21 BIOS 加电, RESET 引脚 初始化寄存器; CS:IP = 0xfffffff0, in ROM ROM  BIOS BIOS 启动内容 POST (上电自检) 初始化硬件设备 搜索一个操作系统来启动 根据配置,操作系统可以在软盘 / 硬盘 /CD_ROM 上 把对应设备的第一个扇区的内容( boot loader 或部分)拷贝 到 RAM(0x7c00) 处 跳转到 0x7c00 处执行

Operating System Analysis22 Boot loader (引导装载程序) BIOS 调用 Boot loader 来把操作系统的内核映像装载 到 RAM 中 考虑 IBM PC 的启动 软盘启动: BIOS 拷贝第一个扇区的内容( bootsect )到 RAM ( 0x7c00 )中 硬盘启动: 硬盘的第一个扇区:主引导记录 MBR, Master Boot Record , MBR 存储该硬盘的分区表 + 一小段引导程序 这个引导程序用来装载 OS 所在分区的第一个扇区( boot loader )的内容到 RAM 中 这个引导程序也可以被替换

Operating System Analysis23 Linux 的 Boot Loader 典型的有: LILO 和 Grub LILO ( Linux Loader ) 可以被安装在 OS 分区的第一个扇区(启动扇区) 也可以代替 MBR 中的引导程序 事实上, LILO 的代码尺寸大于一个扇区,因此被分成 两个部分 MBR 或启动扇区部分 剩余部分 第一部分也被 BIOS 装载到 RAM 中 0x7c00 的位置 第一部分在运行时将自己完整的装载到 RAM 中

Operating System Analysis24 Linux 的 Boot Loader 通常 LILO 或 GRUB 会显示一个已安装操作系统 的列表 按照用户的选择(或者按照缺省项)装载目标 操作系统运行 可能装载操作系统指定的启动代码运行 可能直接装载操作系统内核来运行

Operating System Analysis25 LILO 的 OS 启动过程 显示 “Loading…” 操作系统前 512 (一个扇区大小, bootsect ) 的内容被装载到 RAM 的 0x90000 紧接着的内容( setup )被装在到 0x90200 其他操作系统内核被装载到 对于小内核: 0x10000 (即 64K 处),称为低装载 对于大内核: 0x (即 1M 处),称为高装载 跳转到 setup 处运行

Operating System Analysis26 I386 内核的启动 启动方式 软盘启动:从 bootsect 开始运行 硬盘启动:从 setup 开始运行 在进入 bootsect.S 的源代码讲解之前,我们先 看一下加载 i386 内核的内存布局图

Operating System Analysis27 硬件角度: I386 实模式下的内存布局图 RAM 1-MB ROM-BIOS VIDEO-BIOS VRAM 0xA0000 0xC0000 0xF0000 0x00000

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

Operating System Analysis29 加载 I386 内核的内存布局图 zImage/Image 的内核加载器所使用的经 典的内存布局( 1M=0x ) 低装载情况

Operating System Analysis30 软盘启动, bootsect.S bootsect.S 0x7c00  0x x7c00, BIOS 0x90000, lilo 堆栈, 0x3ff4(0x ), 向下增长 磁盘参数表, 12Bytes , 0x3ff4~0x4000 显示 “Loading” Setup  0x90200 系统 小内核, 0x10000 ( 64KB 处),低装载 大内核, 0x ( 1MB 处),高装载 setup

Operating System Analysis31 硬盘启动,两阶段引导 装载 LILO ( LInuxLOader ) 第一个扇区 … 装载 LINUX Bootsect.S  0x90000 Setup.S  0x90200 系统 0x x 跳转到 setup

Operating System Analysis32 启动第一步,小结 总之,在跳转到 setup 的时候,内存里面的代 码布局为 0x90000 : bootsect 0x90200 : setup 低装载: 0x10000 :带解压的 vmlinux 高装载: 0x :带解压的 bvmlinux 实模式下的内核头结构 包括 bootsect 的最后和 setup 开始的位置 从 bootsect 的偏移 0x1F1 开始,具体描述参见 documentation/i386/boot.txt documentation/i386/boot.txt

Operating System Analysis33 Setup Setup : 0x90200 初始化硬件设备并为内核程 序的执行建立环境 内存检测 键盘 视频 磁盘控制器 IBM 微通道总线 MCA PS/2 设备(总线鼠标) APM BIOS 若低装载,将系统移动到 0x1000 处( 4KB 处) 否则,不必 临时 IDT 和临时 GDT FPU PIC, 16 个硬件中断  中断向 量 32~47 实模式  保护模式 Startup_32

Operating System Analysis34 在 compressed/head.S 和 head.S 中都定义了 startup_32 但是 head.S 中,被压缩在 vmlinux 中还没有解压缩 只有 compressed/head.S 的 startup_32 是可用的 zImage 中,在 0x1000 处 bzImage 中,在 0x 处

Operating System Analysis35 Compressed/head.S Startup_32 初始化段寄存器和一个临时堆栈 初始化 BSS 段 解压缩 高装载或低装载  解压缩  0x ( 1MB ) 跳转到 0x 处

Operating System Analysis36 解压缩后, vmlinux 在 0x 处 根据 vmlinux.lds , vmlinux 的地址被链接为 0xc x 处 vmlinux.lds 如何正确运行呢? 此时仍然是实模式,还没有进入保护模式、分页、 映射好 没有长跳转,只使用采用相对地址的近距离跳转

Operating System Analysis37 Head.S Startup_32 初始化段寄存器 建立进程 0 的内核堆栈 Setup_idt 拷贝系统参数 识别处理器 GDT 、 IDT Start_kernel

Operating System Analysis38 与内存相关的一些概念 在实模式下,地址总线 20 位,访存范围为 1MB , 物理地址使用段址:偏移的方式表示 段址保存在段寄存器中,段寄存器有: cs/ds/es/fs/gs 16 位寄存器,偏移也是 16 位,因此最大段长为 2 16 =0x10000=64KB 物理地址 = 段寄存器 ×16+ 偏移

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

Operating System Analysis40 图示 descriptor Interrupt Descriptor Table Global Descriptor Table GDTR IDTR

Operating System Analysis41 查看 setup.S 和 head.S 中的 gdt/ldt setup.S head.S 一般装载 gdt 和 idt 之后,要重新装载段寄存器 cs 、 ds 、 es 、 fs 、 gs cs 通常通过一条长跳转指令装载 其他数据段寄存器直接设置

Operating System Analysis42 控制寄存器( Control Registers ) CR0 CR1 CR2 CR3 与内存相关

Operating System Analysis43 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

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

Operating System Analysis45 作业 2 i386 实模式下是如何解决 20 位地址空间和 16 位 段寄存器之间的不匹配问题的? i386 保护模式下的段寄存器的内容与实模式下 段寄存器的内容一样么?如何解释? 简单叙述一下 Linux 的 bzImage 的软盘启动过程