-
阅读客户端:
爱阅读客户端
如果您尚未下载客户端,点击下面图标下载 - 支持阅读载体:
- 评分:
(已有0条评价)
- 纸版书:Linux内核分析及应用
- Ebook价:¥40.00
基本信息


编辑推荐
Analysis and Application of Linux Kernel
内核分析
及应用
资深架构师十余年开发经验的结晶,国内多位架构师联袂推荐。
基于Linux 4.5.2 内核源代码,深入分析了Linux内核设计与实现,并对诸多经典应用的关键技术进行了剖析。
陈科 编著
内容简介
计算机书籍
本书由资深架构师亲力打造,分享了他十多年后端开发经验,特别是围绕Linux系统进行的服务开发经验。本书共8章,主要内容包括:第1章介绍Linux对进程和线程的实现原理,并分析了Memcached和Nginx工作进程池模型的实现;第2章介绍并发的概念以及Linux中的并发相关工具,然后分析常见开源软件的并发问题;第3章介绍Linux是如何进行内存管理的,分析了Memcached和Redis的内存管理机制。第4章介绍Linux系统对中断进行的封装和实现原理;第5章介绍I/O的全过程,并介绍了某些开源系统中I/O相关调用的实现等;第6章介绍Linux文件系统的整体架构及核心概念,然后介绍了ext4文件系统特点,以及tfs小文件系统的设计思路;第7章介绍Linux进程隔离技术,以及Docker容器的部分实现;第8章介绍Linux网络层数据的流转过程,以及lvs如何在netfilter上定制,最后分析了Nginx服务器socket监听初始化的过程。
作译者
目录
第1章 进程与线程 1
1.1 进程和线程的概念 1
1.1.1 进程的历史 1
1.1.2 线程的不同玩法 3
1.2 Linux对进程和线程的实现 5
1.2.1 Linux中的进程实现 6
1.2.2 进程创建之后 12
1.2.3 内核线程和进程的区别 13
1.2.4 用户线程库pthread 15
1.3 进程的调度 16
1.3.1 进程调度机制的架构 16
1.3.2 进程切换的原理 19
1.3.3 调度中的CPU亲和度 21
1.4 在应用程序中管理进程和线程 22
1.4.1 Memcached线程池模型分析 22
1.4.2 Nginx进程模型分析 24
1.5 处理进程和线程的相关工具 25
1.5.1 开发环境调试线程 25
1.5.2 进程崩溃调试方法 26
前言
随着计算机技术的发展,开发人员想要根据业务需求写出相关实现代码还是比较容易的,因为已经有了很多工具、组件、库等可帮助我们实现功能。开发人员很少会自己裸写代码,不会从底层到上层全部由自己来实现。于是,很多开发人员一旦遇到程序出现问题就会茫然失措,不知道该如何处理,甚至故障诊断和分析都成了一门高深的技术难题。
我们做任何一件事情都应该知其然,并知其所以然。操作系统是计算机的基础,所有的应用程序都是运行在操作系统之上的,所以,不管开发人员使用什么语言,开发什么行业的应用,都应该了解操作系统的原理与实现细节。
本人因为长期从事系统架构相关的工作,在涉及一些中间件或者基础组件的研发工作过程中,经常会与操作系统打交道,特别是Linux内核。我个人认为,所有应用开发人员都应该了解操作系统的实现原理和思路。Linux是人类工程史上的一个奇迹(那么大的工程,那么多人在网络上维护,能保持那么高的可用性),Linux内核作为一个开放源码的工程,在很多方面值得我们学习和借鉴。其实在工程领域,很多问题的解题思路是类似的,掌握内核的实现,对于我们更好地编写高性能、高可靠性的程序有很大帮助,也更加利于千里定位故障,秒杀Bug。
Linux体系结构
操作系统是所有应用程序生长的河床,它帮我们屏蔽各种硬件的细节,并且抽象出各种系统调用供应用开发人员来使用。
下面来介绍一下本书将要介绍的Linux内核的体系结构(图1),以便于后续章节展开分析。
图1Linux内核的体系结构
整个Linux内核可以分为4层:
驱动管理层,驱动并管理外部一些硬件设备,例如磁盘、网卡等。
工具层,内核抽象出一些通用组件便于自己使用,例如并发管理中的一些锁、per-cpu变量等工具,另外还有中断机制,也给进程管理、信号处理等提供了基础功能。
系统能力层,操作系统的功能包括进程管理、内存管理、文件系统、I/O管理、网络等,这些功能都是基于工具层和驱动管理层提供的能力来构建的。
系统调用接口层(syscall),给应用程序开发人员提供相关接口。因为系统调用的使用成本较高,参数也比较多,需要对内核有较多了解,所以,又抽象出一些libc等库函数来封装系统调用,应用开发人员一般都是通过libc等库来与内核打交道的。
推荐预备知识
理论上说,只需具备一门编程语言的开发基础就能阅读本书,不过,为了更好地研究操作系统,我推荐大家先阅读下面的书籍:
《80x86汇编语言程序设计》(沈美明等),与CPU打交道最好的方式还是汇编语言,另外,了解汇编语言也方便更好地掌握计算机体系结构,进而深入理解系统的工作原理。
《Intel开发手册卷3》,Intel公司的开发手册,可以让读者了解CPU的工作原理、基本指令集等。CPU相关的功能也是内核最为重要的部分之一。
《自己动手编写操作系统》(于渊),该书通过编写一个简易系统,让读者更加了解硬件的工作原理。
《Linux内核完全注释》(v0.11)(赵炯),通过对0.11版本的Linux学习,可以了解早期的内核架构,这对学习新版本内核也有很大的帮助。
媒体评论
——许泽彬,淘宝技术专家
本书每一章不仅介绍Linux核心理念和实现,而且还拓展技术的延展性,重新思考Nginx、Redis、LVS等产品的技术发展脉络。
——杨翔,广东三维家信息科技有限公司CTO、前蚂蚁金服高级技术专家
本书以实战的方式演绎了如何去“知其然”,更示范了如何去“知其所以然”。
——胡志强,前马云公益基金会平台总经理,阿里巴巴技术总监
本书对Linux内核源代码的分析深入浅出,娓娓道来,涵盖了Linux内核的各个重要方面,并且涉及目前业界热门的容器与虚拟化技术。
——冯黎,前华为软件开放平台架构师
对于从事Linux平台的开发者来说,本书无疑是一次知识盛宴。
——刘晓飞,前58同城首席架构师,技术总监
Linux是一个庞大且伟大的工程,如果你不满足于站在巨人的肩膀上,想要知其所以然,提升自己面对未知问题时的“迁移学习”能力,那么本书将是一个很好的起点。
——郁佳杰,贝贝网CTO
我已经要沉浸在这本书的乐趣中了,相信这本书可以让大家能够更快地掌握和理解Linux精髓,这是一件非常伟大的贡献!
——焦英俊,未达科技创始人,前阿里巴巴中文站首席架构师,技术总监
本书作者拥有丰富的架构工作经验,是以架构师身份在学习、实践Linux的过程中总结出来的产物。
——金立,河狸家技术VP
本书结合了作者多年的实战经验,带着大家进行“知其然”的实践和思考,非常值得一读。
——张晓科,顶象科技风控技术负责人 前阿里巴巴风控技术专家
本书最大的特点就是以应用层和Linux内核的运行机制相结合的方式,站在程序应用的视角深入内核这个奇妙的世界,读来有一种醍醐灌顶的畅快感。
——徐兆朋,爱财科技集团技术负责人