Linux内核源代码导读.ppt

上传人:京东小超市 文档编号:5963130 上传时间:2020-08-18 格式:PPT 页数:66 大小:862KB
返回 下载 相关 举报
Linux内核源代码导读.ppt_第1页
第1页 / 共66页
Linux内核源代码导读.ppt_第2页
第2页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Linux内核源代码导读.ppt》由会员分享,可在线阅读,更多相关《Linux内核源代码导读.ppt(66页珍藏版)》请在三一文库上搜索。

1、课 枚 窃 剃 她 嫡 攘 幸 部 盼 彬 曾 怨 尹 骋 添 恕 天 鸣 藉 障 蓟 即 把 勘 陀 乱 叛 普 祭 随 税 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux内核源代码导读 中国科学技术大学计算机系 陈香兰(05513606864) Spring 2009 豢 屹 绳 爆 阻 旁 欺 茹 孤 趋 习 桨 贸 郭 伞 背 挟 坐 角 悠 帝 七 坐 助 遮 晨 堕 楷 走 瓷 惟 命 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 序 v一些基本概念 操作系统的基本概念 I

2、386系统的基本概念 vLinux简介 v源码阅读和project环境 vLinux2.6.26源码简介 灯 屏 杰 膛 邀 陵 总 悠 挠 寥 蝎 杜 涎 荫 礁 深 锤 丝 碌 诞 憋 遂 悔 指 卓 胯 路 海 贡 祁 橡 藏 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 操作系统的基本概念 v任何计算机系统都包含一个基本的程序集合,称 为操作系统。 内核(进程管理,进程调度,进程间通讯机制,内存 管理,中断异常处理,文件系统,I/O系统,网络部 分) 其他程序(例如函数库,shell程序等等) v操作系统的目的 与硬件交互,管理所有的硬

3、件资源 为用户程序(应用程序)提供一个良好的执行环境 架 叔 肿 占 炕 魁 烂 床 瀑 印 殷 掘 总 郴 示 境 溪 眠 盏 黄 咯 颈 一 闰 裁 翰 芝 褪 红 徒 棉 嫂 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 I386系统的基本概念 v代码的运行 v堆栈的概念 v内核态与用户态 v中断/异常/系统调用 v虚拟内存 王 瞻 剃 户 埠 锣 昂 樱 驹 赤 庞 究 郑 勋 彤 丸 股 静 镇 压 盒 清 茧 硅 弦 兵 胁 炒 炮 粪 詹 槛 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码

4、导 读 代码的运行 v关键寄存器 cs:eip:总是指向下一条的指令地址 l顺序执行:总是指向地址连续的下一条指令 l跳转/分支:执行这样的指令的时候,cs:eip的值会根据程序 需要被修改 lcall:将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的 入口地址 lret:从栈顶弹出原来保存在这里的cs:eip的值,放入cs:eip 中 l发生中断时? l? 圆 缚 邮 估 嘉 乳 牟 般 驳 富 辈 规 兢 凯 命 枣 潞 亨 不 踪 带 彝 龙 渊 肖 购 亮 卞 滞 震 爆 伊 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 I

5、386系统的基本概念 v代码的运行 v堆栈的概念 v内核态与用户态 v中断/异常/系统调用 v虚拟内存 陪 霖 糟 诚 祟 坤 周 氨 楔 降 畴 栅 疆 删 拾 缉 忿 焚 捷 穴 猎 过 膝 忽 牵 玉 药 焰 纹 归 碴 幸 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 堆栈的概念 v 堆栈是C语言程序运行时必须的一个记录调用路径和参 数的空间 函数调用框架 传递参数 保存返回地址 提供局部变量空间 等等 v C语言编译器对堆栈的使用有一套的规则 v 了解堆栈存在的目的和编译器对堆栈使用的规则是理解 操作系统一些关键性代码的基础 v 以x

6、86体系结构为例 乞 几 钥 申 棺 东 借 蝗 淳 绞 洼 华 褂 藤 江 恰 承 灾 舌 锻 渴 彬 幅 砍 芬 湾 先 洒 堑 澳 龋 莲 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 堆栈寄存器和堆栈操作 v堆栈相关的寄存器 esp,堆栈指针(stackpointer) ebp,基址指针(basepointer) v堆栈操作 push 栈顶地址减少4个字节(32位) pop 栈顶地址增加4个字节 vebp在C语言中用作记录当前函数调用基址 esp ebp 高地址 低地址 esp 庄 鳖 忆 鲜 叼 奔 热 约 涤 另 狂 皋 札 着 孰

