Linux内核源代码导读

上传人:cn****1 文档编号:584931518 上传时间:2024-09-01 格式:PPT 页数:66 大小:862KB
返回 下载 相关 举报
Linux内核源代码导读_第1页
第1页 / 共66页
Linux内核源代码导读_第2页
第2页 / 共66页
Linux内核源代码导读_第3页
第3页 / 共66页
Linux内核源代码导读_第4页
第4页 / 共66页
Linux内核源代码导读_第5页
第5页 / 共66页
点击查看更多>>
资源描述

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

1、课枚窃剃她嫡攘幸部盼彬曾怨尹骋添恕天鸣藉障蓟即把勘陀乱叛普祭随税Linux内核源代码导读Linux内核源代码导读Linux内核源代码导读内核源代码导读 中国科学技术大学计算机系中国科学技术大学计算机系陈香兰(陈香兰(05513606864)Spring 2009豢屹绳爆阻旁欺茹孤趋习桨贸郭伞背挟坐角悠帝七坐助遮晨堕楷走瓷惟命Linux内核源代码导读Linux内核源代码导读序序v一些基本概念操作系统的基本概念I386系统的基本概念vLinux简介v源码阅读和project环境vLinux2.6.26源码简介灯屏杰膛邀陵总悠挠寥蝎杜涎荫礁深锤丝碌诞憋遂悔指卓胯路海贡祁橡藏Linux内核源代码导读L

2、inux内核源代码导读操作系统的基本概念操作系统的基本概念v任何计算机系统都包含一个基本的程序集合,称为操作系统。内核(进程管理,进程调度,进程间通讯机制,内存管理,中断异常处理,文件系统,I/O系统,网络部分)其他程序(例如函数库,shell程序等等)v操作系统的目的与硬件交互,管理所有的硬件资源为用户程序(应用程序)提供一个良好的执行环境架叔肿占炕魁烂床瀑印殷掘总郴示境溪眠盏黄咯颈一闰裁翰芝褪红徒棉嫂Linux内核源代码导读Linux内核源代码导读I386系统的基本概念系统的基本概念v代码的运行代码的运行v堆栈的概念v内核态与用户态v中断/异常/系统调用v虚拟内存王瞻剃户埠锣昂樱驹赤庞究郑

3、勋彤丸股静镇压盒清茧硅弦兵胁炒炮粪詹槛Linux内核源代码导读Linux内核源代码导读代码的运行代码的运行v关键寄存器cs:eip:总是指向下一条的指令地址l顺序执行:总是指向地址连续的下一条指令l跳转/分支:执行这样的指令的时候,cs:eip的值会根据程序需要被修改lcall:将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的入口地址lret:从栈顶弹出原来保存在这里的cs:eip的值,放入cs:eip中l发生中断时?l?圆缚邮估嘉乳牟般驳富辈规兢凯命枣潞亨不踪带彝龙渊肖购亮卞滞震爆伊Linux内核源代码导读Linux内核源代码导读I386系统的基本概念系统的基本概念v代码的运行v

4、堆栈的概念堆栈的概念v内核态与用户态v中断/异常/系统调用v虚拟内存陪霖糟诚祟坤周氨楔降畴栅疆删拾缉忿焚捷穴猎过膝忽牵玉药焰纹归碴幸Linux内核源代码导读Linux内核源代码导读堆栈的概念堆栈的概念v堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间函数调用框架传递参数保存返回地址提供局部变量空间等等vC语言编译器对堆栈的使用有一套的规则v了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础v以x86体系结构为例乞几钥申棺东借蝗淳绞洼华褂藤江恰承灾舌锻渴彬幅砍芬湾先洒堑澳龋莲Linux内核源代码导读Linux内核源代码导读堆栈寄存器和堆栈操作堆栈寄存器和堆栈操作

5、v堆栈相关的寄存器esp,堆栈指针(stackpointer)ebp,基址指针(basepointer)v堆栈操作push栈顶地址减少4个字节(32位)pop栈顶地址增加4个字节vebp在C语言中用作记录当前函数调用基址espebp高地址低地址esp庄鳖忆鲜叼奔热约涤另狂皋札着孰颐左樱宰教徒蛆揪集煎恭溶态漳则棠厦Linux内核源代码导读Linux内核源代码导读/ 调用者call target利用堆栈实现函数调用和返回利用堆栈实现函数调用和返回/建立被调用者函数的堆栈框架pushl %ebpmovl %esp, %ebp/拆除被调用者函数的堆栈框架movl %ebp,%esppopl %ebp

6、ret/被调用者函数体/do sth.call指令:1)将下一条指令的地址A保存在栈顶2)设置eip指向被调用程序代码开始处将地址A恢复到eip中总坚鹏恐伏勃缓回曙带旗温哥骋释兔牡肘败惹竭榆期燕晨隔吼斜赠码旭凿Linux内核源代码导读Linux内核源代码导读函数堆栈框架的形成函数堆栈框架的形成vcallxxx执行call之前执行call时,cs:eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs:eip的值指向xxx的入口地址v进入xxx第一条指令:pushl%ebp第二条指令:movl%esp,%ebp函数体中的常规操作,可能会压栈、出栈v退出xxxmovl%ebp,%espp

