Linux内核源代码(free)

上传人:灯火****19 文档编号:121896659 上传时间:2020-02-27 格式:PPT 页数:66 大小:1.06MB
返回 下载 相关 举报
Linux内核源代码(free)_第1页
第1页 / 共66页
Linux内核源代码(free)_第2页
第2页 / 共66页
Linux内核源代码(free)_第3页
第3页 / 共66页
Linux内核源代码(free)_第4页
第4页 / 共66页
Linux内核源代码(free)_第5页
第5页 / 共66页
点击查看更多>>
资源描述

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

1、Linux内核源代码导读 免费 中国科学技术大学计算机系陈香兰 0551 3606864 xlanchen Spring2009 序 一些基本概念操作系统的基本概念I386系统的基本概念Linux简介源码阅读和project环境Linux2 6 26源码简介 操作系统的基本概念 任何计算机系统都包含一个基本的程序集合 称为操作系统 内核 进程管理 进程调度 进程间通讯机制 内存管理 中断异常处理 文件系统 I O系统 网络部分 其他程序 例如函数库 shell程序等等 操作系统的目的与硬件交互 管理所有的硬件资源为用户程序 应用程序 提供一个良好的执行环境 I386系统的基本概念 代码的运行堆

2、栈的概念内核态与用户态中断 异常 系统调用虚拟内存 代码的运行 关键寄存器cs eip 总是指向下一条的指令地址顺序执行 总是指向地址连续的下一条指令跳转 分支 执行这样的指令的时候 cs eip的值会根据程序需要被修改call 将当前cs eip的值压入栈顶 cs eip指向被调用函数的入口地址ret 从栈顶弹出原来保存在这里的cs eip的值 放入cs eip中发生中断时 I386系统的基本概念 代码的运行堆栈的概念内核态与用户态中断 异常 系统调用虚拟内存 堆栈的概念 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间函数调用框架传递参数保存返回地址提供局部变量空间等等C语言编译器

3、对堆栈的使用有一套的规则了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础以x86体系结构为例 堆栈寄存器和堆栈操作 堆栈相关的寄存器esp 堆栈指针 stackpointer ebp 基址指针 basepointer 堆栈操作push栈顶地址减少4个字节 32位 pop栈顶地址增加4个字节ebp在C语言中用作记录当前函数调用基址 esp ebp 高地址 低地址 esp 调用者 calltarget 利用堆栈实现函数调用和返回 建立被调用者函数的堆栈框架pushl ebpmovl esp ebp 拆除被调用者函数的堆栈框架movl ebp esppopl ebpret

4、 被调用者函数体 dosth call指令 1 将下一条指令的地址A保存在栈顶2 设置eip指向被调用程序代码开始处 将地址A恢复到eip中 函数堆栈框架的形成 callxxx执行call之前执行call时 cs eip原来的值指向call下一条指令 该值被保存到栈顶 然后cs eip的值指向xxx的入口地址进入xxx第一条指令 pushl ebp第二条指令 movl esp ebp函数体中的常规操作 可能会压栈 出栈退出xxxmovl ebp esppopl ebpret esp ebp 高地址 低地址 cs eip esp ebp esp ebp esp C语言中还使用堆栈进行参数的传递局

5、部变量的使用 一段小程序 源文件 test c这是一个很简单的C程序main函数中调用了函数p1和p2首先使用gcc生成test c的可执行文件test然后使用objdump S获得test的反汇编文件 eip eip eip eip 观察程序运行时堆栈的变化 main p1 c p2 x y p1 p2 main p2 p1 程序的代码段 堆栈 eip esp main堆栈 c eip eip eip p1的堆栈 esp eip eip eip x y eip p2堆栈 eip 另一段小程序和前一段小程序稍有不同 在这个小程序中 main函数中调用了函数p2 而在p2的执行过程中又调用了函数

6、p1 观察程序运行时堆栈的变化 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 eip c eip p1堆栈 esp I386系统的基本概念 代码的运行堆栈的概念内核态与用户态中断 异常 系统调用虚拟内存 用户态和内核态的概念 Why 假定不区分用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读 写物理内存 因此 要区分用户态和内核态 禁止用户程序和底层硬件直接打交道 最简单的例子 如果用

7、户程序往硬件控制寄存器写入不恰当的值 可能导致硬件无法正常工作 禁止用户程序访问任意的物理内存 否则可能会破坏其他程序的正常执行 如果对核心内核所在的地址空间写入数据的话 会导致系统崩溃 什么是用户态和内核态 一般现代CPU都有几种不同的指令执行级别在高执行级别下 代码可以执行特权指令 访问任意的物理地址 这种CPU执行级别就对应着内核态而在相应的低级别执行状态下 代码的掌控范围会受到限制 只能在对应级别允许的范围内活动举例 intelx86CPU有四种不同的执行级别0 3 Linux只使用了其中的0级和3级分别来表示内核态和用户态 如何区分一段代码是核心态还是用户态cs寄存器的最低两位表明了