7、 颐 左 樱 宰 教 徒 蛆 揪 集 煎 恭 溶 态 漳 则 棠 厦 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 / 调用者 call target 利用堆栈实现函数调用和返回 /建立被调用者函数的堆栈框架 pushl %ebp movl %esp, %ebp /拆除被调用者函数的堆栈框架 movl %ebp,%esp popl %ebp ret /被调用者函数体 /do sth. call指令: 1)将下一条指令的地址A保 存在栈顶 2)设置eip指向被调用程序 代码开始处 将地址A恢复到eip中 总 坚 鹏 恐 伏 勃 缓 回 曙 带 旗

8、 温 哥 骋 释 兔 牡 肘 败 惹 竭 榆 期 燕 晨 隔 吼 斜 赠 码 旭 凿 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 函数堆栈框架的形成 v callxxx 执行call之前 执行call时,cs:eip原来的值 指向call下一条指令,该值被 保存到栈顶,然后cs:eip的值 指向xxx的入口地址 v 进入xxx 第一条指令:pushl%ebp 第二条指令:movl%esp,%ebp 函数体中的常规操作,可能会压栈、出栈 v 退出xxx movl%ebp,%esp popl%ebp ret esp ebp 高地址 低地址 cs

9、: eip esp ebp esp ebp esp 广 僻 甲 扦 光 囚 窄 腺 云 晾 厚 赤 离 惜 额 俏 委 狂 标 拘 桶 手 棍 归 刁 忧 雷 履 弱 恃 涎 移 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 vC语言中还使用堆栈进行 参数的传递 局部变量的使用 倡 甸 往 骗 兵 仟 费 廖 牛 约 詹 脖 挞 巩 答 痰 还 铆 贤 贝 肩 课 桌 珐 掳 骤 蓉 脉 柄 蹭 糖 安 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 一段小程序 源文件:test.c 这是一个很简

10、单的C程序 main函数中调用了函数p1和 p2 首先使用gcc生成test.c的可执行 文件test 然后使用objdumpS获得test的 反汇编文件 改 续 苯 抬 奏 植 胸 仿 旬 塌 欲 茹 险 筹 谰 啮 统 黑 鸥 帛 脉 昔 群 刺 毋 诱 苔 脊 为 滴 蛤 枢 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 eip eip eip eip 观察程序运行时堆栈的变化 main p1(c) p2(x,y) p1 p2 main p2 p1 程序的代码段 堆栈 eip esp main堆栈 c eip eip eip p1的堆栈

11、esp eip eip eip x,y eip p2堆栈 eip 甫 临 甲 凶 秤 名 峰 骋 论 斥 六 丰 印 沂 粗 召 憨 苏 研 当 跃 虏 评 玻 摆 辟 销 购 诣 炭 兔 乱 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 另一段小程序 和前一段小程序稍有不同 在这个小程序中,main函数中 调用了函数p2,而在p2的执行 过程中又调用了函数p1 囚 太 庇 所 悯 犀 漫 凑 诊 列 爬 薪 亚 帅 许 掠 样 青 生 姿 冤 歹 董 象 莎 旷 整 追 橙 很 臆 颠 L i n u x 内 核 源 代 码 导 读 L i

12、n u x 内 核 源 代 码 导 读 观察程序运行时堆栈的变化 eip eip eip eip main p2(x,y) p1 p2 p1(c) main p2 p1 程序的代码段 堆栈 eip esp main堆栈 esp eip eip x,y eip p2堆栈 eip eip eip eipc eip p1堆栈 esp 凉 阂 朗 正 漾 鞘 滚 点 褥 凛 琳 若 掷 谴 肆 然 质 刘 液 鲁 蛊 秉 坑 北 徽 哎 废 辊 誓 屁 唁 恍 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 I386系统的基本概念 v代码的运行 v堆栈的

13、概念 v内核态与用户态 v中断/异常/系统调用 v虚拟内存 目 鸭 寥 邪 垢 显 汽 杭 渝 洼 惶 供 咽 样 咖 稗 豌 锰 耕 掳 镐 荣 蓟 冯 碟 永 脖 工 宠 漫 求 伪 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 用户态和内核态的概念 vWhy? v假定不区分 用户直接修改操作系统的数据 用户直接调用操作系统的内部函数 用户直接操作外设 用户任意读/写物理内存 腑 馅 幸 捎 痈 维 衷 库 玩 鞍 抽 唐 貌 殊 秆 黎 害 烤 颈 锣 辖 稗 钝 仕 忠 炭 陕 股 烂 帝 淫 侥 L i n u x 内 核 源 代 码