7、opl%ebpretespebp高地址低地址cs : eipespebpespebpesp广僻甲扦光囚窄腺云晾厚赤离惜额俏委狂标拘桶手棍归刁忧雷履弱恃涎移Linux内核源代码导读Linux内核源代码导读vC语言中还使用堆栈进行参数的传递局部变量的使用倡甸往骗兵仟费廖牛约詹脖挞巩答痰还铆贤贝肩课桌珐掳骤蓉脉柄蹭糖安Linux内核源代码导读Linux内核源代码导读一段小程序一段小程序源文件:test.c这是一个很简单的C程序main函数中调用了函数p1和p2首先使用gcc生成test.c的可执行文件test然后使用objdumpS获得test的反汇编文件改续苯抬奏植胸仿旬塌欲茹险筹谰啮统黑鸥帛脉昔

8、群刺毋诱苔脊为滴蛤枢Linux内核源代码导读Linux内核源代码导读eipeipeipeip观察程序运行时堆栈的变化观察程序运行时堆栈的变化mainp1(c)p2(x,y)p1p2mainp2p1程序的代码段堆栈eipespmain堆栈ceipeipeipp1的堆栈espeipeipeipx,yeipp2堆栈eip甫临甲凶秤名峰骋论斥六丰印沂粗召憨苏研当跃虏评玻摆辟销购诣炭兔乱Linux内核源代码导读Linux内核源代码导读另一段小程序另一段小程序和前一段小程序稍有不同和前一段小程序稍有不同在这个小程序中,在这个小程序中,main函数中函数中调用了函数调用了函数p2,而在,而在p2的执行的执行

9、过程中又调用了函数过程中又调用了函数p1囚太庇所悯犀漫凑诊列爬薪亚帅许掠样青生姿冤歹董象莎旷整追橙很臆颠Linux内核源代码导读Linux内核源代码导读观察程序运行时堆栈的变化观察程序运行时堆栈的变化eipeipeipeipmainp2(x,y)p1p2p1(c)mainp2p1程序的代码段堆栈eipespmain堆栈espeipeipx,yeipp2堆栈eipeipeipeipceipp1堆栈esp凉阂朗正漾鞘滚点褥凛琳若掷谴肆然质刘液鲁蛊秉坑北徽哎废辊誓屁唁恍Linux内核源代码导读Linux内核源代码导读I386系统的基本概念系统的基本概念v代码的运行v堆栈的概念v内核态与用户态内核态与

10、用户态v中断/异常/系统调用v虚拟内存目鸭寥邪垢显汽杭渝洼惶供咽样咖稗豌锰耕掳镐荣蓟冯碟永脖工宠漫求伪Linux内核源代码导读Linux内核源代码导读用户态和内核态的概念用户态和内核态的概念vWhy?v假定不区分用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读/写物理内存腑馅幸捎痈维衷库玩鞍抽唐貌殊秆黎害烤颈锣辖稗钝仕忠炭陕股烂帝淫侥Linux内核源代码导读Linux内核源代码导读v因此,要区分用户态和内核态:禁止用户程序和底层硬件直接打交道(最简单的例子,如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作)禁止用户程序访问任意的物理内存(否

11、则可能会破坏其他程序的正常执行,如果对核心内核所在的地址空间写入数据的话,会导致系统崩溃)癣姻定街焕倦桅柜拇歪烯傣轩轧诧叙周挟翔或腐本兹事岛催份清赠扯防乃Linux内核源代码导读Linux内核源代码导读v什么是用户态和内核态?一般现代CPU都有几种不同的指令执行级别在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动举例:intelx86CPU有四种不同的执行级别0-3,Linux只使用了其中的0级和3级分别来表示内核态和用户态乓协躬崇阵幂膘漳涸谊彤士博癸衰蓑少纤捎矗访涂而

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

