当前位置:主页 > 书籍配套资源 > FreeBSD配套资源
《FreeBSD操作系统设计与实现(原书第2版)》配书资源

《FreeBSD操作系统设计与实现(原书第2版)》配书资源

  • 更新:2021-12-04
  • 大小:127.8 MB
  • 类别:FreeBSD
  • 作者:[美]马歇尔·柯克·麦库西克(Marshall、Kirk、McKusick)、乔治·V.、内维尔-尼尔(George、V.、Neville-Neil)、罗伯特·N.、M.、沃森(Robert、N.、M.、Watson)
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

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

本书是Marshall Kirk McKusick、George V. Neville-Neil、Robert N. M. Watson三位FreeBSD系统引领者的倾力巨著。Marshall Kirk McKusick实现了4.2BSD快速文件系统,并负责监督4.3BSD和4.4BSD的开发与发布。George V. Neville-Neil编写了安全、网络和操作系统相关的许多资料。Robert N. M. Watson为FreeBSD核心团队服务了10年之久,并且当了15年贡献者。他们三位作为FreeBSD基金会的董事会成员,为FreeBSD的不断发展和演进做出了巨大贡献。

FreeBSD始于1993年,经过近30年的发展,已经成为世界上非常重要的操作系统之一。当前有很多公司的核心平台在使用FreeBSD操作系统,FreeBSD的一些设计思想和理念也深刻影响着操作系统世界。

目录

  • 译者序
  • 前言
  • 作者简介
  • 第一部分概述
  • 第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
  • 第10章Zettabyte文件系统421
  • 第11章网络文件系统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
  • 第四部分进程间通信
  • 第12章进程间通信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
  • 第13章网络层协议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
  • 第14章传输层协议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
  • 第五部分系统运行
  • *第15章系统启动与关闭594
  • *术语表
  • *参考文献

资源下载

资源下载地址1:https://pan.baidu.com/s/18Ga8Pn2p6QGQ-Mo2d2iPgg

相关资源

网友留言