14、 导 读 L i n u x 内 核 源 代 码 导 读 v因此,要区分用户态和内核态: 禁止用户程序和底层硬件直接打交道 (最简单的例子,如果用户程序往硬件控制寄存器写 入不恰当的值,可能导致硬件无法正常工作) 禁止用户程序访问任意的物理内存 (否则可能会破坏其他程序的正常执行,如果对核心 内核所在的地址空间写入数据的话,会导致系统崩溃 ) 癣 姻 定 街 焕 倦 桅 柜 拇 歪 烯 傣 轩 轧 诧 叙 周 挟 翔 或 腐 本 兹 事 岛 催 份 清 赠 扯 防 乃 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v什么是用户态和内核态? 一般

15、现代CPU都有几种不同的指令执行级别 在高执行级别下,代码可以执行特权指令,访问任意 的物理地址,这种CPU执行级别就对应着内核态 而在相应的低级别执行状态下,代码的掌控范围会受 到限制。只能在对应级别允许的范围内活动 举例: intelx86CPU有四种不同的执行级别0-3,Linux只使 用了其中的0级和3级分别来表示内核态和用户态 乓 协 躬 崇 阵 幂 膘 漳 涸 谊 彤 士 博 癸 衰 蓑 少 纤 捎 矗 访 涂 而 霜 般 周 骆 膛 蚁 钞 曳 搀 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v 如何区分一段代码是核心态还是用户

16、态 cs寄存器的最低两位表明了当前代码的特权级 CPU每条指令的读取都是通过cs:eip这两个寄存器: 其中cs是代码段选择寄存器,eip是偏移量寄存器。 v 上述判断由硬件完成 v 一般来说在Linux中,地址空间是一个显著的标志: 0 xc0000000以上的地址空间只能在内核态下访问, 0 x000000000 xbfffffff的地址空间在两种状态下都可以 访问 注意:这里所说的地址空间是逻辑地址而不是物理地址 汾 八 巴 湾 溜 敲 览 冬 喇 腰 肠 栗 优 钱 曼 耳 获 嫡 苑 秤 侄 港 堵 籽 禁 豌 扩 犀 斧 栖 淤 核 L i n u x 内 核 源 代 码 导 读

17、L i n u x 内 核 源 代 码 导 读 I386系统的基本概念 v代码的运行 v堆栈的概念 v内核态与用户态 v中断/异常/系统调用 v虚拟内存 揍 吸 性 祖 昼 曼 风 埠 括 硝 叶 梆 载 首 绿 泼 摊 伺 雀 笼 属 祷 臻 欢 金 永 辈 宙 眺 泊 悠 枷 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 中断和异常 v中断(广义)会改变处理器执行指令的顺序,通 常与CPU芯片内部或外部硬件电路产生的电信号 相对应 中断异步的: 由硬件随机产生,在程序执行的任何时候可能出现 异常同步的: 在(特殊的或出错的)指令执行时由CP

18、U控制单元产 生 我们用“中断信号”来通称这两种类型的中断 设备 设备 控制器 中断 控制器 IRQ CPU INTR 浇 秒 路 伊 椒 坤 嫩 娜 既 窄 街 乘 冈 刮 膛 叫 丛 扫 狈 踏 踢 帖 渤 郡 耶 稳 习 堕 袱 趋 澳 声 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 中断信号的作用 v中断信号提供了一种特殊的方式,使得CPU转去 运行正常程序之外的代码 比如一个外设采集到一些数据,发出一个中断信号, CPU必须立刻响应这个信号,否则数据可能丢失 v当一个中断信号到达时,CPU必须停止它当前正 在做的事,并且切换到一个新

19、的活动 v为了做到这这一点, 在进程的内核态堆栈保存程序计数器的当前值(即eip 和cs寄存器)以便处理完中断的时候能正确返回到中断 点, 并把与中断信号相关的一个地址放入进程序计数器, 从而进入中断的处理 遇 整 浊 咖 条 拎 熏 俊 洞 日 洒 贴 框 摇 孰 笨 伴 嘲 喝 采 毋 挑 拖 冤 首 坞 唯 见 服 乾 泼 励 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 系统调用的意义 v操作系统为用户态进程与硬件设备进行交互提供 了一组接口系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性 v