13、码导读I386系统的基本概念系统的基本概念v代码的运行v堆栈的概念v内核态与用户态v中断中断/异常异常/系统调用系统调用v虚拟内存揍吸性祖昼曼风埠括硝叶梆载首绿泼摊伺雀笼属祷臻欢金永辈宙眺泊悠枷Linux内核源代码导读Linux内核源代码导读中断和异常中断和异常v中断(广义)中断(广义)会改变处理器执行指令的顺序,通常与CPU芯片内部或外部硬件电路产生的电信号相对应中断异步的:由硬件随机产生,在程序执行的任何时候可能出现异常同步的:在(特殊的或出错的)指令执行时由CPU控制单元产生我们用“中断信号”来通称这两种类型的中断设备设备控制器中断控制器IRQCPUINTR浇秒路伊椒坤嫩娜既窄街乘冈刮膛

14、叫丛扫狈踏踢帖渤郡耶稳习堕袱趋澳声Linux内核源代码导读Linux内核源代码导读中断信号的作用中断信号的作用v中断信号提供了一种特殊的方式,使得CPU转去运行正常程序之外的代码比如一个外设采集到一些数据,发出一个中断信号,CPU必须立刻响应这个信号,否则数据可能丢失v当一个中断信号到达时,CPU必须停止它当前正在做的事,并且切换到一个新的活动v为了做到这这一点,在进程的内核态堆栈保存程序计数器的当前值(即eip和cs寄存器)以便处理完中断的时候能正确返回到中断点,并把与中断信号相关的一个地址放入进程序计数器,从而进入中断的处理遇整浊咖条拎熏俊洞日洒贴框摇孰笨伴嘲喝采毋挑拖冤首坞唯见服乾泼励L

15、inux内核源代码导读Linux内核源代码导读系统调用的意义系统调用的意义v操作系统为用户态进程与硬件设备进行交互提供了一组接口系统调用把用户从底层的硬件编程中解放出来极大的提高了系统的安全性使用户程序具有可移植性v基于I386的Linux使用int0x80进行系统调用记墒凶暴枉海驱师沮铆围钧悠抄公仿成后谓糯施勃绸闭闭戚族路边魄悯臆Linux内核源代码导读Linux内核源代码导读I386系统的基本概念系统的基本概念v代码的运行v堆栈的概念v内核态与用户态v中断/异常/系统调用v虚拟内存虚拟内存珐氦侧拾熟果冲原既观品揭幅蒜返彻禽答墓掇峰朔筑甥傍蕴垛扎午熏做浊Linux内核源代码导读Linux内核

16、源代码导读虚拟内存虚拟内存v物理内存有限,是一种稀缺资源v局部性原理空间局部性时间局部性v按需调页页框v利用磁盘上的交换空间受苍汾赴布膀谊脱坤行固糯并眷仕陕宙盅簧句沃涩谗喝睛格翔赋答卤浩内Linux内核源代码导读Linux内核源代码导读v进程的虚拟地址空间独立的地址空间(32位,4GB),每个进程一个在Linux中,3G以上是内核空间,3G以下是用户空间4G的进程地址空间使用进程私有的二级页表进行地址转换(虚拟地址物理地址)l页面大小:4KBl页目录、页表l若对应的内容在内存中,则对应的二级页表项记录相应的物理页框信息l否则根据需要进行装载或者出错处理蛇袁卸更拴娃星弹矽邻闺瞥蔫朗直旅菠们爱黔逊

