linux操作系统分析课件

上传人:阳*** 文档编号:110854042 上传时间:2022-06-19 格式:PPT 页数:57 大小:1.14MB
收藏 版权申诉 举报 下载
linux操作系统分析课件_第1页
第1页 / 共57页
linux操作系统分析课件_第2页
第2页 / 共57页
linux操作系统分析课件_第3页
第3页 / 共57页
资源描述:

《linux操作系统分析课件》由会员分享,可在线阅读,更多相关《linux操作系统分析课件(57页珍藏版)》请在装配图网上搜索。

1、Linux操作系统分析操作系统分析中国科学技术大学计算机系中国科学技术大学计算机系陈香兰(陈香兰(051287161312)助教:孟宁助教:孟宁Fall 20092022-6-19linux操作系统分析操作系统分析2第一章、绪论第一章、绪论v主要内容Linux简介一些预备知识l操作系统基本概念l堆栈l内核态 vs 用户态l虚拟内存分析和实验验证环境lVMware ; virtualboxlSourceInsight相关工具介绍:GNU Tools等2022-6-19linux操作系统分析操作系统分析3第一章、绪论第一章、绪论v主要内容Linux简介简介一些预备知识l操作系统基本概念l堆栈l内核

2、态 vs 用户态l虚拟内存分析和实验验证环境lVMware ; virtualboxlSourceInsight相关工具介绍:GNU Tools等2022-6-19linux操作系统分析操作系统分析4什么是什么是Linux?vLinux是一个类Unix(Unix-like)的操作系统,在1991年发行了它的第一个版本v在Linux内核维护网站上,“What is Linux?”2022-6-19linux操作系统分析操作系统分析5From “”vLinux的来历和目标:Linux is a clone of the operating system Unix, written from scr

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

4、emand loading, 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 Standardi

5、zation国际标准化组织制定各行各业各种产品和服务的技术规范(国际标准)2022-6-19linux操作系统分析操作系统分析6vLinux支持的目标体系结构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

6、IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa, and Analog Devices Blackfin architectures; for many of these architectures in both 32- and 64-bit variants.2022-6-19linux操作系统分析操作系统分析7v在内存管理方面不得不说的Linux is easily portable to most general-purpose 32-

7、 or 64-bit architectures as long as they have a paged memory management unit (PMMU) and a port 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. Se

8、e the Clinux project for more info.2022-6-19linux操作系统分析操作系统分析8“Linux”v在不同的语境下,“Linux”具有不同的内涵,例如:Linux内核、Linux系统或Linux开发套件等术语。v严格来说,Linux指的是Linux Torvalds维护的(及通过主要和镜像网站发布的)内核。vGNU/LinuxGNU/Linux的拥护者们认为,Linux仅仅是指Linux内核,而整个Linux系统的大部分都建立在GNU软件之上。2022-6-19linux操作系统分析操作系统分析9vGNU,“g-noo”,“GNUs Not Unix”

9、2022-6-19linux操作系统分析操作系统分析10Linux内核维护网站内核维护网站vThe Linux Kernel Archives Mirror System2022-6-19linux操作系统分析操作系统分析11Linux发展简史发展简史v1991年11月,芬兰赫尔辛基大学的学生 Linus Torvalds写了个小程序,后来取名为Linux,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的“内核”来,这完全是一个偶然事件v1993,在一批高水平黑客的参与下,诞生了Linux 1.0 版 v1994年,Linux 的第一个商业发行版 Slackware 问世2022-6

10、-19linux操作系统分析操作系统分析12 v1996年,美国国家标准技术局的计算机系统实验室确认 Linux 版本 1.2.13(由 Open Linux 公司打包)符合 POSIX 标准v2001年,Linux2.4版内核发布 v2003年,Linux2.6版内核发布v2022-6-19linux操作系统分析操作系统分析13Linux操作系统的主要内容操作系统的主要内容 vLinux是免费的、源代码开放的、符合POSIX标准规范的操作系统 v拥有现代操作系统具有的所有内容,例如 抢占式多任务处理,支持多用户内存保护,支持SMP,支持TCP/IP,支持绝大多数的32位和64位CPU 等v还

11、有一些其他操作系统没有的特色,比如 NFS,VFS,高效的EXT系列文件系统等2022-6-19linux操作系统分析操作系统分析14Linux版本版本vLinux的内核版本v几种流行的Linux发行版本2022-6-19linux操作系统分析操作系统分析15Linux的内核版本的内核版本v Linux内核版本是由Linus Torvalds作为总体协调人的Linux开发小组(分布在各个国家的近百位高手)开发出的系统内核的版本号 v Linux内核采用的是双树系统 一棵是稳定树,主要用于发行 另一棵是非稳定树或称为开发树,用于产品开发和改进 v Linux内核版本号由3位数字组成 r.x.y第

12、1位数字r为主版本号 第2位数字x为说明版本类型的次版本号,如果x为偶数,则表示为产品化版本,为奇数时表示为实验版本 第3位数字y为修改号,表示错误修补的次数 2022-6-19linux操作系统分析操作系统分析16几种流行的几种流行的Linux发行版本发行版本2022-6-19linux操作系统分析操作系统分析17Linux系统的好处系统的好处v支持多种CPUX86, ARM, MIPS, SH, i960, PPC, etc.v开放源代码(Open source)v强大的网络功能v可移植性v使用GNU tools2022-6-19linux操作系统分析操作系统分析18v 一个新潮,非常稳定

13、,多用户,多任务的环境 v 标准的平台 v 无法超越的计算能力,可移动性和适应性 v 先进的图形用户界面 v 几十个异常出色而且免费的桌面应用程序 v 成千上万个免费的工具和应用小程序 v 几百上千个专业程序由全世界的无数研究人员编制,覆盖了天文,信息技术,化学,物理,工程,语言,生物等各个学科领域2022-6-19linux操作系统分析操作系统分析19v 一个真正杰出的学习系统 v 很多顶级的系统开发平台,友好的编程语言及编程工具都免费包含在操作系统里面 v 病毒入侵,计算机的“后门”,软件提供商的“特别要求”,强迫性的软件升级,专有的文件格式,软件使用许可证和市场策略,产品注册登记,高得惊

14、人的软件价格,等等 -Linux都没有v Linux操作系统平台保证它的“永久性”v 一个技术快速更新的平台2022-6-19linux操作系统分析操作系统分析20第一章、绪论第一章、绪论v主要内容Linux简介一些预备知识一些预备知识l操作系统基本概念操作系统基本概念l堆栈堆栈l内核态内核态 vs 用户态用户态l虚拟内存虚拟内存分析和实验验证环境lVMware ; virtualboxlSourceInsight相关工具介绍:GNU Tools等2022-6-19linux操作系统分析操作系统分析21操作系统的基本概念操作系统的基本概念v任何计算机系统都包含一个基本的程序集合,称为操作系统。

15、内核(进程管理,进程调度,进程间通讯机制,内存管理,中断异常处理,文件系统,I/O系统,网络部分)其他程序(例如函数库,shell程序等等)v操作系统的目的与硬件交互,管理所有的硬件资源为用户程序(应用程序)提供一个良好的执行环境2022-6-19linux操作系统分析操作系统分析22一个典型的一个典型的Linux操作系统的结构操作系统的结构 (the users) Shells and commands Compilers and interpreters System libraries System-call interface to the kernel Signals termina

16、l handling character I/O system terminal drivers File system swapping block I/O system disk and tape driver CPU scheduling page replacement demand paging virtual memoryr Kernel interface to the hardware Terminal controllers terminals Device controllers disks and tapes Memory controllers physical mem

17、ory 用户应用程序用户应用程序System call对硬件资对硬件资源的管理源的管理Shell,libKernel implementation2022-6-19linux操作系统分析操作系统分析23最简单也是最复杂的操作最简单也是最复杂的操作在控制台下输入在控制台下输入ls命令命令Shell程序分析输入参程序分析输入参数,确定这是数,确定这是ls命令命令调用系统调用调用系统调用fork生成生成一个一个shell本身的拷贝本身的拷贝什么是系统调用?为什么我们敲击键盘就会在终端上显示?fork是什么?为什么要调用fork?中断的概念,终端控制台设备驱动的概念保护模式和实模式,内存保护,内核态用

18、户态相关问题进程的描述,进程的创建。COW技术系统调用是怎么实现的?软中断、异常的概念。陷阱门,系统门调用调用exec系统调用将系统调用将ls的可执行文件装入内存的可执行文件装入内存内存管理模块,进程的地址空间,分页机制,文件系统从系统调用返回从系统调用返回如何做到正确的返回?堆栈的维护,寄存器的保存与恢复Shell和和ls都得以执行都得以执行进程的调度,运行队列等待队列的维护什么是shell?终端解释程序2022-6-19linux操作系统分析操作系统分析24一些基本但很重要的概念一些基本但很重要的概念v堆栈v内核态 vs 用户态v虚拟内存2022-6-19linux操作系统分析操作系统分析

19、25堆栈堆栈v 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架 传递参数 保存返回地址 提供局部变量空间 等等v C语言编译器对堆栈的使用有一套的规则v 了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础v 以x86体系结构为例2022-6-19linux操作系统分析操作系统分析26堆栈寄存器和堆栈操作堆栈寄存器和堆栈操作v堆栈相关的寄存器esp,堆栈指针(stack pointer)ebp,基址指针(base pointer)v堆栈操作push栈顶地址减少4个字节(32位)pop栈顶地址增加4个字节vebp在C语言中用作记录当前函数调用基址e

20、spebp高地址低地址esp2022-6-19linux操作系统分析操作系统分析27利用堆栈实现函数调用和返回利用堆栈实现函数调用和返回v其他关键寄存器cs : eip:总是指向下一条的指令地址l顺序执行:总是指向地址连续的下一条指令l跳转/分支:执行这样的指令的时候,cs : eip的值会根据程序需要被修改lcall:将当前cs : eip的值压入栈顶,cs : eip指向被调用函数的入口地址lret:从栈顶弹出原来保存在这里的cs : eip的值,放入cs : eip中l发生中断时?l?2022-6-19linux操作系统分析操作系统分析28补充知识补充知识vAT&T汇编语言和Intel汇

21、编语言AT&T汇编语言中指令的操作数顺序与Intel相反lAT&T opcodeb+w+l src, dest 寄存器:%reg 访存大小:b+w+l - 8, 16, 32 bits 引用内存地址:section:disp(base, index, scale)l实际偏移:base + index*scale + disp 缺省为缺省为0取值可以是取值可以是1,2,4,82022-6-19linux操作系统分析操作系统分析29/ 调用者call target/建立被调用者函数的堆栈框架pushl %ebpmovl %esp, %ebp/拆除被调用者函数的堆栈框架movl %ebp,%espp

22、opl %ebp ret/被调用者函数体/do sth.call指令:1)将下一条指令的地址A保存在栈顶2)设置eip指向被调用程序代码开始处将地址A恢复到eip中2022-6-19linux操作系统分析操作系统分析30函数堆栈框架的形成函数堆栈框架的形成v call xxx 执行call之前 执行call时,cs : eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs : eip的值指向xxx的入口地址v 进入xxx 第一条指令: pushl %ebp 第二条指令: movl %esp, %ebp 函数体中的常规操作,可能会压栈、出栈v 退出xxx movl %ebp,%esp

