Linux内核分析及应用 - (EPUB全文下载)
文件大小:0.44 mb。
文件格式:epub 格式。
书籍内容:
Linux内核分析及应用
第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章 进程与线程
只要是计算机科班出身的技术人员,肯定都学过现代操作系统课程。一般在操作系统的书中都会有这样的定义:
简单来说,进程就是在操作系统中运行的程序,是操作系统资源管理的最小单位。一个进程可以管理多个线程,线程相对轻量,可以共享进程地址空间。
我在很多次面试的时候,向求职者提问过进程和线程在Linux中到底有什么区别,不只是科班出身的应届生,连工作多年的老手,也有很多回答不准确。传统的教育缺乏实践环节,而计算机恰恰是一个实践性很强的学科,假如只是知道一个概念,却不知道它具体在代码中的表现形式以及背后的实现原理,那么知道与不知道这个概念又有何分别呢?
那么,线程和进程到底有什么区别呢?既然进程可以管理线程,是否说明进程就特别牛呢?另外,搞出这些概念到底 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Linux内核分析及应用 - (EPUB全文下载)