17、垛爸库炭谰拄狂炽铅虚把Linux内核源代码导读Linux内核源代码导读v进程调度后,执行一个新的被调度的进程之前,要先进行页表切换vLinux中的内核空间每个进程3G以上的空间用作内核空间从用户地址空间进入内核地址空间不经过页表切换而是通过中断/异常/系统调用入口(也只能如此)膳顷斟帝浇晓沈氟夸蛙委啦受季庞鸡罐曹字锡冯洲磁付泡拴蹦屯啄唇李稠Linux内核源代码导读Linux内核源代码导读小结小结v根据代码的执行、中断/异常/系统调用来理解操作系统v操作系统提供中断/异常处理v操作系统提供系统调用v应用开发人员编写应用程序v驱动开发人员编写驱动v应用程序运行要骚倍玩侗削革隔贞鲸狈迄芦趾养遗魂避佯

18、鄙选韶黄吐镶冯翱盂陪萨和缘Linux内核源代码导读Linux内核源代码导读序序v一些基本概念操作系统的基本概念I386系统的基本概念vLinux简介简介v源码阅读和project环境vLinux2.6.26源码简介巩叙渺橱赫磷役显亥惺多钦滤臼耐强帐景吕祭尹诚瓦诽嘱陀晨爸藕浚凛狸Linux内核源代码导读Linux内核源代码导读Linux简介简介v什么是什么是Linux?v“Linux”在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内容vLinux版本内核版本发行版本vLinux系统的好处vLinux的运行及相关基本概念爪倔酝侵般习范筑疡檬拧诊抹认墒腿醛飞句懈照泰料彭血袄纷谍笛

19、撅要兆Linux内核源代码导读Linux内核源代码导读什么是什么是Linux?vLinux是一个类Unix(Unix-like)的操作系统,在1991年发行了它的第一个版本v在Linux内核维护网站上,“What is Linux?”卫颓绍撅虏伟柔断够注凿保误拜皇搔醋赞乖季狗尹暗募袍肺惩播讳社儒疲Linux内核源代码导读Linux内核源代码导读From “www.kernel.org”vLinux的来历和目标:Linuxisa clone of the operating system Unix,writtenfromscratchbyLinus Torvaldswithassistancef

20、romaloosely-knitteamofhackersacrosstheNet.It aims towards POSIX and Single UNIX Specification compliance.vLinux的功能Ithasallthefeaturesyouwouldexpectinamodernfully-fledgedUnix,includingtruemultitasking,virtual memory,shared libraries,demand loading,shared copy-on-write executables,proper memory manage

21、ment,andmultistacknetworkingincludingIPv4andIPv6.Portable Operating System Interface Standard可移植操作系统接口标准由IEEE制订,并由ISO接受为国际标准。Institute for Electrical and Electronic Engineers电气电子工程师学会美International Organization for Standardization国际标准化组织制定各行各业各种产品和服务的技术规范(国际标准)沏堡涎衡轴厢咬霸句崔函州篷疽又搜祟兰吠摹疚钠堂范霜旷弱吻团镍舵衅Linux内核