23、 popl %ebp retespebp高地址低地址cs : eipespebpespebpesp2022-6-19linux操作系统分析操作系统分析31vC语言中还使用堆栈进行参数的传递局部变量的使用2022-6-19linux操作系统分析操作系统分析32一段小程序一段小程序源文件:test.c这是一个很简单的C程序 main函数中调用了函数p1和p2首先使用gcc生成test.c的可执行文件test然后使用objdump S获得test的反汇编文件2022-6-19linux操作系统分析操作系统分析33观察观察p2的堆栈框架的堆栈框架v从test的反汇编文件中找到p2的反汇编代码int p

24、2(int x,int y)push %ebpmov %esp,%ebpreturn x+y;mov 0 xc(%ebp),%eaxadd 0 x8(%ebp),%eaxpop %ebpret建立框架拆除框架ebpespebp调用者堆栈框架espebpyx高地址低地址2022-6-19linux操作系统分析操作系统分析34观察观察main函数是如何传递参数给函数是如何传递参数给p2的的z=p2(x,y); pushl 0 xfffffff8(%ebp) pushl 0 xfffffff4(%ebp) call 804839b add $0 x8,%esp mov %eax,0 xfffffff

25、c(%ebp)printf(%d=%d+%dn,z,x,y); pushl 0 xfffffff8(%ebp) pushl 0 xfffffff4(%ebp) pushl 0 xfffffffc(%ebp) push $0 x8048510 call 80482b0 p2的返回值是如何返回给main的?调用者堆栈框架espebpy的值x的值高地址低地址被调用者堆栈框架ebpcs:eipespebpespesp2022-6-19linux操作系统分析操作系统分析35ebp观察观察main中的局部变量中的局部变量int main(void)push %ebpmov %esp,%ebpsub $0