20、基于I386的Linux使用int0 x80进行系统调用 记 墒 凶 暴 枉 海 驱 师 沮 铆 围 钧 悠 抄 公 仿 成 后 谓 糯 施 勃 绸 闭 闭 戚 族 路 边 魄 悯 臆 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 I386系统的基本概念 v代码的运行 v堆栈的概念 v内核态与用户态 v中断/异常/系统调用 v虚拟内存 珐 氦 侧 拾 熟 果 冲 原 既 观 品 揭 幅 蒜 返 彻 禽 答 墓 掇 峰 朔 筑 甥 傍 蕴 垛 扎 午 熏 做 浊 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代

21、码 导 读 虚拟内存 v物理内存有限,是一种稀缺资源 v局部性原理 空间局部性 时间局部性 v按需调页 页框 v利用磁盘上的交换空间 受 苍 汾 赴 布 膀 谊 脱 坤 行 固 糯 并 眷 仕 陕 宙 盅 簧 句 沃 涩 谗 喝 睛 格 翔 赋 答 卤 浩 内 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v进程的虚拟地址空间 独立的地址空间(32位,4GB),每个进程一个 在Linux中,3G以上是内核空间,3G以下是用户空间 4G的进程地址空间使用进程私有的二级页表进行地 址转换(虚拟地址物理地址) l页面大小:4KB l页目录、页表 l若

22、对应的内容在内存中,则对应的二级页表项记录相应的物 理页框信息 l否则根据需要进行装载或者出错处理 蛇 袁 卸 更 拴 娃 星 弹 矽 邻 闺 瞥 蔫 朗 直 旅 菠 们 爱 黔 逊 垛 爸 库 炭 谰 拄 狂 炽 铅 虚 把 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v进程调度后,执行一个新的被调度的进程之前, 要先进行页表切换 vLinux中的内核空间 每个进程3G以上的空间用作内核空间 从用户地址空间进入内核地址空间不经过页表切换 而是通过中断/异常/系统调用入口(也只能如此) 膳 顷 斟 帝 浇 晓 沈 氟 夸 蛙 委 啦 受 季

23、庞 鸡 罐 曹 字 锡 冯 洲 磁 付 泡 拴 蹦 屯 啄 唇 李 稠 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 小结 v根据代码的执行、中断/异常/系统调用来理解操 作系统 v操作系统提供中断/异常处理 v操作系统提供系统调用 v应用开发人员编写应用程序 v驱动开发人员编写驱动 v应用程序运行 要 骚 倍 玩 侗 削 革 隔 贞 鲸 狈 迄 芦 趾 养 遗 魂 避 佯 鄙 选 韶 黄 吐 镶 冯 翱 盂 陪 萨 和 缘 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 序 v一些基本概念 操作

24、系统的基本概念 I386系统的基本概念 vLinux简介 v源码阅读和project环境 vLinux2.6.26源码简介 巩 叙 渺 橱 赫 磷 役 显 亥 惺 多 钦 滤 臼 耐 强 帐 景 吕 祭 尹 诚 瓦 诽 嘱 陀 晨 爸 藕 浚 凛 狸 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 爪 倔 酝 侵 般 习 范

25、 筑 疡 檬 拧 诊 抹 认 墒 腿 醛 飞 句 懈 照 泰 料 彭 血 袄 纷 谍 笛 撅 要 兆 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 什么是Linux? vLinux是一个类Unix(Unix-like)的操作系统, 在1991年发行了它的第一个版本 v在Linux内核维护网站上,“What is Linux?” 卫 颓 绍 撅 虏 伟 柔 断 够 注 凿 保 误 拜 皇 搔 醋 赞 乖 季 狗 尹 暗 募 袍 肺 惩 播 讳 社 儒 疲 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导

26、读 From “www.kernel.org” vLinux的来历和目标: Linuxisa clone of the operating system Unix,written fromscratchbyLinus Torvaldswithassistancefroma loosely-knitteamofhackersacrosstheNet.It aims towards POSIX and Single UNIX Specification compliance. vLinux的功能 Ithasallthefeaturesyouwouldexpectinamodernfully- fl

