• Linux面试题 200多道

    包含200多道最常见的Linux笔试,面试题目,有填空,选择,问题三种类型,对面试笔试非常有用

    4
    99
    311KB
    2011-04-29
    9
  • Beginning.PHP.and.MySQL,3rd.Edition

    Beginning.PHP.and.MySQL,3rd.Edition.。。。。。。。。。。。。。。。。。。。。。

    0
    31
    17.03MB
    2011-04-29
    2
  • OpenCV教程_基础篇_源码

    OpenCV教程_基础篇_源码.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    5
    72
    3.3MB
    2011-04-29
    9
  • 基于OpenCV的计算机视觉技术实现_源码

    基于OpenCV的计算机视觉技术实现_源码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    5
    103
    13.56MB
    2011-04-29
    10
  • 学习OpenCV(中文版) PDF

    内容简介 《学习OpenCV》:计算机视觉是在图像处理的基础上发展起来的新兴学科。OpenCV是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。 本书由OpenCV发起人所写,站在一线开发人员的角度用通俗易懂的语言解释了OpenCV的缘起和计算机视觉基础结构,演示了如何用OpenCV和现有的自由代码为各种各样的机器进行编程,这些都有助于读者迅速入门并渐入佳境,兴趣盎然地深入探索计算机视觉领域。 本书可作为信息处理、计算机、机器人、人工智能、遥感图像处理、认知神经科学等有关专业的高年级学生或研究生的教学用书,也可供相关领域的研究工作者参考。 透过本书,您将置身于迅速发展的计算机视觉领域。本书由自由开源OpenCV的发起人所著,介绍了计算机视觉,并通过实例演示了如何快速生成这样的应用——能使计算机“看到”并根据由此获取的数据做出决策。 计算机视觉无处不在,安全系统、制造检验系统、医学图像分析、无人机等都可以见到它的踪影。它与Google Map和Google Earth紧密结合,它检查LCD屏幕上的像素,它确保衬衫上的每个针脚都能完全缝合。OpenCV提供了一个简易好用的计算机视觉框架和一个丰富的库,后者包含500多个可实时运行视觉代码的函数。 透过各章提供的练习,任何一个开发人员或爱好者都可以迅速掌握如何使用这个框架。本书特色主题如下: 透彻介绍OpenCV 从摄像机获取输入 图像的变换 图像的分割和形状的匹配 模式识别,包括人脸检测 二维和三维场景中的跟踪监测 根据立体视觉进行三维重构 机器学习算法 “让机器来看”是一个富有挑战但也很有意思的目标。不管是想构建简单的视觉应用,还是复杂的视觉应用,都离不开这本入门必备参考,拿起它,开始愉快的学习之旅吧! 媒体推荐 “OpenCV库对从业人员而言非常有用,对初涉该领域的新手而言也不失为一个优秀工具。正如其广而告之的那样,它是一套高效的计算机视觉算法。” ——William T. Freeman,麻省理工学院计算机科学与人工智能实验室 “对计算机视觉领域内任何一个从业人员而言,《学习OpenCV》是他们不可或缺的重要参考。” ——David Lowe,英属哥伦比亚大学计算机科学教授 作者简介 作者:(美国)布拉德斯基 (美国)克勒 译者:于仕琪 刘瑞祯 布拉德斯基,Gary Rost Bradski博士是斯坦福大学人工智能实验室计算机科学系的顾问教授,同时也是Willow Garage的资深科学家,Willow Garage是一家机器人研究机构/孵化器。 目录 出版前言 译者序 写在前面的话 前言 第1章 概述 什么是OpenCV OpenCV的应用领域 什么是计算机视觉 OpenCV的起源 下载和安装OpenCV 通过SVN获取最新的OpenCV代码 更多OpenCV文档 OpenCV的结构和内容 移植性 练习 第2章 OpenCV入门 开始准备 初试牛刀—— 显示图像 第二个程序—— 播放AVI视频 视频播放控制 一个简单的变换 一个复杂一点的变换 从摄像机读入数据 写入AVI视频文件 小结 练习 第3章 初探OpenCV OpenCV的基本数据类型 CvMat矩阵结构 IplImage数据结构 矩阵和图像操作 绘图 数据存储 集成性能基元 小结 练习 第4章 细说HighGUI 一个可移植的图形工具包 创建窗口 载入图像 显示图像 视频的处理 ConvertImage函数 练习 第5章 图像处理 综述 平滑处理 图像形态学 漫水填充算法 尺寸调整 图像金字塔 阈值化 练习 第6章 图像变换 概述 卷积 梯度和Sobel导数 拉普拉斯变换 Canny算子 霍夫变换 重映射 拉伸、收缩、扭曲和旋转 CartToPolar与PolarToCart LogPolar 离散傅里叶变换(DFT) 离散余弦变换(DCT) 积分图像 距离变换 直方图均衡化 练习 第7章 直方图与匹配 直方图的基本数据结构 访问直方图 直方图的基本操作 一些更复杂的策略 练习 第8章 轮廓 内存 序列 查找轮廓 Freeman链码 轮廓例子 另一个轮廓例子 深入分析轮廓 轮廓的匹配 练习 第9章 图像局部与分割 局部与分割 背景减除 分水岭算法 用Inpainting修补图像 均值漂移分割 Delaunay三角剖分和Voronoi 划分 练习 第10章 跟踪与运动 跟踪基础 寻找角点 亚像素级角点 不变特征 光流 mean-shift和camshift跟踪 运动模板 预估器 condensation算法 练习 第11章 摄像机模型与标定 摄像机模型 标定 矫正 一次完成标定 罗德里格斯变换 练习 第12章 投影与三维视觉 投影 仿射变换和透视变换 POSIT:3D姿态估计 立体成像 来自运动的结构 二维和三维下的直线拟合 练习 第13章 机器学习 什么是机器学习 OpenCV机器学习算法 Mahalanobis距离 K均值 朴素贝叶斯分类 二叉决策树 boosting 随机森林 人脸识别和Haar分类器 其他机器学习算法 练习 第14章 OpenCV的未来 过去与未来 发展方向 OpenCV与艺术家 后记 参考文献 索引 关于作者和译者 封面图片

    5
    0
    13.46MB
    2011-04-29
    50
  • 学习OpenCV Leaning OpenCV (英文版)

    内容简介 《学习OpenCV(影印版)》将你置身于迅速发展的计算机视觉领域。《学习OpenCV(影印版)》作者是免费开源0penCV的发起人,《学习OpenCV(影印版)》为你介绍了计算机视觉,例证了如何迅速建立使计算机能“看”的应用程序,以及如何基于计算机获取的数据作出决策。计算机视觉几乎随处可见:安全系统、管理检验系统、医学图像分析、无人机等。它将Google地图和Google地球结合在一起,在LCD屏幕上核对像素,确保衬衫上的每一个针脚都完全缝合。OpenCV提供了一个简易实用的计算机视觉框架以及一个含有超过500种可以实时运行视觉代码的函数的综合库。《学习OpenCV》在每一章里教授任何OpenCV的开发者或热爱者如何在这些实战经验的帮助下迅速掌握该软件。《学习OpenCV(影印版)》包括了如下内容: 对0penCV全面详尽的介绍 从照相机中导入图片 转换图像 分割图像和形状匹配 模式识别,包括人脸检测 两到三个计量单位间的跟踪和运动 立体视觉中的3D再现 机器学习算法 使机器能看见是一个具有挑战却又充满乐趣的目标。无论你是想建立一个简单的还是复杂的视觉应用程序,《学习OpenCV》都是你入门的必备教材。 编辑推荐 《学习OpenCV(影印版)》由东南大学出版社出版。 媒体推荐 “这本宝库对专业人员来讲非常有用,对初涉这个领域的人们也是个绝好的工具。像其宣传的那样,它是一组计算机视觉算法。”   ——William T.Freeman. 麻省理工学院计算机科学与人工智能实验室“《学习0penCV》即将占据每从从事计算机视觉领域的人的书架上最显著的一处。”   ——David Lowe,英属哥 作者简介 作者:(美国) 布拉德斯基 (Bradski.G.) (美国) 克勒 (Kaehler.A.) Gary Rost BradSki,博士,伦比亚大学计算机科学教授,斯坦福大学人工智能实验室的顾问教授,也是Willow Garage公司机器;人学研究协会的资深科学家。Ad rian Kaehler博士,Applied Mind S公司的资深科学家,从事机器学习、统计建模、计算机视觉和机器人学方面的研究。 目录 Preface 1. Overview What Is OpenCV? Who Uses OpenCV? What Is Computer Vision? The Origin of OpenCV Downloading and Installing OpenCV Getting the Latest OpenCV via CVS More OpenCV Documentation OpenCV Structure and Content Portability Exercises 2. Introduction to OpenCV Getting Started First Program——Display a Picture Second Program——AVI Video Moving Around A Simple Transformation A Not-So-Simple Transformation Input from a Camera Writing to an AVI File Onward Exercises 3. Gettingto KnowOpenCV OpenCV Primitive Data Types CvMat Matrix Structure IplImage Data Structure Matrix and Image Operators Drawing Things Data Persistence Integrated Performance Primitives Summary Exercises 4. HighGUI A Portable Graphics Toolkit Creating a Window Loading an Image Displaying Images Working with Video ConvertImage Exercises 5. Image Processing Overview Smoothing Image Morphology Flood Fill Resize Image Pyramids Threshold Exercises 6. Image Transforms Overview Convolution Gradients and Sobel Derivatives Laplace Canny Hough Transforms Remap Stretch, Shrink, Warp, and Rotate CartToPolar and PolarToCart LogPolar Discrete Fourier Transform (DFT) Discrete Cosine Transform (DCT) Integral Images Distance Transform Histogram Equalization Exercises 7. Histograms and Matching Basic Histogram Data Structure Accessing Histograms Basic Manipulations with Histograms Some More Complicated Stuff Exercises 8. Contours Memory Storage Sequences Contour Finding Another Contour Example More to Do with Contours Matching Contours Exercises 9. Image Parts and Segmentation Parts and Segments Background Subtraction Watershed Algorithm Image Repair by Inpainting Mean-Shift Segmentation Delaunay Triangulation, Voronoi Tesselation Exercises 10. Tracking and Motion The Basics of Tracking Corner Finding Subpixel Corners Invariant Features Optical Flow Mean-Shift and Camshift Tracking Motion Templates Estimators The Condensation Algorithm Exercises 11. Camera Models and Calibration Camera Model Calibration Undistortion Putting Calibration All Together Rodrigues Transform Exercises 12. Projection and 3D Vision Projections Affine and Perspective Transformations POSIT: 3D Pose Estimation Stereo Imaging Structure from Motion Fitting Lines in Two and Three Dimensions Exercises 13. Machine Learning What Is Machine Learning Common Routines in the ML Library Mahalanobis Distance K-Means Naive/Normal Bayes Classifier Binary Decision Trees Boosting Random Trees Face Detection or Haar Classifier Other Machine Learning Algorithms Exercises 14. OpenCV's Future Past and Future Directions OpenCV for Artists Afterword Bibliography Index

    5
    0
    13.43MB
    2011-04-29
    6
  • 高性能MySQL (第2版) 英文版 High Performance MySQL

    "" is the definitive guide to building fast, reliable systems with MySQL. Written by noted experts with years of real-world experience building very large systems, this book covers every aspect of MySQL performance in detail, and focuses on robustness, security, and data integrity. "High Performance MySQL" teaches you advanced techniques in depth so you can bring out MySQL's full power. Learn how to design schemas, indexes, queries and advanced MySQL features for maximum performance, and get detailed guidance for tuning your MySQL server, operating system, and hardware to their fullest potential. You'll also learn practical, safe, high-performance ways to scale your applications with replication, load balancing, high availability, and failover. This second edition is completely revised and greatly expanded, with deeper coverage in all areas. Major additions include: Emphasis throughout on both performance and reliability Thorough coverage of storage engines, including in-depth tuning and optimizations for the InnoDB storage engine Effects of new features in MySQL 5.0 and 5.1, including stored procedures, partitioned databases, triggers, and views A detailed discussion on how to build very large, highly scalable systems with MySQL New options for backups and replication Optimization of advanced querying features, such as full-text searches Four new appendices The book also includes chapters on benchmarking, profiling, backups, security, and tools and techniques to help you measure, monitor, and manage your MySQL installations.

    5
    47
    5.63MB
    2011-04-29
    3
  • SQl常用语句汇总 PDF

    SQl常用语句汇总 ,汇总了最常用的一些SQL语句,方便易用。。。。。。。。。。。。。。。。。

    4
    33
    269KB
    2011-04-29
    3
  • 深入分析Linux内核源码

    前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 1.4.1 开发适合自己的操作系统 1.4.2 开发高水平软件 1.4.3 有助于计算机科学的教学和科研 1.5 Linux内核结构 1.5.1 Linux内核在整个操系统中的位置 1.5.2 Linux内核的作用 1.5.3 Linux内核的抽象结构 1.6 Linux内核源代码 1.6.1 多版本的内核源代码 1.6.2 Linux内核源代码的结构 1.6.3 从何处开始阅读源代码 1.7 Linux内核源代码分析工具 1.7.1 Linux超文本交叉代码检索工具 1.7.2 Windows平台下的源代码阅读工具Source Insight 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.1.1通用寄存器 2.1.2段寄存器 2.1.3状态和控制寄存器 2.1.4 系统地址寄存器 2.1.5 调试寄存器和测试寄存器 2.2 内存地址 2.3 段机制和描述符 2.3.1 段机制 2.3.2 描述符的概念 2.3.3系统段描述符 2.3.4 描述符表 2.3.5 选择符与描述符表寄存器 2.3.6 描述符投影寄存器 2.3.7 Linux中的段 2.4 分页机制 2.4.1 分页机构 2.4.2页面高速缓存 2.5 Linux中的分页机制 2.5.1 与页相关的数据结构及宏的定义 2.5.2 对页目录及页表的处理 2.6 Linux中的汇编语言 2.6.1 AT&T与Intel汇编语言的比较 2.6.2 AT&T汇编语言的相关知识 2.6.3 Gcc嵌入式汇编 2.6.4 Intel386汇编指令摘要 第三章中断机制 3.1 中断基本知识 3.1.1 中断向量 3.1.2 外设可屏蔽中断 3.1.3异常及非屏蔽中断 3.1.4中断描述符表 3.1.5 相关汇编指令 3.2中断描述符表的初始化 3.2. 1 外部中断向量的设置 3.2.2中断描述符表IDT的预初始化 3.2.3 中断向量表的最终初始化 3.3异常处理 3.3.1 在内核栈中保存寄存器的值 3.3.2 中断请求队列的初始化 3.3.3中断请求队列的数据结构 3.4 中断处理 3.4.1中断和异常处理的硬件处理 3.4.2 Linux对异常和中断的处理 3.4.3 与堆栈有关的常量、数据结构及宏 3.4.4 中断处理程序的执行 3.4.5 从中断返回 3.5中断的后半部分处理机制 3.5.1 为什么把中断分为两部分来处理 3.5.2 实现机制 3.5.3数据结构的定义 3.5.4 软中断、bh及tasklet的初始化 3.5.5后半部分的执行 3.5.6 把bh移植到tasklet 第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.4.1 进程内核栈 4.4.2 当前进程(current宏) 4.5 进程组织的方式 4.5.1哈希表 4.5.2双向循环链表 4.5.3 运行队列 4.5.4 等待队列 4.6 内核线程 4.7 进程的权能 4.8 内核同步 4.8.1信号量 4.8.2原子操作 4.8.3 自旋锁、读写自旋锁和大读者自旋锁 4.9 本章小节 第五章进程调度 5.1 Linux时间系统 5.1.1 时钟硬件 5.1.2 时钟运作机制 5.1.3 Linux时间基准 5.1.4 Linux的时间系统 5.2 时钟中断 5.2.1 时钟中断的产生 5.2.2.Linux实现时钟中断的全过程 5.3 Linux的调度程序-Schedule( ) 5.3.1 基本原理 5.3.2 Linux进程调度时机 5.3.3 进程调度的依据 5.3.4 进程可运行程度的衡量 5.3.5 进程调度的实现 5.4 进程切换 5.4.1 硬件支持 5.4.2 进程切换 第六章 Linux内存管理 6.1 Linux的内存管理概述 6.1.1 Linux虚拟内存的实现结构 6.1.2 内核空间和用户空间 6.1.3 虚拟内存实现机制间的关系 6.2 Linux内存管理的初始化 6.2.1 启用分页机制 6.2.2 物理内存的探测 6.2.3 物理内存的描述 6.2.4 页面管理机制的初步建立 6.2.5页表的建立 6.2.6内存管理区 6.3 内存的分配和回收 6.3.1 伙伴算法 6.3.2 物理页面的分配和释放 6.3.3 Slab分配机制 6.4 地址映射机制 6.4.1 描述虚拟空间的数据结构 6.4.2 进程的虚拟空间 6.4.3 内存映射 6.5 请页机制 6.5.1 页故障的产生 6.5.2 页错误的定位 6.5.3 进程地址空间中的缺页异常处理 6.5.4 请求调页 6.5.5 写时复制 6.6 交换机制 6.6.1 交换的基本原理 6.6.2 页面交换守护进程kswapd 6.6.3 交换空间的数据结构 6.6.4 交换空间的应用 6.7 缓存和刷新机制 6.7.1 Linux使用的缓存 6.7.2 缓冲区高速缓存 6.7.3 翻译后援存储器(TLB) 6.7.4 刷新机制 6.8 进程的创建和执行 6.8.1 进程的创建 6.8.2 程序执行 6.8.3 执行函数 第七章 进程间通信 7.1 管道 7.1.1 Linux管道的实现机制 7.1.2 管道的应用 7.1.3 命名管道(FIFO) 7.2 信号(signal) 7.2.1 信号种类 7.2.2 信号掩码 7.2.3 系统调用 7.2.4 典型系统调用的实现 7.2.5 进程与信号的关系 7.2.6 信号举例 7.3 System V 的IPC机制 7.3.1 信号量 7.3.2 消息队列 7.3.3 共享内存 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.2.1 超级块 8.2.2 VFS的索引节点 8.2.3 目录项对象 8.2.4 与进程相关的文件结构 8.2.5 主要数据结构间的关系 8.2.6 有关操作的数据结构 8.3 高速缓存 8.3.1 块高速缓存 8.3.2 索引节点高速缓存 8.3.3 目录高速缓存 8.4 文件系统的注册、安装与拆卸 8.4.1 文件系统的注册 8.4.2 文件系统的安装 8.4.3 文件系统的卸载 8.5 限额机制 8.6 具体文件系统举例 8.6.1 管道文件系统pipefs 8.6.2 磁盘文件系统BFS 8.7 文件系统的系统调用 8.7.1 open 系统调用 8.7.2 read 系统调用 8.7.3 fcntl 系统调用 8 .8 Linux2.4文件系统的移植问题 第九章 Ext2文件系统 9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.2.1 Ext2的磁盘布局 9.2.2 Ext2的超级块 9.2.3 Ext2的索引节点 9.2.4 组描述符 9.2.5 位图 9.2.6 索引节点表及实例分析 9.2.7 Ext2的目录项及文件的定位 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 9.5.1 数据块寻址 9.5.2 文件的洞 9.5.3 分配一个数据块 第十章 模块机制 10.1 概述 10.1.1 什么是模块 10.1.2 为什么要使用模块? 10.2 实现机制 10.2.1 数据结构 10.2.2 实现机制的分析 10.3 模块的装入和卸载 10.3.1 实现机制 10.3.2 如何插入和卸载模块 10.4 内核版本 10.4.1 内核版本与模块版本的兼容性 10.4.2 从版本2.0到2.2内核API的变化 10.4.3 把内核2.2移植到内核2.4 10.5 编写内核模块 10.5.1 简单内核模块的编写 10.5.2 内核模块的Makefiles文件 10.5.3 内核模块的多个文件 第十一章 设备驱动程序 11.1 概述 11.1.1 I/O软件 11.1.2 设备驱动程序 11.2 设备驱动基础 11.2.1 I/O端口 11.2.2 I/O接口及设备控制器 11.2.3 设备文件 11.2.4 VFS对设备文件的处理 11.2.5 中断处理 11.2.6 驱动DMA工作 11.2.7 I/O 空间的映射 11.2.8 设备驱动程序框架 11.3 块设备驱动程序 11.3.1 块设备驱动程序的注册 11.3.2 块设备基于缓冲区的数据交换 11.3.3 块设备驱动程序的几个函数 11.3.4 RAM 盘驱动程序的实现 11.3.5 硬盘驱动程序的实现 11.4 字符设备驱动程序 11.4.1 简单字符设备驱动程序 11.4.2 字符设备驱动程序的注册 11.4.3 一个字符设备驱动程序的实例 11.4.4 驱动程序的编译与装载 第十二章 网络 12.1 概述 12.2 网络协议 12.2.1 网络参考模型 12.2.2 TCP/IP 协议工作原理及数据流 12.2.3 Internet 协议 12.2.4 TCP协议 12.3 套接字(socket) 12.3.1 套接字在网络中的地位和作用 12.3.2 套接字接口的种类 12.3.3 套接字的工作原理 12.3.4 socket 的通信过程 12.3.5 socket为用户提供的系统调用 12.4 套接字缓冲区(sk_buff) 12.4.1 套接字缓冲区的特点 12.4.2 套接字缓冲区操作基本原理 12.4.3 sk_buff数据结构的核心内容 12.4.4 套接字缓冲区提供的函数 12.4.5 套接字缓冲区的上层支持例程 12.5 网络设备接口 12.5.1 基本结构 12.5.2 命名规则 12.5.3 设备注册 12.5.4 网络设备数据结构 12.5.5 支持函数 第十三章 启动系统 13.1 初始化流程 13.1.1 系统加电或复位 13.1.2 BIOS启动 13.1.3 Boot Loader 13.1.4 操作系统的初始化 13.2 初始化的任务 13.2.1 处理器对初始化的影响 13.2.2 其他硬件设备对处理器的影响 13.3 Linux 的Boot Loarder 13.3.1 软盘的结构 13.3.2 硬盘的结构 13.3.3 Boot Loader 13.3.4 LILO 13.3.5 LILO的运行分析 13.4 进入操作系统 13.4.1 Setup.S 13.4.2 Head.S 13.5 main.c中的初始化 13.6 建立init进程 13.6.1 init进程的建立 13.6.2 启动所需的Shell脚本文件 附录: 1 Linux 2.4内核API 2.1 驱动程序的基本函数 2.2 双向循环链表的操作 2.3 基本C库函数 2.4 Linux内存管理中Slab缓冲区 2.5 Linux中的VFS 2.6 Linux的连网 2.7 网络设备支持 2.8 模块支持 2.9 硬件接口 2.10 块设备 2.11 USB 设备 2 参考文献

    5
    47
    4.15MB
    2011-04-29
    3
  • 深入Linux内核架构 英文版

    内容简介 《深入Linux内核架构》讨论了Linux内核的概念、结构和实现。主要内容包括多任务、调度和进程管理,物理内存的管理以及内核与相关硬件的交互,用户空间的进程如何访问虚拟内存,如何编写设备驱动程序,模块机制以及虚拟文件系统,Ext文件系统属性和访问控制表的实现方式,内核中网络的实现,系统调用的实现方式,内核对时间相关功能的处理,页面回收和页交换的相关机制以及审计的实现等。此外,《深入Linux内核架构》借助内核源代码中最关键的部分进行讲解,帮助读者掌握重要的知识点,从而在运用中充分展现Linux系统的魅力。《深入Linux内核架构》适合Linux内核爱好者阅读。 编辑推荐 《深入Linux内核架构》:众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。《深入Linux内核架构》结合内核版本2.6.24源代码中最关键的部分。深入讨论Lirnux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等。《深入Linux内核架构》引导你阅读内核源代码,熟悉Lirnux妍有的内在工作机理,充分展现Linux系统的魅力。《深入Linux内核架构》适合Linux系统编程人员、系统管理者以及Linux爱好者学习使用。 内容全面深入 全球开源社区集体智慧结晶 领略Linux内核的绝美风光 媒体推荐 “这本书叙述深入浅出,内容全面详尽,是学习掌握Lmux所有内在工作机理最理想的参考书之一”。   ——C.Glovanni,资深Linux程序开发者 作者简介 作者:(德国)莫尔勒(Wolfgang Mauerer) 译者:郭旭 莫尔勒(Woflgang Mauerer),资深Linux专家,有数十年Linux开发经验。从1997年最初发表关于内核的系列文章开始,他就醉心于解释Linux核心的内部机制、编写相关的文档,此外,他还著有LaTex排版方面的图书,其撰写的大量文章已经被释译成7种语言。 目录 第1章 简介和概述1 1.1 内核的任务2 1.2 实现策略2 1.3 内核的组成部分3 1.3.1 进程、进程切换、调度3 1.3.2 UNIX进程4 1.3.3 地址空间与特权级别6 1.3.4 页表9 1.3.5 物理内存的分配11 1.3.6 计时13 1.3.7 系统调用13 1.3.8 设备驱动程序、块设备和字符设备14 1.3.9 网络14 1.3.10 文件系统14 1.3.11 模块和热插拔15 1.3.12 缓存16 1.3.13 链表处理16 1.3.14 对象管理和引用计数17 1.3.15 数据类型20 1.3.16 本书的局限性22 1.4 为什么内核是特别的23 1.5 行文注记23 1.6 小结27 第2章 进程管理和调度28 2.1 进程优先级28 2.2 进程生命周期30 2.3 进程表示32 2.3.1 进程类型37 2.3.2 命名空间37 2.3.3 进程ID号43 2.3.4 进程关系49 2.4 进程管理相关的系统调用50 2.4.1 进程复制50 2.4.2 内核线程62 2.4.3 启动新程序63 2.4.4 退出进程66 2.5 调度器的实现67 2.5.1 概观67 2.5.2 数据结构69 2.5.3 处理优先级74 2.5.4 核心调度器79 2.6 完全公平调度类84 2.6.1 数据结构85 2.6.2 CFS操作85 2.6.3 队列操作89 2.6.4 选择下一个进程91 2.6.5 处理周期性调度器92 2.6.6 唤醒抢占93 2.6.7 处理新进程93 2.7 实时调度类94 2.7.1 性质94 2.7.2 数据结构95 2.7.3 调度器操作96 2.8 调度器增强97 2.8.1 SMP调度97 2.8.2 调度域和控制组101 2.8.3 内核抢占和低延迟相关工作102 2.9 小结106 第3章 内存管理107 3.1 概述107 3.2 (N)UMA模型中的内存组织109 3.2.1 概述109 3.2.2 数据结构111 3.3 页表123 3.3.1 数据结构124 3.3.2 页表项的创建和操作129 3.4 初始化内存管理129 3.4.1 建立数据结构130 3.4.2 特定于体系结构的设置135 3.4.3 启动过程期间的内存管理153 3.5 物理内存的管理159 3.5.1 伙伴系统的结构159 3.5.2 避免碎片161 3.5.3 初始化内存域和结点数据结构167 3.5.4 分配器API172 3.5.5 分配页177 3.5.6 释放页192 3.5.7 内核中不连续页的分配195 3.5.8 内核映射201 3.6 slab分配器205 3.6.1 备选分配器206 3.6.2 内核中的内存管理207 3.6.3 slab分配的原理209 3.6.4 实现212 3.6.5 通用缓存226 3.7 处理器高速缓存和TLB控制228 3.8 小结230 第4章 进程虚拟内存231 4.1 简介231 4.2 进程虚拟地址空间231 4.2.1 进程地址空间的布局232 4.2.2 建立布局234 4.3 内存映射的原理237 4.4 数据结构238 4.4.1 树和链表238 4.4.2 虚拟内存区域的表示239 4.4.3 优先查找树241 4.5 对区域的操作244 4.5.1 将虚拟地址关联到区域245 4.5.2 区域合并246 4.5.3 插入区域247 4.5.4 创建区域248 4.6 地址空间250 4.7 内存映射251 4.7.1 创建映射251 4.7.2 删除映射253 4.7.3 非线性映射254 4.8 反向映射257 4.8.1 数据结构258 4.8.2 建立逆向映射259 4.8.3 使用逆向映射259 4.9 堆的管理261 4.10 缺页异常的处理263 4.11 用户空间缺页异常的校正268 4.11.1 按需分配/调页269 4.11.2 匿名页271 4.11.3 写时复制271 4.11.4 获取非线性映射272 4.12 内核缺页异常272 4.13 在内核和用户空间之间复制数据274 4.14 小结276 第5章 锁与进程间通信277 5.1 控制机制277 5.1.1 竞态条件277 5.1.2 临界区278 5.2 内核锁机制279 5.2.1 对整数的原子操作280 5.2.2 自旋锁282 5.2.3 信号量283 5.2.4 RCU机制284 5.2.5 内存和优化屏障286 5.2.6 读者/写者锁287 5.2.7 大内核锁288 5.2.8 互斥量288 5.2.9 近似的per-CPU计数器290 5.2.10 锁竞争与细粒度锁291 5.3 SystemV进程间通信292 5.3.1 SystemV机制292 5.3.2 信号量292 5.3.3 消息队列300 5.3.4 共享内存303 5.4 其他IPC机制303 5.4.1 信号303 5.4.2 管道和套接字310 5.5 小结311 第6章 设备驱动程序312 6.1 I/O体系结构312 6.2 访问设备316 6.2.1 设备文件316 6.2.2 字符设备、块设备和其他设备317 6.2.3 使用ioctl进行设备寻址319 6.2.4 主从设备号的表示320 6.2.5 注册321 6.3 与文件系统关联324 6.3.1 inode中的设备文件成员324 6.3.2 标准文件操作325 6.3.3 用于字符设备的标准操作325 6.3.4 用于块设备的标准操作325 6.4 字符设备操作326 6.4.1 表示字符设备326 6.4.2 打开设备文件326 6.4.3 读写操作328 6.5 块设备操作329 6.5.1 块设备的表示330 6.5.2 数据结构331 6.5.3 向系统添加磁盘和分区338 6.5.4 打开块设备文件339 6.5.5 请求结构341 6.5.6 BIO343 6.5.7 提交请求345 6.5.8 I/O调度350 6.5.9 ioctl的实现352 6.6 资源分配353 6.6.1 资源管理353 6.6.2 I/O内存355 6.6.3 I/O端口357 6.7 总线系统358 6.7.1 通用驱动程序模型358 6.7.2 PCI总线363 6.7.3 USB370 6.8 小结376 第7章 模块377 7.1 概述377 7.2 使用模块378 7.2.1 添加和移除378 7.2.2 依赖关系380 7.2.3 查询模块信息381 7.2.4 自动加载382 7.3 插入和删除模块384 7.3.1 模块的表示385 7.3.2 依赖关系和引用389 7.3.3 模块的二进制结构391 7.3.4 插入模块396 7.3.5 移除模块403 7.4 自动化与热插拔404 7.4.1 kmod实现的自动加载404 7.4.2 热插拔405 7.5 版本控制408 7.5.1 校验和方法408 7.5.2 版本控制函数411 7.6 小结412 第8章 虚拟文件系统413 8.1 文件系统类型413 8.2 通用文件模型414 8.2.1 inode415 8.2.2 链接416 8.2.3 编程接口416 8.2.4 将文件作为通用接口417 8.3 VFS的结构417 8.3.1 结构概观418 8.3.2 inode419 8.3.3 特定于进程的信息423 8.3.4 文件操作427 8.3.5 目录项缓存431 8.4 处理VFS对象436 8.4.1 文件系统操作436 8.4.2 文件操作450 8.5 标准函数456 8.5.1 通用读取例程457 8.5.2 失效机制459 8.5.3 权限检查461 8.6 小结463 第9章 Ext文件系统族464 9.1 简介464 9.2 Ext2文件系统465 9.2.1 物理结构465 9.2.2 数据结构470 9.2.3 创建文件系统484 9.2.4 文件系统操作485 9.3 Ext3文件系统507 9.3.1 概念508 9.3.2 数据结构509 9.4 小结511 第10章 无持久存储的文件系统512 10.1 proc文件系统512 10.1.1 /proc的内容513 10.1.2 数据结构519 10.1.3 初始化522 10.1.4 装载proc文件系统523 10.1.5 管理/proc数据项525 10.1.6 读取和写入信息528 10.1.7 进程相关的信息530 10.1.8 系统控制机制535 10.2 简单的文件系统542 10.2.1 顺序文件542 10.2.2 用libfs编写文件系统546 10.2.3 调试文件系统547 10.2.4 伪文件系统549 10.3 sysfs549 10.3.1 概述550 10.3.2 数据结构550 10.3.3 装载文件系统554 10.3.4 文件和目录操作556 10.3.5 向sysfs添加内容562 10.4 小结564 第11章 扩展属性和访问控制表565 11.1 扩展属性565 11.1.1 到虚拟文件系统的接口566 11.1.2 Ext3中的实现570 11.1.3 Ext2中的实现576 11.2 访问控制表577 11.2.1 通用实现577 11.2.2 Ext3中的实现580 11.2.3 Ext2中的实现585 11.3 小结585 …… 第12章 网络586 第13章 系统调用655 第14章 内核活动678 第15章 时间管理714 第16章 页缓存和块缓存761 第17章 数据同步793 第18章 页面回收和页交换821 第19章 审计882 附录A 体系结构相关知识899 附录B 使用源代码919 附录C 有关C语言的注记947 附录D 系统启动985 附录E ELF二进制格式 附录F 内核开发过程 参考文献

    5
    0
    7.82MB
    2011-04-29
    3
上传资源赚积分or赚钱