26、x18,%esp char c=a; movb $0 x61,0 xfffffff3(%ebp)int x,y,z;x=1; movl $0 x1,0 xfffffff4(%ebp)y=2; movl $0 x2,0 xfffffff8(%ebp)调用者ebpespebpespespc=ax=1y=2高地址低地址2022-6-19linux操作系统分析操作系统分析36eipeipeipeip观察程序运行时堆栈的变化观察程序运行时堆栈的变化mainp1(c)p2(x,y)p1p2mainp2p1程序的代码段堆栈eipespmain堆栈ceipeipeipp1的堆栈espeipeipeipx,ye

27、ipp2堆栈eip2022-6-19linux操作系统分析操作系统分析37另一段小程序另一段小程序和前一段小程序稍有不同和前一段小程序稍有不同在这个小程序中,在这个小程序中,main函数中函数中调用了函数调用了函数p2,而在,而在p2的执行的执行过程中又调用了函数过程中又调用了函数p12022-6-19linux操作系统分析操作系统分析38观察程序运行时堆栈的变化观察程序运行时堆栈的变化eipeipeipeipmainp2(x,y)p1p2p1(c)mainp2p1程序的代码段堆栈eipespmain堆栈espeipeipx,yeipp2堆栈eipeipeipeipceipp1堆栈esp202

