Linux内核源代码(free).ppt

上传人:小飞机 文档编号:6511186 上传时间:2023-11-08 格式:PPT 页数:66 大小:533.50KB
返回 下载 相关 举报
Linux内核源代码(free).ppt_第1页
第1页 / 共66页
Linux内核源代码(free).ppt_第2页
第2页 / 共66页
Linux内核源代码(free).ppt_第3页
第3页 / 共66页
Linux内核源代码(free).ppt_第4页
第4页 / 共66页
Linux内核源代码(free).ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

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

1、Linux内核源代码导读(免费),中国科学技术大学计算机系陈香兰(05513606864)Spring 2009,序,一些基本概念操作系统的基本概念I386系统的基本概念Linux简介源码阅读和project环境Linux 2.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,堆栈指针(stack pointer)ebp,基址指针(base pointer)堆栈操作push栈顶地址减少4个字节(32位)pop栈顶地址增加4个字节ebp在C语言中用作记录当前函数调用基址,esp,ebp,高地址,低地址,esp,/调用者call target,利用堆栈实现函数调用和返回,/建立被调用者函数的堆栈框架pushl%ebpmovl%esp,%ebp/拆除被调用者函数的堆栈框架movl%ebp,%esppopl%ebp r

4、et,/被调用者函数体/do sth.,call指令:1)将下一条指令的地址A保存在栈顶2)设置eip指向被调用程序代码开始处,将地址A恢复到eip中,函数堆栈框架的形成,call xxx执行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,观察程序运行时堆栈的变化,mainp1(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,mainp2(x,y),p1,p2p1(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执行级别就对应着内核态而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动举例:intel x86 CPU有四种不同的执行级别0-3,Linux只使用了其中的0级和3级分别来表示内核态和用户态,如何区分一段代码是核心态还是用户态c

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

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

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

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

12、和project环境Linux 2.6.26 源码简介,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,什么是Linux?,Linux是一个类Unix(Unix-like)的操作系统,在1991年发行了它的第一个版本在Linux内核维护网站上,“What is Linux?”,From“”,Linux的来历和目标:Linux is a clone of the operating system Unix,written from scratch b

13、y Linus Torvalds with assistance from a loosely-knit team of hackers across the Net.It aims towards POSIX and Single UNIX Specification compliance.Linux的功能It has all the features you would expect in a modern fully-fledged Unix,including true multitasking,virtual memory,shared libraries,demand loadin

14、g,shared copy-on-write executables,proper memory management,and multistack networking including IPv4 and IPv6.,Portable Operating System Interface Standard可移植操作系统接口标准由IEEE制订,并由ISO接受为国际标准。,Institute for Electrical and Electronic Engineers电气电子工程师学会美,International Organization for Standardization国际标准化组

15、织制定各行各业各种产品和服务的技术规范(国际标准),Linux支持的目标体系结构Although originally developed first for 32-bit x86-based PCs(386 or higher),today Linux also runs on(at least)the Alpha 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,

16、Renesas H8/300,NEC V850,Tensilica Xtensa,and Analog Devices Blackfin architectures;for many of these architectures in both 32-and 64-bit variants.,在内存管理方面不得不说的Linux is easily portable to most general-purpose 32-or 64-bit architectures as long as they have a paged memory management unit(PMMU)and a po

17、rt of the GNU C compiler(gcc)(part of The GNU Compiler Collection,GCC).Linux has also been ported to a number of architectures without a PMMU,although functionality is then obviously somewhat limited.See the Clinux project for more info.,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux

18、版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,“Linux”,在不同的语境下,“Linux”具有不同的内涵,例如:Linux内核、Linux系统或Linux开发套件等术语。严格来说,Linux指的是Linux Torvalds维护的(及通过主要和镜像网站发布的)内核。GNU/LinuxGNU/Linux的拥护者们认为,Linux仅仅是指Linux内核,而整个Linux系统的大部分都建立在GNU软件之上。,GNU,“g-noo”,“GNUs Not Unix”,Linux内核维护网站,The Linux Kernel Archives Mirror System,Lin

19、ux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,Linux发展简史,1991年11月,芬兰赫尔辛基大学的学生 Linus Torvalds写了个小程序,后来取名为Linux,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的“内核”来,这完全是一个偶然事件1993,在一批高水平黑客的参与下,诞生了Linux 1.0 版 1994年,Linux 的第一个商业发行版 Slackware 问世,1996年,美国国家标准技术局的计算机系统实验室确认 Li

20、nux 版本(由 Open Linux 公司打包)符合 POSIX 标准2001年,Linux2.4版内核发布 2003年,Linux2.6版内核发布,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,Linux操作系统的主要内容,Linux是免费的、源代码开放的、符合POSIX标准规范的操作系统 拥有现代操作系统具有的所有内容,例如 抢占式多任务处理,支持多用户内存保护,支持SMP,支持TCP/IP,支持绝大多数的32位和64位CPU 等还有一些其

21、他操作系统没有的特色,比如 NFS,VFS,高效的EXT系列文件系统等,一个典型的Linux操作系统的结构,用户应用程序,System call,对硬件资源的管理,Shell,lib,Kernel implementation,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,Linux版本,Linux的内核版本几种流行的Linux发行版本,Linux的内核版本,Linux内核版本是由Linus Torvalds作为总体协调人的Linux开发小组(分

22、布在各个国家的近百位高手)开发出的系统内核的版本号 Linux内核采用的是双树系统一棵是稳定树,主要用于发行另一棵是非稳定树或称为开发树,用于产品开发和改进 Linux内核版本号由3位数字组成,第1位数字r为主版本号,第2位数字x为说明版本类型的次版本号,如果x为偶数,则表示为产品化版本,为奇数时表示为实验版本,第3位数字y为修改号,表示错误修补的次数,几种流行的Linux发行版本,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,Linux系统的好

23、处,支持多种CPUX86,ARM,MIPS,SH,i960,PPC,etc.开放源代码(Open source)强大的网络功能可移植性使用GNU tools,一个新潮,非常稳定,多用户,多任务的环境 标准的平台 无法超越的计算能力,可移动性和适应性 先进的图形用户界面 几十个异常出色而且免费的桌面应用程序 成千上万个免费的工具和应用小程序 几百上千个专业程序由全世界的无数研究人员编制,覆盖了天文,信息技术,化学,物理,工程,语言,生物等各个学科领域,一个真正杰出的学习系统 很多顶级的系统开发平台,友好的编程语言及编程工具都免费包含在操作系统里面 病毒入侵,计算机的“后门”,软件提供商的“特别要

24、求”,强迫性的软件升级,专有的文件格式,软件使用许可证和市场策略,产品注册登记,高得惊人的软件价格,等等-Linux都没有Linux操作系统平台保证它的“永久性”一个技术快速更新的平台,Linux简介,什么是Linux?“Linux”在不同的语境下的含义Linux发展简史Linux操作系统的主要内容Linux版本内核版本发行版本Linux系统的好处Linux的运行及相关基本概念,最简单也是最复杂的操作,在控制台下输入ls命令,Shell程序分析输入参数,确定这是ls命令,调用系统调用fork生成一个shell本身的拷贝,什么是系统调用?,为什么我们敲击键盘就会在终端上显示?,fork是什么?为

25、什么要调用fork?,中断的概念,终端控制台设备驱动的概念,保护模式和实模式,内存保护,内核态用户态相关问题,进程的描述,进程的创建。COW技术,系统调用是怎么实现的?,软中断、异常的概念。陷阱门,系统门,调用exec系统调用将ls的可执行文件装入内存,内存管理模块,进程的地址空间,分页机制,文件系统,从系统调用返回,如何做到正确的返回?,堆栈的维护,寄存器的保存与恢复,Shell和ls都得以执行,进程的调度,运行队列等待队列的维护,什么是shell?,终端解释程序,站在CPU执行指令的角度,CPU,eip,esp,0 xc0000000,c=gets(),main,some action,进

26、程管理,wait keyboradqueue,进程x,进程x,idle,intr,8259,keyboard,中断处理,Wakeup progress,内核其他模块,esp,eipespcsds等等,esp,系统调用处理,idtr,从内存的角度来看,物理内存,0 x00000000,内核代码内核静态数据,0 x00400000,0 x20000000,用户代码或数据,0 xc0000000,虚拟空间,(512M),(3G),在Linux中,物理内存总是被映射在3G以上的空间中,若物理内存过大,需使用其他的映射技术,0 x00000000,0 xe0000000,0 xffffffff,序,一些

27、基本概念操作系统的基本概念I386系统的基本概念Linux简介源码阅读和project环境Linux 2.6.26 源码简介,源码阅读和project环境,分析和实验验证环境VMwareSourceInsight,VMware,模拟x86硬件平台可以在Windows、Linux等平台上运行VMWare模拟出来的硬件包括:主板、内存、硬盘(IDE和SCSI)、DVD/CD-ROM、软驱、网卡、声卡、串口、并口和USB口。上述硬件是固定型号的,与Host OS的实际硬件无关可以直接从ISO文件上安装在一个VMware上安装的的操作系统形成的虚拟机,可以拷贝到其他装有VMware的机器上,Sourc

28、eInsight,源代码阅读和编辑工具拥有内置的对C/C+,C#和Java等程序的分析。能分析源代码并动态维护符号数据库,能自动显示有用的上下文信息。到http:/上可以下载到它的试用版,试用期估计在30天左右,当前源码文件,当前文件的符号表,当前所看的符号上下文,当前所看符号的调用关系,所有文件列表,Project相关信息,按目录,文件列表,文件类型配置信息,符号表,符号类型分类,序,一些基本概念操作系统的基本概念I386系统的基本概念Linux简介源码阅读和project环境Linux 2.6.26 源码简介,Linux 2.6.26 源码简介,了解linux的源码组织看目录结构了解Makefile在目录和编译中的作用,Project 1,Project1:安装VMware,并在VMware中安装Kubuntu 8.10安装source insight,并建立的源码工程提示:虚拟机安装好之后,可以拷贝,Thanks!,The end.,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号