Linux内核阅读感悟概要1.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核阅读感悟概要1

Table of Contents 读核感悟2 读核感悟-Linux内核启动-内核的生成2 读核感悟-Linux内核启动-从hello world说起3 读核感悟-Linux内核启动-BIOS5 读核感悟-Linux内核启动-setup辅助程序6 读核感悟-Linux内核启动-内核解压缩8 读核感悟-Linux内核启动-开启页面映射9 读核感悟-Linux内核启动-链接脚本11 读核感悟-伪装现场-系统调用参数13 读核感悟-伪装现场-fork()系统调用15 读核感悟-伪装现场-内核线程:17 读核感悟-伪装现场-信号通信19 读核感悟-kbuild系统-内核模块的编译22 读核感悟-kbuild系统-编译到内核和编译成模块的区别24 读核感悟-kbuild系统-make bzImage的过程26 读核感悟-kbuild系统-make menuconfig31 读核感悟-文件系统-用C来实现面向对象32 读核感悟-设计模式-用C来实现虚函数表和多态32 读核感悟-设计模式-用C来实现继承和模板33 读核感悟-设计模式-文件系统和设备的继承和接口34 读核感悟-设计模式-文件系统与抽象工厂36 读核感悟-阅读源代码技巧-查找定义37 读核感悟-阅读源代码技巧-变量命名规则42 读核感悟-内存管理-内核中的页表映射总结43 读核感悟-健壮的代码-exception table-内核中的刑事档案44 读核感悟-定时器-巧妙的定时器算法45 读核感悟-内存管理fault处理流程45 读核感悟-文件读写-select实现原理47 读核感悟-文件读写-poll的实现原理49 1 功能介绍:49 2 关键的结构体:49 3 poll的实现49 4 性能分析:50 读核感悟-文件读写-epoll的实现原理50 1 功能介绍50 2 关键结构体:51 3 epoll_create的实现53 4 epoll_ctl的实现53 5 epoll_wait的实现54 6 性能分析54 读核感悟-同步问题-同步问题概述55 1 同步问题的产生背景55 2 内核态与用户态的区别55 读核感悟-同步问题-内核态自旋锁的实现56 1自旋锁的总述56 2非抢占式的自旋锁56 3 锁的释放57 4 与用户态的自旋锁的比较57 5 总结58 读核感悟-内存管理-free命令详解58 读核感悟-文件读写-2.6.9内核中的AIO59 1 AIO概述59 2 内核态AIO的使用61 读核感悟-文件读写-内核态AIO相关结构体61 1 内核态AIO操作相关信息61 2 AIO上下文:63 3 AIO ring63 4 异步I/O事件的返回信息64 读核感悟-文件读写-内核态AIO创建和提交操作65 1 AIO上下文的创建-io_setup()65 2 AIO请求的提交:io_submit实现机制66 读核感悟-文件操作-AIO操作的执行66 1.在提交时执行AIO66 2.在工作队列中执行AIO66 3.负责AIO执行的核心函数aio_run_iocb67 4 AIO操作的完成67 读核感悟-文件读写-内核态是否支持非direct I/O方式的AIO67 读核感悟 读核感悟 -Linux内核启动 -内核的生成 这段时间在看《Linux内核源代码情景分析》,顺便写了一些感悟。 读内核源代码是一件很有意思的事。它像一条线,把操作系统,编译原理,C语言,数据结构与算法,计算机体系结构等等计算机的基础课程串起来。 我看内核源代码是用lxr +glimpse(不一定要自己架,可以直接访问校内外的lxr网站)的。如果在windows下也可以用source insight。以下的当前路径为内核源代码路径,通常为/usr/src/linux。内核版本为2.6.13,平台为x86 好,让我们开始Linux内核之旅。 我们的出发点是在CPU加电的一刹那,系统处于16位实地址模式下,终点是内核开始运行start_kernel(),系统处于32位页式寻址的保护模式下。那时内核映象bzImage已经解压完毕,运行于内核态。系统中已经有了一个叫swapper的0号进程,有自己的内核堆栈,情况就相对好理解得多。(尽管与用户态程序相比,还要多操心不少事,包括对硬件的直接操作,内核态各种数据结构的初始化,对页表的操作等等)。 不过,不妨先做些准备动作。 首先,什么是内核? 目前,只知道编译内核后,产生一个叫bzImage的压缩内核映象。它不同于任何普通的可执行程序。我们甚至不知道它从哪里开始执行。只知道把它往/boot/下一放,往bootloader的配置文件(例如grub的menu.lst)中写上相关信息,机子就顺利启动了。 因此,我对它的生成过程产生了浓厚兴趣。于是,我查看了相关资料,最直接的资料

文档评论(0)

676200 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档