28、2-6-19linux操作系统分析操作系统分析39观察堆栈在内核中的使用观察堆栈在内核中的使用v 在内核代码中经常有这样的函数,它的参数是struct pt_regs *regs可以往回一层层的寻找这个参数是怎么传递过来的,最后我们可以发现最源头的函数使用了这样的参数struct pt_regs regs比如 unsigned int do_IRQ(struct pt_regs *regs)如果再进一步寻找是谁调用了这个do_IRQ,我们会发现只是一条简单的汇编语句call do_IRQ2022-6-19linux操作系统分析操作系统分析40为什么要有为什么要有pt_regs结构结构v用户态

29、vs 内核态v寄存器上下文从用户态切换到内核态时l必须保存用户态的寄存器上下文l要保存哪些?l保存在哪里?v中断/int指令会在堆栈上保存一些寄存器的值如:用户态栈顶地址、当时的状态字、当时的cs:eip的值2022-6-19linux操作系统分析操作系统分析41pt_regs结构结构 struct pt_regs long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; int xds; int xes; long orig_eax; long eip; int xcs; long eflags; long e

30、sp; int xss; ; 1 SAVE_ALL 和 RESTORE_ALL 保存和恢复的寄存器 2 异常处理函数中的 Error_code为保持一致而保存的数 CPU在进入中断或者异常前自动保存的寄存器 1. 中断(狭)和系统调用保存的中断号和系统调用号 2. 或者,CPU 为产生硬件错误码的异常保存的硬件错误码 3. 或者,为保持一致,在异常处理函数中,随便保存的一个无效的数 Include/asm-x86/ptrace.h2022-6-19linux操作系统分析操作系统分析42SAVE_ALL和和restore_allarch/x86/kernel/entry_32.Srestore_

31、all使用使用RESTORE_REGS2022-6-19linux操作系统分析操作系统分析43用户态和内核态的概念用户态和内核态的概念vWhy?v假定不区分用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读/写物理内存2022-6-19linux操作系统分析操作系统分析44v因此,要区分用户态和内核态:禁止用户程序和底层硬件直接打交道(最简单的例子,如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作)禁止用户程序访问任意的物理内存(否则可能会破坏其他程序的正常执行,如果对核心内核所在的地址空间写入数据的话,会导致系统崩溃)2022-6-19li