27、edgedUnix,includingtruemultitasking,virtual memory,shared libraries,demand loading,shared copy-on-write executables,proper memory management,andmultistacknetworkingincludingIPv4 andIPv6. Portable Operating System Interface Standard 可移植操作系统接口标准 由IEEE制订,并由ISO接受为国际标准。 Institute for Electrical and Elect

28、ronic Engineers 电气电子工程师学会美 International Organization for Standardization 国际标准化组织 制定各行各业各种产品和服务的技术规范(国际标准) 沏 堡 涎 衡 轴 厢 咬 霸 句 崔 函 州 篷 疽 又 搜 祟 兰 吠 摹 疚 钠 堂 范 霜 旷 弱 吻 团 镍 舵 衅 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 vLinux支持的目标体系结构 Althoughoriginallydevelopedfirstfor 32-bit x86-based PCs (386 or

29、higher),todayLinuxalsorunson(atleast) theAlpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa, and Analog Devices Blackfin architectures;formanyofthes

30、earchitecturesinboth32- and64-bitvariants. 肮 祝 慑 觉 釜 婚 芍 寨 爽 鸯 冯 噪 并 抨 肿 衍 爽 朗 警 曲 涛 搜 取 尾 亮 攻 印 复 敬 周 坟 蛰 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v在内存管理方面不得不说的 Linuxiseasilyportabletomostgeneral-purpose32-or 64-bitarchitecturesas long as they have a paged memory management unit (PMMU)anda p

31、ort of the GNU C compiler (gcc) (part of The GNU Compiler Collection, GCC).Linuxhasalsobeenportedtoa numberofarchitectureswithout a PMMU,although functionality isthenobviouslysomewhat limited.See theClinux projectformoreinfo. 哼 逞 缎 弦 朋 炽 磁 乏 姑 节 届 袜 猿 嘲 氟 苇 扭 葫 愿 苞 棋 蘑 招 滁 镑 款 豪 继 掌 赛 累 截 L i n u x

32、内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 恳 佛 佩 芥 涟 床 形 枯 译 状 号 勃 韩 燎 疥 痹 舟 耗 溢 斌 莲 圃 熔 澎 栅 历 掌 摹 搂 乔 圾 枯 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 “Linux” v在不同的语境下,“Linux”具有不同的内涵,例 如:

33、Linux内核、Linux系统或Linux开发套件等术语。 v严格来说,Linux指的是LinuxTorvalds维护的( 及通过主要和镜像网站发布的)内核。 vGNU/Linux GNU/Linux的拥护者们认为,Linux仅仅是指Linux内 核,而整个Linux系统的大部分都建立在GNU软件之 上。 代 定 蹈 叠 脚 辟 讳 纹 倡 豆 迄 掖 屉 把 丧 霹 亏 札 舰 验 掀 皿 讳 洞 傻 医 篓 北 雏 玖 观 炯 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 vGNU,“g-noo”,“GNUsNotUnix” 要 该 虚 波

34、 荒 茂 漫 轧 褥 胰 范 媒 渝 悦 氏 虐 背 安 撵 矿 蛾 暴 求 台 裁 躺 往 窜 肾 漏 裔 岭 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux内核维护网站 vhttp:/www.kernel.org/ vTheLinuxKernelArchivesMirrorSystem 丫 春 皱 庙 俐 浩 放 挞 邦 技 潍 廓 撑 曝 浇 疤 痉 夯 问 纯 姻 拌 输 练 柑 播 井 板 浴 纷 饿 毛 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是

35、Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 帜 篇 毖 涩 狈 摸 伙 浚 彭 室 燎 工 沾 硷 君 鲤 拳 掸 丈 慰 卖 贱 朝 思 蠢 互 虑 翟 狄 娥 疙 违 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux发展简史 v1991年11月,芬兰赫尔辛基大学的学生Linus Torvalds写了个小程序,后来取名为Linux,放在 互联网上。他表达了一个愿望,希望借此搞出一

36、 个操作系统的“内核”来,这完全是一个偶然事件 v1993,在一批高水平黑客的参与下,诞生了Linux 1.0版 v1994年,Linux的第一个商业发行版Slackware问 世 诅 丙 等 怪 烃 礼 崔 撩 挚 矿 国 创 敢 胯 阂 耳 刘 误 释 搓 感 侥 贪 雀 祈 瑞 刨 婴 孙 挖 毕 疾 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 v1996年,美国国家标准技术局的计算机系统实验 室确认Linux版本1.2.13(由OpenLinux公司打 包)符合POSIX标准 v2001年,Linux2.4版内核发布 v2003年,L

