图书简介:
第1章 Web服务器开发基础 1
1.1 Web服务器简介 1
1.2 TCP/IP协议族与HTTP 2
1.2.1 TCP/IP协议族 2
1.2.2 HTTP 2
1.3 Socket编程 6
1.4 开发环境与测试环境 14
1.4.1 GCC 15
1.4.2 构建makefile 20
1.4.3 GDB 20
1.4.4 服务性能测试工具 26
1.4.5 性能指标 34
1.5 实验1 Web服务器的初步实现 35
第2章 Web服务器的多进程和多线程模型 37
2.1 背景介绍 37
2.2 进程模型 37
2.2.1 Linux中创建进程的相关函数 37
2.2.2 Linux中进程间通信的相关函数 39
2.2.3 多进程Web服务器模型 47
2.2.4 实验2 Web服务器的多进程模型实现 48
2.3 线程模型 49
2.3.1 Linux线程模型 49
2.3.2 POSIX 线程库接口 49
2.3.3 Linux线程间的同步与互斥 53
2.3.4 Web服务器的多线程模型 55
2.3.5 实验3 Web服务器的多线程模型 61
2.4 线程池模型 62
2.4.1 实验4 Web服务器的线程池模型 67
2.5 业务分割模型 67
2.5.1 实验5 Web服务器的业务分割模型 70
2.6 混合模型 71
2.6.1 实验6 Web服务器的混合模型 73
第3章 Web服务器的内存管理 74
3.1 背景介绍 74
3.2 Web页面的缓存逻辑结构 75
3.3 Web页面的缓存置换算法 81
3.3.1 实验7 Web服务器页面缓存及其替换方法评估 88
3.4 Web服务器的内存管理模型 88
3.4.1 Linux内核内存管理模型 89
3.4.2 Linux用户库函数管理内存方法 97
3.4.3 Nginx 内存管理模型 106
3.4.4 实验8 Web服务器的内存管理 108
第4章 Web服务器的文件存储系统 109
4.1 背景介绍 109
4.2 Linux中的Ext文件系统 109
4.2.1 Ext 2文件系统结构 109
4.2.2 Ext 2文件系统分析 110
4.3 TFS文件系统 111
4.3.1 TFS文件系统架构 111
4.3.2 TFS文件系统性能分析 114
4.4 实验9 Web服务器的文件系统 114
第5章 Web服务器的网络I/O性能优化 116
5.1 背景介绍 116
5.2 Socket I/O多路复用 117
5.2.1 select 117
5.2.2 poll 122
5.2.3 epoll 123
5.3 阻塞和非阻塞I/O 126
5.4 异步I/O 138
5.4.1 异步I/O函数 138
5.4.2 异步通知响应 140
5.5 零拷贝 143
5.6 实验10 Web服务器网络I/O优化 145
展开
“操作系统”课程内容涉及面广,里面讲授的概念、理论和算法较为抽象和难以理解。制约学生理解、掌握其内容的关键因素是缺少好的实验平台。
目前,针对“操作系统”课程开发的实验平台大体分为两种:一种以复现课程内容中理论和相关算法实现为主,另一种以操作系统内核开发为主。第一种实验平台多是以每章为单位的理论验证型实验,如实现银行家算法、实现LRU内存替换算法等。这些实验内容仅复现了课程中的算法,由于缺少具体的应用环境,使学生并不能够体会这些理论和算法在操作系统或实际系统环境中的真实作用。并且由于实验以每章为单位,各部分实验内容之间缺少联系,很难使学生通过这些实验内容来真正理解、掌握和应用这些理论、算法知识。第二种以内核开发为主的实验平台,大多数构造好了基本的内核实现框架,并且实现了很大一部分的代码,仅需要学生补充相关的算法代码即可。这样虽然能够加深学生对课本内容的理解并增强其阅读代码和系统底层编程能力,但是由于整体架构已经设计好,并不能较好地训练学生的系统设计能力(系统设计指的是在面临复杂问题时,能够在综合考虑各种因素前提下,设计出合理的系统程序以最大化地利用计算机系统性能)。
为克服上述两种实验平台的缺点,本书以设计并实现一个具有较高并发性能的Web服务器系统为目标,将操作系统各个部分的理论和算法知识逐步地、有机地融入此服务器系统的设计和开发过程中,使学生学到的知识能够作用于一个完整的系统,使学生在实现每个阶段实验目标的基础上逐渐增强自身系统设计能力和分析能力,并提升他们“学以致理”和“学以致用”的能力。
本书具体内容组织如下。
第1章,Web服务器开发基础。在理解TCP和HTTP协议基础上,利用Socket编程技术实现一个简单的Web服务器,并介绍Web服务器开发环境和测试环境相关工具的使用方法。
第2章,Web服务器的多进程和多线程模型。将多进程、多线程、同步与互斥等概念和理论融入此Web服务器的设计中,并探讨各种提高Web服务器并发处理的设计方案。
第3章,Web服务器的内存管理。在深入分析Linux内核内存管理模型和用户库内存管理模型的基础上,通过介绍Nginx(一个高性能HTTP服务器)在内存管理中的实现方法,来探讨关于Web服务器管理内容的设计方案。
第4章,Web服务器的文件存储系统。在深入分析Linux中的Ext文件系统的基础上,通过介绍支持海量小文件高速读取的TFS(淘宝文件系统)系统架构及其特点,来探讨支持海量Web文件的存储系统设计方案。
第5章,Web服务器的网络I/O性能优化。在分析网络I/O通信模型的基础上,介绍Socket I/O多路复用、非阻塞I/O、异步I/O和零拷贝等技术,以提高Web服务器在高并发环境下网络I/O的通信能力。
本书中的实验内容是编者在多年操作系统实验教学过程中总结、整理而成的,其特点如下:首先,适用性较广,既能够让能力一般的学生经过逐步地学习和训练来设计完成一个较为完整的系统软件,也能够让能力较为突出的学生通过深入钻研操作系统内核和计算机系统结构相关知识来最大限度地发挥系统软件的性能;其次,每个实验阶段的Web服务器性能都会比上一个阶段有所提高,这会极大地激发学生探索新理论和新方法的兴趣;最后,由于本书实验内容具有很好的衡量指标,因此教师可以根据学生完成的Web服务器系统性能好坏及相关实验报告对学生实验成绩给出客观的评价。
本书不仅可以作为“操作系统”课程上机授课教材,还可以作为计算机从业者提升自己的项目训练手册。希望本书能够对大家有所帮助。同时,由于编者知识面有限,书中难免会有疏漏和不足之处,请大家予以见谅,并希望大家提出改正建议。
鲁 强
2023年3月
展开