Linux内核阅读感悟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 260
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功