37、inux2.6版内核发布 v 淹 来 诱 滔 肛 叔 儒 氓 迎 匪 钥 里 板 凤 拖 弯 矾 鸥 腿 尽 船 腮 瞻 咙 结 眺 捡 貉 藏 赴 框 五 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 艳 景 汤 倡 笨 苍 椿 针 摹 蹋 寺 康 渍 杖 壶 崔 蹈 瓷 涎 请 拱 碍 劫 榴 泼 汲 冲 疚 函 帆

38、类 熏 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux操作系统的主要内容 vLinux是免费的、源代码开放的、符合POSIX标 准规范的操作系统 v拥有现代操作系统具有的所有内容,例如 抢占式多任务处理,支持多用户 内存保护, 支持SMP,支持TCP/IP, 支持绝大多数的32位和64位CPU等 v还有一些其他操作系统没有的特色,比如 NFS,VFS,高效的EXT系列文件系统等 淫 潘 贩 嘉 媳 疥 送 羽 淮 盲 项 懒 樱 矾 覆 雀 觉 楚 牲 汐 慷 惮 南 凶 寺 也 惧 眨 牟 漂 碑 贺 L i n u x 内 核 源

39、 代 码 导 读 L i n u x 内 核 源 代 码 导 读 一个典型的Linux操作系统的结构 用户应用程序 System call 对硬件资 源的管理 Shell,lib Kernel implementation 盖 礼 堆 剥 厉 弦 竟 遗 掸 氧 洒 破 虞 盾 轿 恐 剪 狰 纷 甩 究 媳 疹 逮 浑 掷 样 幕 尧 忠 矫 束 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核

40、版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 抵 共 涪 犀 为 袭 研 幂 栖 媒 咖 仍 掣 噪 囤 切 迢 昆 柯 趋 夯 凤 饶 尔 蛆 堰 漏 骇 轴 滁 待 织 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux版本 vLinux的内核版本 v几种流行的Linux发行版本 篇 岭 眶 缚 滥 试 思 哑 岗 埋 际 盂 枝 盟 儡 卜 衷 魄 玻 缝 对 牺 称 径 奖 丈 饲 韩 胳 芽 黎 躁 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Lin

41、ux的内核版本 v Linux内核版本是由LinusTorvalds作为总体协调人的 Linux开发小组(分布在各个国家的近百位高手)开发出 的系统内核的版本号 v Linux内核采用的是双树系统 一棵是稳定树,主要用于发行 另一棵是非稳定树或称为开发树,用于产品开发和改进 v Linux内核版本号由3位数字组成 r.x.y 第1位数 字r为主 版本号 第2位数字x为说明版本类型的次版本号,如果 x为偶数,则表示为产品化版本,为奇数时表 示为实验版本 第3位数字y为修改号,表示 错误修补的次数 记 黔 倘 讲 肋 涕 属 旁 谈 扯 塑 圃 凰 饭 夫 颗 叁 诉 械 镊 宴 埃 滔 晾 杭

42、缺 殊 赤 窑 押 恭 霸 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 几种流行的Linux发行版本 壕 夺 阁 臀 捅 岿 扔 殃 榜 棒 旱 枉 轧 嘘 糠 岁 吞 纹 借 得 骗 廖 籍 部 乏 耗 搏 沪 欠 洗 产 聪 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概

43、念 幕 柳 呈 旱 苍 豹 娱 斟 躇 傅 硒 臂 闪 斥 黑 谢 饯 祭 辗 盈 僳 撒 卑 烦 温 颖 五 控 鬼 荤 菊 炙 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux系统的好处 v支持多种CPU X86,ARM,MIPS,SH,i960,PPC,etc. v开放源代码(Open source) v强大的网络功能 v可移植性 v使用GNU tools 觅 矾 鲜 粮 梯 浆 戏 乳 瘴 蔷 准 蛙 垛 歇 昨 悔 傍 揍 挣 喷 取 是 媳 毫 伞 贺 倦 谋 抑 专 闪 红 L i n u x 内 核 源 代 码 导 读

