《FreeBSD操作系统设计与实现(原书第2版)》([美]马歇尔·柯克·麦库西克(Marshall Kirk McKusick),[美]乔治·V.内维尔-尼尔(George V. Neville-Neil),[美]罗伯特·N.M.沃森(Ro-图书推荐

内容提要

本书由FreeBSD系统的三位引领者撰写,在上一版基础上做了大幅更新,涵盖FreeBSD 5和FreeBSD 11之间的所有重大改进,如使用FreeBSD Jail的高度可扩展和轻量级虚拟化、使用Xen和Virtio设备半虚拟化的虚拟机加速、Capsicum沙箱和GELI加密磁盘保护以及DTrace内核调试技巧等。全书从接口到内核再到硬件逐层深入,详细阐述实现每个重要系统组件——进程管理、安全、虚拟内存、I/O系统、文件系统、socket IPC和网络等——所使用的概念、数据结构和算法。本书可以作为高等院校操作系统相关课程的教材或参考书,也可以作为系统开发人员和管理人员的学习指南。

目录

译者序
前言
作者简介
**部分概述
第1章BSD系统的历史和目标2
1.1UNIX系统的历史2
1.1.1UNIX系统的起源2
1.1.2Research小组的UNIX系统3
1.1.3AT&T UNIX System Ⅲ和System V4
1.1.4伯克利软件发布5
1.1.5UNIX无处不在6
1.2BSD和其他系统6
1.3BSD向开放源代码的转变8
1.3.1Networking Release 28
1.3.2法律诉讼10
1.3.34.4BSD11
1.3.44.4BSD-Lite Release 211
1.4FreeBSD的开发模式12
第2章FreeBSD设计概述16
2.1FreeBSD的功能和内核16
2.2内核结构17
2.3内核服务20
2.4进程管理21
2.4.1信号22
2.4.2进程组和会话23
2.5安全23
2.5.1进程凭证24
2.5.2特权模型25
2.5.3自主访问控制25
2.5.4能力模型25
2.5.5Jail轻型虚拟化26
2.5.6强制访问控制27
2.5.7事件审计27
2.5.8密码学与随机数生成器28
2.6内存管理28
2.6.1BSD内存管理设计要点29
2.6.2内核中的内存管理30
2.7I/O系统概述31
2.7.1描述符与I/O31
2.7.2描述符管理33
2.7.3设备34
2.7.4套接字IPC34
2.7.5分散-收集I/O35
2.7.6多文件系统支持35
2.8设备36
2.9快速文件系统36
2.10Zettabyte文件系统40
2.11网络文件系统41
2.12进程间通信41
2.13网络层协议42
2.14传输层协议43
2.15系统启动和停止43
习题44
第3章内核服务45
3.1内核结构45
3.1.1系统进程45
3.1.2系统入口46
3.1.3运行时的内核结构46
3.1.4内核的入口48
3.1.5从内核返回49
3.2系统调用49
3.2.1调用结果的处理49
3.2.2从系统调用返回50
3.3陷阱和中断51
3.3.1I/O设备中断51
3.3.2软件中断51
3.4时钟中断52
3.4.1统计和进程调度53
3.4.2超时54
3.5内存管理服务55
3.6时间服务58
3.6.1真实时间59
3.6.2外部表示59
3.6.3调整时间59
3.6.4时间间隔60
3.7资源服务60
3.7.1进程优先级60
3.7.2资源利用61
3.7.3资源限制61
3.7.4文件系统配额62
3.8内核跟踪工具62
3.8.1系统调用跟踪62
3.8.2DTrace63
3.8.3内核跟踪66
习题68
第二部分进程
第4章进程管理70
4.1进程管理概述70
4.1.1多道程序设计71
4.1.2调度72
4.2进程状态73
4.2.1进程结构75
4.2.2线程结构78
4.3上下文切换79
4.3.1线程状态79
4.3.2底层上下文切换80
4.3.3主动上下文切换80
4.3.4同步84
4.3.5互斥锁同步85
4.3.6互斥锁接口87
4.3.7锁同步88
4.3.8死锁预防89
4.4线程调度91
4.4.1低级调度器91
4.4.2线程运行队列和上下文切换92
4.4.3分时线程调度93
4.4.4多处理器调度98
4.4.5自适应空闲100
4.4.6传统的分时线程调度100
4.5创建进程101
4.6终止进程102
4.7信号103
4.7.1发送信号106
4.7.2传输信号108
4.8进程组和会话110
4.8.1进程组110
4.8.2会话111
4.8.3作业控制112
4.9进程的调试114
习题116
第5章安全性118
5.1操作系统安全119
5.2安全模型120
5.2.1进程模型120
5.2.2自主与强制访问控制120
5.2.3可信计算基121
5.2.4其他内核安全特性121
5.3进程凭证121
5.3.1凭证结构122
5.3.2凭证内存模型123
5.3.3访问控制校验124
5.4用户和组124
5.5特权模型126
5.5.1隐式特权127
5.5.2显式特权127
5.6进程间访问控制128
5.6.1可见性129
5.6.2信号129
5.6.3调度控制129
5.6.4等待进程终止130
5.6.5调试130
5.7自主访问控制130
5.7.1虚拟文件系统接口与DAC131
5.7.2对象属主与组132
5.7.3UNIX权限132
5.7.4访问控制列表134
5.7.5POSIX.1e访问控制列表136
5.7.6NFSv4访问控制列表138
5.8Capsicum能力模型141
5.8.1Capsicum应用体系结构142
5.8.2能力系统142
5.8.3能力143
5.8.4能力模型145
5.9Jail146
5.10强制访问控制框架151
5.10.1强制策略151
5.10.2设计的指导原则152
5.10.3MAC框架的体系结构153
5.10.4启动框架154
5.10.5策略注册155
5.10.6框架入口点设计考量155
5.10.7策略入口点设计考量156
5.10.8内核服务入口点调用157
5.10.9策略组合158
5.10.10给对象打标签159
5.10.11标签的生命周期与存储管理159
5.10.12标签同步162
5.10.13从用户空间进行策略无关的标签管理163
5.11安全事件审计163
5.11.1审计事件与记录164
5.11.2BSM审计记录与审计跟踪165
5.11.3内核审计的实现166
5.12加密服务168
5.12.1加密框架168
5.12.2随机数生成器170
5.13GELI全磁盘加密173
5.13.1机密性和完整性保护173
5.13.2密钥管理174
5.13.3启动GELI174
5.13.4加密块保护175
5.13.5I/O模型176
5.13.6不足176
习题177
第6章存储管理178
6.1术语178
6.1.1进程与内存179
6.1.2调页机制180
6.1.3替换算法180
6.1.4工作集模型181
6.1.5交换机制181
6.1.6虚拟内存的优点182
6.1.7虚拟内存的硬件要求182
6.2FreeBSD 虚拟内存系统概述183
6.3内核的存储管理185
6.3.1内核映射和子映射186
6.3.2内核地址空间的分配188
6.3.3slab分配器190
6.3.4keg分配器191
6.3.5zone分配器192
6.3.6内核malloc194
6.3.7内核zone分配器196
6.4进程独立拥有的资源197
6.4.1FreeBSD的进程虚拟地址空间197
6.4.2缺页处理199
6.4.3映射到vm_object199
6.4.4vm_object201
6.4.5vm_object到页面201
6.5共享内存202
6.5.1mmap模型203
6.5.2共享映射205
6.5.3私有映射205
6.5.4压缩影子链207
6.5.5私有快照208
6.6创建新进程209
6.6.1预留内核资源210
6.6.2复制用户地址空间211
6.6.3不通过复制创建新进程211
6.7执行一个文件212
6.8操作进程地址空间213
6.8.1改变进程大小213
6.8.2文件映射214
6.8.3改变保护权限215
6.9终止进程215
6.10调页器接口216
6.10.1vnode调页器218
6.10.2设备调页器219
6.10.3物理内存调页器220
6.10.4交换调页器221
6.11调页机制224
6.11.1硬件高速缓存的设计228
6.11.2硬件内存管理229
6.11.3**页231
6.12页面替换235
6.12.1调页参数237
6.12.2pageout守护进程237
6.12.3交换机制240
6.12.4换入进程242
6.13可移植性243
6.13.1pmap模块的作用243
6.13.2初始化和启动245
6.13.3分配和释放映射248
6.13.4改变映射的访问和wiring属性249
6.13.5物理页面使用信息的维护251
6.13.6初始化物理页面251
6.13.7管理内部数据结构252
习题252
第三部分I/O系统
第7章I/O系统概述256
7.1描述符管理和服务257
7.1.1打开文件条目258
7.1.2描述符管理260
7.1.3异步I/O261
7.1.4文件描述符锁261
7.1.5描述符的多路I/O复用263
7.1.6select的实现265
7.1.7kqueue和kevent267
7.1.8数据在内核中的迁移269
7.2本地进程间交互270
7.2.1信号量272
7.2.2消息队列273
7.2.3共享内存274
7.3虚拟文件接口275
7.3.1vnode的内容275
7.3.2vnode的操作277
7.3.3路径名的转换278
7.3.4导出文件系统服务278
7.4独立于文件系统的服务279
7.4.1名字缓存281
7.4.2缓冲区管理282
7.4.3缓冲区管理的实现284
7.5可堆叠的文件系统285
7.5.1简单的文件系统层287
7.5.2联合文件系统288
7.5.3其他文件系统290
习题291
第8章设备292
8.1设备概述292
8.1.1PC I/O体系结构293
8.1.2FreeBSD大容量存储I/O子系统的结构295
8.1.3设备命名和访问296
8.2从用户到设备的I/O映射297
8.2.1设备驱动程序298
8.2.2I/O队列299
8.2.3中断处理299
8.3字符设备299
8.3.1原始设备和物理I/O301
8.3.2面向字符的设备302
8.3.3字符设备驱动程序入口点302
8.4磁盘设备303
8.4.1磁盘设备驱动程序入口点303
8.4.2磁盘I/O请求排序303
8.4.3磁盘标签304
8.5网络设备305
8.5.1网络设备驱动程序入口点306
8.5.2配置与控制306
8.5.3数据包接收307
8.5.4数据包传输309
8.6终端处理309
8.6.1终端处理模式310
8.6.2用户接口312
8.6.3进程组、会话和终端控制313
8.6.4终端操作313
8.6.5终端输出(上半部分)314
8.6.6终端输出(下半部分)315
8.6.7终端输入315
8.6.8关闭终端设备316
8.7GEOM层316
8.7.1术语和拓扑规则317
8.7.2改变拓扑318
8.7.3操作320
8.7.4拓扑灵活性321
8.8CAM层322
8.8.1通过CAM子系统的SCSI I/O请求的路径323
8.8.2ATA磁盘325
8.9设备配置325
8.9.1设备标识327
8.9.2自动配置数据结构329
8.9.3资源管理333
8.10设备虚拟化334
8.10.1与虚拟机监控程序的交互335
8.10.2Virtio336
8.10.3Xen339
8.10.4设备直通346
习题346
第9章快速文件系统348
9.1分层文件系统管理348
9.2inode结构350
9.2.1inode格式的改变351
9.2.2扩展属性352
9.2.3新的文件系统功能354
9.2.4文件标志355
9.2.5动态inode356
9.2.6inode管理357
9.3命名359
9.3.1目录359
9.3.2在目录中查找名称360
9.3.3路径名转换362
9.3.4链接363
9.4配额365
9.5文件锁定368
9.6软*新372
9.6.1在文件系统中的*新依赖373
9.6.2依赖的结构376
9.6.3位图依赖跟踪378
9.6.4inode依赖跟踪378
9.6.5直接块依赖跟踪379
9.6.6间接块依赖跟踪380
9.6.7新间接块的依赖跟踪381
9.6.8新目录入口的依赖跟踪382
9.6.9新目录依赖跟踪384
9.6.10目录入口移除依赖项跟踪385
9.6.11文件截断385
9.6.12文件和目录inode回收385
9.6.13目录入口重命名依赖关系跟踪386
9.6.14软*新的fsync请求386
9.6.15软*新的文件删除要求387
9.6.16fsck的软*新要求389
9.7文件系统快照389
9.7.1创建一个文件系统快照389
9.7.2维护文件系统快照391
9.7.3大文件系统快照392
9.7.4后台fsck393
9.7.5用户可见的快照394
9.7.6实时转储394
9.8日志软*新394
9.8.1背景和简介395
9.8.2与其他实现的兼容性395
9.8.3日志格式395
9.8.4需要日志记录的修改396
9.8.5日志的额外需求397
9.8.6恢复进程398
9.8.7性能399
9.8.8未来工作400
9.8.9跟踪文件移除依赖400
9.9本地文件存储402
9.9.1文件存储概述402
9.9.2用户I/O到一个文件的过程404
9.10伯克利快速文件系统406
9.10.1伯克利快速文件系统的组织406
9.10.2启动块408
9.10.3优化存储利用率408
9.10.4对文件进行读写409
9.10.5布局策略411
9.10.6分配机制413
9.10.7块聚类416
9.10.8基于分区的分配418
习题419
**0章Zettabyte文件系统421
**1章网络文件系统422
11.1概述422
11.2结构和操作424
11.2.1FreeBSD NFS的实现428
11.2.2客户端-服务器端交互432
11.2.3安全问题432
11.2.4性能提升技巧433
11.3NFS演进435
11.3.1命名空间439
11.3.2属性440
11.3.3访问控制列表441
11.3.4缓存、代理和回调441
11.3.5锁447
11.3.6安全448
11.3.7崩溃恢复450
习题451
第四部分进程间通信
**2章进程间通信454
12.1进程间交互模型454
12.2实现结构和概述458
12.3内存管理460
12.3.1mbuf460
12.3.2存储管理算法463
12.3.3mbuf实用例程463
12.4IPC数据结构464
12.4.1套接字地址468
12.4.2锁469
12.5建立连接469
12.6数据传输471
12.6.1传输数据471
12.6.2接收数据473
12.7关闭套接字475
12.8网络通信协议的内部结构476
12.8.1数据流477
12.8.2通信协议478
12.9套接字到协议接口480
12.9.1用户请求协议例程481
12.9.2控制输出协议例程483
12.10协议到协议的接口484
12.10.1pr_output484
12.10.2pr_input485
12.10.3pr_ctlinput485
12.11协议到网络的接口486
12.11.1网络接口和链路层协议486
12.11.2数据包传输492
12.11.3数据包接收492
12.12缓冲和流控493
12.12.1缓冲协议策略494
12.12.2队列限制494
12.13网络虚拟化494
习题496
**3章网络层协议498
13.1IPv4498
13.1.1IPv4地址500
13.1.2广播地址501
13.1.3Internet组播502
13.1.4链路层地址解析503
13.2ICMP504
13.3IPv6506
13.3.1IPv6地址507
13.3.2IPv6数据包格式509
13.3.3切换到套接字API510
13.3.4自动配置511
13.4Internet协议代码结构515
13.4.1输出515
13.4.2输入517
13.4.3转发518
13.5路由519
13.5.1内核路由表520
13.5.2路由选择查询522
13.5.3路由选择重定向525
13.5.4路由表接口525
13.5.5用户级路由选择策略526
13.5.6用户级路由选择接口:路由选择套接字526
13.6原始套接字527
13.6.1控制块528
13.6.2输入处理528
13.6.3输出处理529
13.7安全529
13.7.1IPSec概述530
13.7.2安全协议531
13.7.3密钥管理533
13.7.4IPSec实现537
13.8数据包处理框架539
13.8.1伯克利数据包过滤器539
13.8.2IP防火墙540
13.8.3IPFW和Dummynet541
13.8.4数据包过滤器544
13.8.5netgraph545
13.8.6netmap549
习题551
**4章传输层协议553
14.1Internet端口与关联553
14.2用户数据报协议554
14.2.1初始化555
14.2.2输出555
14.2.3输入555
14.2.4控制操作556
14.3传输控制协议556
14.3.1TCP连接状态558
14.3.2序列变量561
14.4TCP算法562
14.4.1定时器563
14.4.2往返时间的估计565
14.4.3建立连接565
14.4.4SYN缓存567
14.4.5SYN cookie568
14.4.6关闭连接569
14.5TCP输入处理569
14.6TCP输出处理572
14.6.1发送数据573
14.6.2避免糊涂窗口综合征573
14.6.3避免小数据包574
14.6.4延迟确认与窗口*新575
14.6.5选择性确认575
14.6.6重传状态577
14.6.7慢启动578
14.6.8缓冲区与窗口大小579
14.6.9使用慢启动进行拥塞避免580
14.6.10快速重传581
14.6.11模块化拥塞控制582
14.6.12Vegas算法584
14.6.13Cubic算法584
14.7流控制传输协议585
14.7.1大数据块585
14.7.2关联建立586
14.7.3数据传输587
14.7.4关联关闭589
14.7.5多宿主和心跳589
习题591
第五部分系统运行
***5章系统启动与关闭594
*术语表
*参考文献

卖贝商城 推荐:《FreeBSD操作系统设计与实现(原书第2版)》([美]马歇尔·柯克·麦库西克(Marshall Kirk McKusick),[美]乔治·V.内维尔-尼尔(George V. Neville-Neil),[美]罗伯特·N.M.沃森(Ro