32、nux操作系统分析操作系统分析45v什么是用户态和内核态?一般现代CPU都有几种不同的指令执行级别在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动举例:intel x86 CPU有四种不同的执行级别0-3,Linux只使用了其中的0级和3级分别来表示内核态和用户态2022-6-19linux操作系统分析操作系统分析46v 如何区分一段代码是核心态还是用户态 cs寄存器的最低两位表明了当前代码的特权级 CPU每条指令的读取都是通过cs:eip这两个寄存器:其中cs是代码段

33、选择寄存器,eip是偏移量寄存器。v 上述判断由硬件完成v 一般来说在Linux中,地址空间是一个显著的标志:0 xc0000000以上的地址空间只能在内核态下访问,0 x000000000 xbfffffff的地址空间在两种状态下都可以访问注意:这里所说的地址空间是逻辑地址而不是物理地址2022-6-19linux操作系统分析操作系统分析47虚拟内存虚拟内存v物理内存有限,是一种稀缺资源v局部性原理空间局部性时间局部性v按需调页页框v利用磁盘上的交换空间2022-6-19linux操作系统分析操作系统分析48v进程的虚拟地址空间独立的地址空间(32位,4GB),每个进程一个在Linux中,3

34、G以上是内核空间,3G以下是用户空间4G的进程地址空间使用进程私有的二级页表进行地址转换(虚拟地址物理地址)l页面大小:4KBl页目录、页表l若对应的内容在内存中,则对应的二级页表项记录相应的物理页框信息l否则根据需要进行装载或者出错处理2022-6-19linux操作系统分析操作系统分析49v进程调度后,执行一个新的被调度的进程之前,要先进行页表切换vLinux中的内核空间每个进程3G以上的空间用作内核空间从用户地址空间进入内核地址空间不经过页表切换而是通过中断/异常/系统调用入口(也只能如此)2022-6-19linux操作系统分析操作系统分析50站在站在CPU执行指令的角度执行指令的角度

35、CPUeipesp0 xc0000000c=gets()mainsome action进程管理wait keyboradqueue进程进程x进程进程xidleintr8259keyboard中断处理Wakeup progress内核其他模块espeipespcsds等等esp系统调用处理idtr2022-6-19linux操作系统分析操作系统分析51从内存的角度来看从内存的角度来看物理内存0 x00000000内核代码内核静态数据0 x004000000 x20000000用户代码或数据0 xc0000000虚拟空间(512M)(3G)在Linux中,物理内存总是被映射在3G以上的空间中,若物

36、理内存过大,需使用其他的映射技术0 x000000000 xe00000000 xffffffff2022-6-19linux操作系统分析操作系统分析52第一章、绪论第一章、绪论v主要内容Linux简介一些预备知识l操作系统基本概念l堆栈l内核态 vs 用户态l虚拟内存分析和实验验证环境分析和实验验证环境lVMware; virtualboxlSourceInsight相关工具介绍:GNU Tools等2022-6-19linux操作系统分析操作系统分析53VMwarev模拟x86硬件平台v可以在Windows、Linux等平台上运行vVMWare模拟出来的硬件包括:主板、内存、硬盘(IDE和

37、SCSI)、DVD/CD-ROM、软驱、网卡、声卡、串口、并口和USB口。上述硬件是固定型号的,与Host OS的实际硬件无关v可以直接从ISO文件上安装v在一个VMware上安装的的操作系统形成的虚拟机,可以拷贝到其他装有VMware的机器上 2022-6-19linux操作系统分析操作系统分析54virtualbox Windows和Kubuntu下都可以安装Kubuntu下安装的是virtualbox-ose (Open Source Edition)2022-6-19linux操作系统分析操作系统分析55SourceInsightv源代码阅读和编辑工具v拥有内置的对C/C+, C#和J

38、ava等程序的分析。v能分析源代码并动态维护符号数据库,能自动显示有用的上下文信息。v到http:/上可以下载到它的试用版,试用期估计在30天左右2022-6-19linux操作系统分析操作系统分析56当前源码文件当前源码文件当前文件的当前文件的符号表符号表当前所看的符号上下文当前所看的符号上下文当前所看符号的调用关系当前所看符号的调用关系所有文件列表所有文件列表Project相关信息相关信息按目录,文件列表按目录,文件列表文件类型配置信息文件类型配置信息符号表符号表符号类型分类符号类型分类2022-6-19linux操作系统分析操作系统分析57作业作业1:vC语言中堆栈的作用是什么?v为什么要有内核态与用户态的区别?

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!