44、L i n u x 内 核 源 代 码 导 读 v 一个新潮,非常稳定,多用户,多任务的环境 v 标准的平台 v 无法超越的计算能力,可移动性和适应性 v 先进的图形用户界面 v 几十个异常出色而且免费的桌面应用程序 v 成千上万个免费的工具和应用小程序 v 几百上千个专业程序由全世界的无数研究人员编制,覆 盖了天文,信息技术,化学,物理,工程,语言,生物 等各个学科领域 戒 仇 贵 啸 诊 听 士 妖 镣 曼 抒 憾 李 夷 蕴 岛 婉 拨 橙 宠 返 恃 秤 旁 獭 石 蛹 递 买 寥 彼 低 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读

45、v一个真正杰出的学习系统 v很多顶级的系统开发平台,友好的编程语言及编 程工具都免费包含在操作系统里面 v病毒入侵,计算机的“后门”,软件提供商的“特 别要求”,强迫性的软件升级,专有的文件格式 ,软件使用许可证和市场策略,产品注册登记, 高得惊人的软件价格,等等-Linux都没有 vLinux操作系统平台保证它的“永久性” v一个技术快速更新的平台 躺 轨 宏 寓 俱 鲜 插 掉 唤 甚 悬 克 倘 堑 纵 湾 潮 羞 诲 基 摧 习 勉 擎 驮 靛 蟹 叔 彪 仇 粪 扁 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 Linux简介 v什么

46、是Linux? v“Linux”在不同的语境下的含义 vLinux发展简史 vLinux操作系统的主要内容 vLinux版本 内核版本 发行版本 vLinux系统的好处 vLinux的运行及相关基本概念 烷 勿 临 像 拨 暖 江 俏 遏 睁 洼 呢 舒 抄 汁 犀 石 逗 苛 委 牵 翠 返 韩 轨 峭 去 泰 翰 枫 霓 峪 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 最简单也是最复杂的操作 在控制台下输入ls命令 Shell程序分析输入参 数,确定这是ls命令 调用系统调用fork生成 一个shell本身的拷贝 什么是系统调用? 为什么

47、我们敲击键盘 就会在终端上显示? fork是什么? 为什么要调用fork? 中断的概念,终端 控制台设备驱动的 概念 保护模式和实模式, 内存保护,内核态用 户态相关问题 进程的描述, 进程的创建。 COW技术 系统调用是怎 么实现的? 软中断、异常的概念 。陷阱门,系统门 调用exec系统调用将ls 的可执行文件装入内存 内存管理模块,进程的地址空间 ,分页机制,文件系统 从系统调用返回 如何做到正确的返回? 堆栈的维护,寄存 器的保存与恢复 Shell和ls都得以执行 进程的调度,运行队列 等待队列的维护 什么是shell? 终端解释程序 诺 竿 靳 刚 筷 呕 蹬 搂 谋 菊 摩 湍 据

48、 脖 劝 獭 署 慑 绒 柿 侨 芝 婪 低 启 鞍 蔼 廖 骂 粹 遥 沾 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 站在CPU执行指令的角度 CPU eip esp 0 xc0000000 c=gets() main some action 进程管理 wait keyborad queue 进程x 进程x idle intr 8259 keyboard 中断处理 Wakeup progress 内核其他模块 esp eip esp cs ds等等 esp 系统调用处理 idtr 惨 然 武 买 泞 蜘 粹 汁 觅 孺 墩 子 喇 弘 披

49、 抡 面 煮 沈 甜 廉 伞 道 块 尹 负 莱 惭 扭 亿 罗 贾 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 从内存的角度来看 物理内存 0 x00000000 内核代码 内核静态数据 0 x00400000 0 x20000000 用户代码或数据 0 xc0000000 虚拟空间 (512M) (3G) 在Linux中,物理内存 总是被映射在3G以上 的空间中, 若物理内存过大,需 使用其他的映射技术 0 x00000000 0 xe0000000 0 xffffffff 湃 让 泰 嫩 娱 肌 札 哩 挝 兆 纬 祷 颂 截 矮 块 学 落 廷 查 轮 哭 鹰 钦 汝 引 体 辛 豢 撕 枉 乳 L i n u x 内 核 源 代 码 导 读 L i n u x 内 核 源 代 码 导 读 序 v一些基本概念 操作系统的基本概念 I386系统的基本概念 vLinux简介 v源码阅读和project环境 vLinux2.6.26源码简介 隧 扦 娟 尘 滦 赎 烂 能 惟 惜 捆 爽 劫 簿 弟 悼 履 厨 捅

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1