22、源代码导读Linux内核源代码导读vLinux支持的目标体系结构Althoughoriginallydevelopedfirstfor 32-bit x86-based PCs (386 or 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, Ren

23、esas H8/300, NEC V850, Tensilica Xtensa, and Analog Devices Blackfinarchitectures;formanyofthesearchitecturesinboth32-and64-bitvariants.肮祝慑觉釜婚芍寨爽鸯冯噪并抨肿衍爽朗警曲涛搜取尾亮攻印复敬周坟蛰Linux内核源代码导读Linux内核源代码导读v在内存管理方面不得不说的Linuxiseasilyportabletomostgeneral-purpose32-or64-bitarchitecturesas long as they have a paged

24、memory management unit (PMMU)anda port of the GNU C compiler (gcc) (part of The GNU Compiler Collection, GCC).Linuxhasalsobeenportedtoanumberofarchitectureswithout a PMMU,althoughfunctionality isthenobviouslysomewhat limited.SeetheClinux projectformoreinfo.哼逞缎弦朋炽磁乏姑节届袜猿嘲氟苇扭葫愿苞棋蘑招滁镑款豪继掌赛累截Linux内核源代码导

25、读Linux内核源代码导读Linux简介简介v什么是Linux?v“Linux”在不同的语境下的含义在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内容vLinux版本内核版本发行版本vLinux系统的好处vLinux的运行及相关基本概念恳佛佩芥涟床形枯译状号勃韩燎疥痹舟耗溢斌莲圃熔澎栅历掌摹搂乔圾枯Linux内核源代码导读Linux内核源代码导读“Linux”v在不同的语境下,“Linux”具有不同的内涵,例如:Linux内核、Linux系统或Linux开发套件等术语。v严格来说,Linux指的是LinuxTorvalds维护的(及通过主要和镜像网站发布的)内核。vGNU/

26、LinuxGNU/Linux的拥护者们认为,Linux仅仅是指Linux内核,而整个Linux系统的大部分都建立在GNU软件之上。代定蹈叠脚辟讳纹倡豆迄掖屉把丧霹亏札舰验掀皿讳洞傻医篓北雏玖观炯Linux内核源代码导读Linux内核源代码导读vGNU,“g-noo”,“GNUsNotUnix”要该虚波荒茂漫轧褥胰范媒渝悦氏虐背安撵矿蛾暴求台裁躺往窜肾漏裔岭Linux内核源代码导读Linux内核源代码导读Linux内核维护网站内核维护网站vhttp:/www.kernel.org/vTheLinuxKernelArchivesMirrorSystem丫春皱庙俐浩放挞邦技潍廓撑曝浇疤痉夯问纯姻拌输

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

28、全是一个偶然事件v1993,在一批高水平黑客的参与下,诞生了Linux1.0版v1994年,Linux的第一个商业发行版Slackware问世诅丙等怪烃礼崔撩挚矿国创敢胯阂耳刘误释搓感侥贪雀祈瑞刨婴孙挖毕疾Linux内核源代码导读Linux内核源代码导读 v1996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13(由OpenLinux公司打包)符合POSIX标准v2001年,Linux2.4版内核发布v2003年,Linux2.6版内核发布v淹来诱滔肛叔儒氓迎匪钥里板凤拖弯矾鸥腿尽船腮瞻咙结眺捡貉藏赴框五Linux内核源代码导读Linux内核源代码导读Linux简介简介v

29、什么是Linux?v“Linux”在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内容操作系统的主要内容vLinux版本内核版本发行版本vLinux系统的好处vLinux的运行及相关基本概念艳景汤倡笨苍椿针摹蹋寺康渍杖壶崔蹈瓷涎请拱碍劫榴泼汲冲疚函帆类熏Linux内核源代码导读Linux内核源代码导读Linux操作系统的主要内容操作系统的主要内容 vLinux是免费的、源代码开放的、符合POSIX标准规范的操作系统v拥有现代操作系统具有的所有内容,例如抢占式多任务处理,支持多用户内存保护,支持SMP,支持TCP/IP,支持绝大多数的32位和64位CPU等v还有一些其他操作系统

30、没有的特色,比如NFS,VFS,高效的EXT系列文件系统等淫潘贩嘉媳疥送羽淮盲项懒樱矾覆雀觉楚牲汐慷惮南凶寺也惧眨牟漂碑贺Linux内核源代码导读Linux内核源代码导读一个典型的一个典型的Linux操作系统的结构操作系统的结构用户应用程序用户应用程序System call对硬件资对硬件资源的管理源的管理Shell,libKernel implementation盖礼堆剥厉弦竟遗掸氧洒破虞盾轿恐剪狰纷甩究媳疹逮浑掷样幕尧忠矫束Linux内核源代码导读Linux内核源代码导读Linux简介简介v什么是Linux?v“Linux”在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内

31、容vLinux版本版本内核版本内核版本发行版本发行版本vLinux系统的好处vLinux的运行及相关基本概念抵共涪犀为袭研幂栖媒咖仍掣噪囤切迢昆柯趋夯凤饶尔蛆堰漏骇轴滁待织Linux内核源代码导读Linux内核源代码导读Linux版本版本vLinux的内核版本v几种流行的Linux发行版本篇岭眶缚滥试思哑岗埋际盂枝盟儡卜衷魄玻缝对牺称径奖丈饲韩胳芽黎躁Linux内核源代码导读Linux内核源代码导读Linux的内核版本的内核版本vLinux内核版本是由LinusTorvalds作为总体协调人的Linux开发小组(分布在各个国家的近百位高手)开发出的系统内核的版本号vLinux内核采用的是双树系

32、统一棵是稳定树,主要用于发行另一棵是非稳定树或称为开发树,用于产品开发和改进vLinux内核版本号由3位数字组成r.x.y第1位数字r为主版本号 第2位数字x为说明版本类型的次版本号,如果x为偶数,则表示为产品化版本,为奇数时表示为实验版本 第3位数字y为修改号,表示错误修补的次数 记黔倘讲肋涕属旁谈扯塑圃凰饭夫颗叁诉械镊宴埃滔晾杭缺殊赤窑押恭霸Linux内核源代码导读Linux内核源代码导读几种流行的几种流行的Linux发行版本发行版本壕夺阁臀捅岿扔殃榜棒旱枉轧嘘糠岁吞纹借得骗廖籍部乏耗搏沪欠洗产聪Linux内核源代码导读Linux内核源代码导读Linux简介简介v什么是Linux?v“Li

33、nux”在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内容vLinux版本内核版本发行版本vLinux系统的好处系统的好处vLinux的运行及相关基本概念幕柳呈旱苍豹娱斟躇傅硒臂闪斥黑谢饯祭辗盈僳撒卑烦温颖五控鬼荤菊炙Linux内核源代码导读Linux内核源代码导读Linux系统的好处系统的好处v支持多种CPUX86,ARM,MIPS,SH,i960,PPC,etc.v开放源代码(开放源代码(Open source)v强大的网络网络功能v可移植性可移植性v使用GNU tools觅矾鲜粮梯浆戏乳瘴蔷准蛙垛歇昨悔傍揍挣喷取是媳毫伞贺倦谋抑专闪红Linux内核源代码导读Linux

34、内核源代码导读v一个新潮,非常稳定,多用户,多任务的环境v标准的平台v无法超越的计算能力,可移动性和适应性v先进的图形用户界面v几十个异常出色而且免费的桌面应用程序v成千上万个免费的工具和应用小程序v几百上千个专业程序由全世界的无数研究人员编制,覆盖了天文,信息技术,化学,物理,工程,语言,生物等各个学科领域戒仇贵啸诊听士妖镣曼抒憾李夷蕴岛婉拨橙宠返恃秤旁獭石蛹递买寥彼低Linux内核源代码导读Linux内核源代码导读v一个真正杰出的学习系统一个真正杰出的学习系统v很多顶级的系统开发平台,友好的编程语言及编程工具都免费包含在操作系统里面v病毒入侵,计算机的“后门”,软件提供商的“特别要求”,强

35、迫性的软件升级,专有的文件格式,软件使用许可证和市场策略,产品注册登记,高得惊人的软件价格,等等-Linux都没有vLinux操作系统平台保证它的“永久性”v一个技术快速更新的平台躺轨宏寓俱鲜插掉唤甚悬克倘堑纵湾潮羞诲基摧习勉擎驮靛蟹叔彪仇粪扁Linux内核源代码导读Linux内核源代码导读Linux简介简介v什么是Linux?v“Linux”在不同的语境下的含义vLinux发展简史vLinux操作系统的主要内容vLinux版本内核版本发行版本vLinux系统的好处vLinux的运行及相关基本概念的运行及相关基本概念烷勿临像拨暖江俏遏睁洼呢舒抄汁犀石逗苛委牵翠返韩轨峭去泰翰枫霓峪Linux内核

36、源代码导读Linux内核源代码导读最简单也是最复杂的操作最简单也是最复杂的操作在控制台下输入在控制台下输入ls命令命令Shell程序分析输入参程序分析输入参数,确定这是数,确定这是ls命令命令调用系统调用调用系统调用fork生成生成一个一个shell本身的拷贝本身的拷贝什么是系统调用?为什么我们敲击键盘就会在终端上显示?fork是什么?为什么要调用fork?中断的概念,终端控制台设备驱动的概念保护模式和实模式,内存保护,内核态用户态相关问题进程的描述,进程的创建。COW技术系统调用是怎么实现的?软中断、异常的概念。陷阱门,系统门调用调用exec系统调用将系统调用将ls的可执行文件装入内存的可执

37、行文件装入内存内存管理模块,进程的地址空间,分页机制,文件系统从系统调用返回从系统调用返回如何做到正确的返回?堆栈的维护,寄存器的保存与恢复Shell和和ls都得以执行都得以执行进程的调度,运行队列等待队列的维护什么是shell?终端解释程序诺竿靳刚筷呕蹬搂谋菊摩湍据脖劝獭署慑绒柿侨芝婪低启鞍蔼廖骂粹遥沾Linux内核源代码导读Linux内核源代码导读站在站在CPU执行指令的角度执行指令的角度CPUeipesp0xc0000000c=gets()mainsome action进程管理wait keyboradqueue进程进程x进程进程xidleintr8259keyboard中断处理Wake

38、up progress内核其他模块espeipespcsds等等esp系统调用处理idtr惨然武买泞蜘粹汁觅孺墩子喇弘披抡面煮沈甜廉伞道块尹负莱惭扭亿罗贾Linux内核源代码导读Linux内核源代码导读从内存的角度来看从内存的角度来看物理内存0x00000000内核代码内核静态数据0x004000000x20000000用户代码或数据0xc0000000虚拟空间(512M)(3G)在Linux中,物理内存总是被映射在3G以上的空间中,若物理内存过大,需使用其他的映射技术0x000000000xe00000000xffffffff湃让泰嫩娱肌札哩挝兆纬祷颂截矮块学落廷查轮哭鹰钦汝引体辛豢撕枉乳L

39、inux内核源代码导读Linux内核源代码导读序序v一些基本概念操作系统的基本概念I386系统的基本概念vLinux简介v源码阅读和源码阅读和project环境环境vLinux2.6.26源码简介隧扦娟尘滦赎烂能惟惜捆爽劫簿弟悼履厨捅晴境杂铬韦爱财蚁论刺惕涕讹Linux内核源代码导读Linux内核源代码导读源码阅读和源码阅读和project环境环境v分析和实验验证环境VMwareSourceInsight脂扇痕橱烫瞥仟鸯忽秘庭冠岭瘸旨远萍馁遍妨蓄汹戊浊磷我俄谗英资磅稚Linux内核源代码导读Linux内核源代码导读VMwarev模拟x86硬件平台v可以在Windows、Linux等平台上运行v

40、VMWare模拟出来的硬件包括:主板、内存、硬盘(IDE和SCSI)、DVD/CD-ROM、软驱、网卡、声卡、串口、并口和USB口。上述硬件是固定型号的,与HostOS的实际硬件无关v可以直接从ISO文件上安装v在一个VMware上安装的的操作系统形成的虚拟机,可以拷贝到其他装有VMware的机器上评杉嵌闲汰霄管臆胁文拍茬官挞襄仅遗比夺业懈校悲烁读身敦硬后昌蔫听Linux内核源代码导读Linux内核源代码导读SourceInsightv源代码阅读和编辑工具v拥有内置的对C/C+,C#和Java等程序的分析。v能分析源代码并动态维护符号数据库,能自动显示有用的上下文信息。v到http:/ 2.6

41、.26 源码简介源码简介纠饯蛔载氓痰弹陨绚箭擎满蕴泻嘛必暴厄其紊固宇戏名藕脏虏很用搭诬催Linux内核源代码导读Linux内核源代码导读Linux 2.6.26 源码简介源码简介v了解linux的源码组织看目录结构v了解Makefile在目录和编译中的作用艾乏抓椰惑瞳眼丰竹筒悦叼延壮蛆授蕉修鄙治离孔廉瞎飞氧曾洼卓杆厕睦Linux内核源代码导读Linux内核源代码导读Project 1vProject1:安装VMware,并在VMware中安装Kubuntu8.10安装sourceinsight,并建立Linux2.6.26的源码工程提示:虚拟机安装好之后,可以拷贝帖克扫丧贺溜譬拼诲烁价大童宠昆识畏毗瘸进捡钢酣窟奋押烘川倚涛最纱Linux内核源代码导读Linux内核源代码导读课枚窃剃她嫡攘幸部盼彬曾怨尹骋添恕天鸣藉障蓟即把勘陀乱叛普祭随税Linux内核源代码导读Linux内核源代码导读ThanksThanks!The end.喝帽纸愁店解烹朗谬盈趴嫩璃按顶渗当麻桐跌涕斤蹋仆湘挂捂岿则汪霍施Linux内核源代码导读Linux内核源代码导读

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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