展开全部

主编推荐语

本书分模块介绍了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.2 线程的不同玩法
  • 1.2 Linux对进程和线程的实现
  • 1.2.1 Linux中的进程实现
  • 1.2.2 进程创建之后
  • 1.2.3 内核线程和进程的区别
  • 1.2.4 用户线程库pthread
  • 1.3 进程的调度
  • 1.3.1 进程调度机制的架构
  • 1.3.2 进程切换的原理
  • 1.3.3 调度中的CPU亲和度
  • 1.4 在应用程序中管理进程和线程
  • 1.4.1 Memcached线程池模型分析
  • 1.4.2 Nginx进程模型分析
  • 1.5 处理进程和线程的相关工具
  • 1.5.1 开发环境调试线程
  • 1.5.2 进程崩溃调试方法
  • 1.5.3 strace工具
  • 1.5.4 SystemTap工具
  • 1.5.5 DTrace工具
  • 1.6 本章小结
  • 第2章 并发
  • 2.1 什么是并发
  • 2.1.1 并发是如何产生的
  • 2.1.2 并发会带来什么问题
  • 2.1.3 如何解决并发带来的问题
  • 2.2 操作系统会在哪些场景遇到并发
  • 2.3 Linux中并发工具的实现
  • 2.3.1 原子变量
  • 2.3.2 自旋锁
  • 2.3.3 信号量
  • 2.3.4 互斥锁
  • 2.3.5 读写锁
  • 2.3.6 抢占
  • 2.3.7 per-cpu变量
  • 2.3.8 RCU机制
  • 2.3.9 内存屏障
  • 2.4 常见开源软件中的并发问题分析
  • 2.4.1 Nginx原子性
  • 2.4.2 Memcached中的互斥锁
  • 2.4.3 Redis无锁解决方案
  • 2.4.4 Linux中惊群问题分析
  • 2.4.5 解决MyCat同步问题
  • 2.4.6 false-sharing问题解决方案
  • 2.5 本章小结
  • 第3章 内存管理
  • 3.1 为什么需要内存管理
  • 3.2 MMU和地址空间
  • 3.2.1 虚拟地址、线性地址、物理地址
  • 3.2.2 MMU的内存管理机制
  • 3.3 Linux中的分段和分页机制
  • 3.3.1 分段机制
  • 3.3.2 分页机制
  • 3.4 Linux的内存管理
  • 3.4.1 物理内存管理
  • 3.4.2 进程地址空间管理
  • 3.5 Linux的内存分配和管理
  • 3.5.1 物理内存分配算法
  • 3.5.2 slab分配器
  • 3.5.3 内核态内存管理
  • 3.5.4 用户态内存申请
  • 3.6 栈内存分配和管理
  • 3.7 内存管理案例分析
  • 3.7.1 Memcached内存管理机制分析
  • 3.7.2 Redis内存管理机制分析
  • 3.8 本章小结
  • 第4章 中断机制
  • 4.1 x86系统的中断机制
  • 4.1.1 x86中断架构
  • 4.1.2 x86在保护模式下的中断
  • 4.2 Linux对中断的支持和实现
  • 4.2.1 初始化IRQ中断门
  • 4.2.2 中断响应流程
  • 4.2.3 中断回调handler注册过程
  • 4.3 Linux加速中断处理的机制
  • 4.3.1 软中断
  • 4.3.2 tasklet
  • 4.3.3 工作队列
  • 4.4 系统调用
  • 4.5 时钟中断
  • 4.6 信号处理机制
  • 4.7 Nginx信号处理机制
  • 4.8 本章小结
  • 第5章 输入输出
  • 5.1 I/O在Linux中的生命周期
  • 5.1.1 vfs层
  • 5.1.2 文件系统层
  • 5.1.3 Block层
  • 5.1.4 scsi层
  • 5.1.5 I/O流程总结
  • 5.2 I/O调度器
  • 5.3 多队列机制
  • 5.4 I/O多路复用实现
  • 5.5 Redis对epoll的封装
  • 5.6 Nginx文件异步I/O
  • 5.7 tail指令为何牛
  • 5.8 零拷贝技术应用分析
  • 5.8.1 mmap
  • 5.8.2 sendfile
  • 5.8.3 mmap和sendfile在开源软件中的使用
  • 5.9 本章小结
  • 第6章 文件系统
  • 6.1 Linux文件系统架构
  • 6.2 文件系统的主要功能
  • 6.2.1 文件系统的安装
  • 6.2.2 文件路径查找
  • 6.3 ext4文件系统
  • 6.3.1 磁盘布局
  • 6.3.2 inode定位
  • 6.3.3 碎片问题解决方案
  • 6.3.4 extent tree结构
  • 6.4 淘宝TFS小文件系统分析
  • 6.5 本章小结
  • 第7章 Linux的进程隔离技术与Docker容器
  • 7.1 虚拟化相关技术
  • 7.2 Linux进程隔离技术
  • 7.2.1 chroot
  • 7.2.2 namespace
  • 7.2.3 cgroup
  • 7.3 Docker容器的部分实现
  • 7.3.1 新版Docker架构
  • 7.3.2 containerd的实现
  • 7.4 本章小结
  • 第8章 Linux网络层数据流分析
  • 8.1 数据在网络层的流转
  • 8.1.1 sk_buff结构
  • 8.1.2 数据流转过程
  • 8.2 socket接口层的实现
  • 8.2.1 socket系统初始化
  • 8.2.2 socket创建
  • 8.2.3 socket绑定
  • 8.2.4 socket监听
  • 8.2.5 socket接受连接
  • 8.2.6 新连接的到来
  • 8.2.7 socket整体流程
  • 8.3 netfilter和lvs
  • 8.3.1 netfilter
  • 8.3.2 lvs
  • 8.4 网络相关的一些参数
  • 8.4.1 Java socket相关的参数
  • 8.4.2 Linux TCP相关队列
  • 8.5 Nginx服务器监听socket初始化过程
  • 8.6 本章小结
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    随着计算机技术的发展,开发人员想要根据业务需求写出相关实现代码还是比较容易的,因为已经有了很多工具、组件、库等可帮助我们实现功能。开发人员很少会自己裸写代码,不会从底层到上层全部由自己来实现。于是,很多开发人员一旦遇到程序出现问题就会茫然失措,不知道该如何处理,甚至故障诊断和分析都成了一门高深的技术难题。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。