8、当前代码的特权级CPU每条指令的读取都是通过cs eip这两个寄存器 其中cs是代码段选择寄存器 eip是偏移量寄存器 上述判断由硬件完成一般来说在Linux中 地址空间是一个显著的标志 0 xc0000000以上的地址空间只能在内核态下访问 0 x00000000 0 xbfffffff的地址空间在两种状态下都可以访问注意 这里所说的地址空间是逻辑地址而不是物理地址 I386系统的基本概念 代码的运行堆栈的概念内核态与用户态中断 异常 系统调用虚拟内存 中断和异常 中断 广义 会改变处理器执行指令的顺序 通常与CPU芯片内部或外部硬件电路产生的电信号相对应中断 异步的 由硬件随机产生 在程序

9、执行的任何时候可能出现异常 同步的 在 特殊的或出错的 指令执行时由CPU控制单元产生我们用 中断信号 来通称这两种类型的中断 设备 设备控制器 中断控制器 IRQ CPU INTR 中断信号的作用 中断信号提供了一种特殊的方式 使得CPU转去运行正常程序之外的代码比如一个外设采集到一些数据 发出一个中断信号 CPU必须立刻响应这个信号 否则数据可能丢失当一个中断信号到达时 CPU必须停止它当前正在做的事 并且切换到一个新的活动为了做到这这一点 在进程的内核态堆栈保存程序计数器的当前值 即eip和cs寄存器 以便处理完中断的时候能正确返回到中断点 并把与中断信号相关的一个地址放入进程序计数器

10、从而进入中断的处理 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提供了一组接口 系统调用把用户从底层的硬件编程中解放出来极大的提高了系统的安全性使用户程序具有可移植性基于I386的Linux使用int0 x80进行系统调用 I386系统的基本概念 代码的运行堆栈的概念内核态与用户态中断 异常 系统调用虚拟内存 虚拟内存 物理内存有限 是一种稀缺资源局部性原理空间局部性时间局部性按需调页页框利用磁盘上的交换空间 进程的虚拟地址空间独立的地址空间 32位 4GB 每个进程一个在Linux中 3G以上是内核空间 3G以下是用户空间4G的进程地址空间使用进程私有的二级页表进行地址转换 虚拟地

11、址 物理地址 页面大小 4KB页目录 页表若对应的内容在内存中 则对应的二级页表项记录相应的物理页框信息否则根据需要进行装载或者出错处理 进程调度后 执行一个新的被调度的进程之前 要先进行页表切换Linux中的内核空间每个进程3G以上的空间用作内核空间从用户地址空间进入内核地址空间不经过页表切换而是通过中断 异常 系统调用入口 也只能如此 小结 根据代码的执行 中断 异常 系统调用来理解操作系统操作系统提供中断 异常处理操作系统提供系统调用应用开发人员编写应用程序驱动开发人员编写驱动应用程序运行 序 一些基本概念操作系统的基本概念I386系统的基本概念Linux简介源码阅读和project环境

12、Linux2 6 26源码简介 Linux简介 什么是Linux Linux 在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念 什么是Linux Linux是一个类Unix Unix like 的操作系统 在1991年发行了它的第一个版本在Linux内核维护网站上 WhatisLinux From www kernel org Linux的来历和目标 LinuxisacloneoftheoperatingsystemUnix writtenfromscratchbyLinusTorvaldswit

13、hassistancefromaloosely knitteamofhackersacrosstheNet ItaimstowardsPOSIXandSingleUNIXSpecificationcompliance Linux的功能Ithasallthefeaturesyouwouldexpectinamodernfully fledgedUnix includingtruemultitasking virtualmemory sharedlibraries demandloading sharedcopy on writeexecutables propermemorymanagement

14、 andmultistacknetworkingincludingIPv4andIPv6 PortableOperatingSystemInterfaceStandard可移植操作系统接口标准由IEEE制订 并由ISO接受为国际标准 InstituteforElectricalandElectronicEngineers电气电子工程师学会 美 InternationalOrganizationforStandardization国际标准化组织制定各行各业各种产品和服务的技术规范 国际标准 Linux支持的目标体系结构Althoughoriginallydevelopedfirstfor32 b

15、itx86 basedPCs 386orhigher todayLinuxalsorunson atleast theAlphaAXP SunSPARC Motorola68000 PowerPC ARM HitachiSuperH IBMS 390 MIPS HPPA RISC IntelIA 64 AMDx86 64 AXISCRIS RenesasM32R AtmelAVR32 RenesasH8 300 NECV850 TensilicaXtensa andAnalogDevicesBlackfinarchitectures formanyofthesearchitecturesinb

16、oth32 and64 bitvariants 在内存管理方面不得不说的Linuxiseasilyportabletomostgeneral purpose32 or64 bitarchitecturesaslongastheyhaveapagedmemorymanagementunit PMMU andaportoftheGNUCcompiler gcc partofTheGNUCompilerCollection GCC LinuxhasalsobeenportedtoanumberofarchitectureswithoutaPMMU althoughfunctionalityisthenobviouslysomewhatlimited Seethe Clinuxprojectformoreinfo Linux简介 什么是Linux Linux 在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念 Linux 在不同的语境下 Linux 具有不同的内涵 例如 Linux内核 Linux系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号