FreeBSD操作系统设计与实现马歇尔·柯克·麦库西克,乔治·V.内维尔 pdf下载pdf下载

FreeBSD操作系统设计与实现马歇尔·柯克·麦库西克,乔治·V.内维尔百度网盘pdf下载

作者:
简介:本篇提供书籍《FreeBSD操作系统设计与实现马歇尔·柯克·麦库西克,乔治·V.内维尔》百度网盘pdf下载
出版社:万卷出版公司图书专营店
出版时间:2021-10
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息


书名:FreeBSD操作系统设计与实现(原书第2版)

定价:199元

作者:[美]马歇尔·柯克·麦库西克,[美]乔治·V.内维尔-尼尔,

出版社:机械工业出版社

出版日期:2021-10-01

ISBN:9787111689973

字数:

页码:

版次:

装帧:平装

开本:16开

商品重量:

内容提要


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

目录


译者序
前言
作者简介
部分 概述
章 BSD系统的历史和目标2
1.1 UNIX系统的历史2
1.1.1 UNIX系统的起源2
1.1.2 Research小组的UNIX系统3
1.1.3 AT&T UNIX System Ⅲ和System V4
1.1.4 伯克利软件发布5
1.1.5 UNIX无处不在6
1.2 BSD和其他系统6
1.3 BSD向开放源代码的转变8
1.3.1 Networking Release 28
1.3.2 法律诉讼10
1.3.3 4.4BSD11
1.3.4 4.4BSD-Lite Release 211
1.4 FreeBSD的开发模式12
第2章 FreeBSD设计概述16
2.1 FreeBSD的功能和内核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.5 Jail轻型虚拟化26
2.5.6 强制访问控制27
2.5.7 事件审计27
2.5.8 密码学与数生成器28
2.6 内存管理28
2.6.1 BSD内存管理设计要点29
2.6.2 内核中的内存管理30
2.7 I/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.10 Zettabyte文件系统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.1 I/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.2 DTrace63
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.3 UNIX权限132
5.7.4 访问控制列表134
5.7.5 POSIX.1e访问控制列表136
5.7.6 NFSv4访问控制列表138
5.8 Capsicum能力模型141
5.8.1 Capsicum应用体系结构142
5.8.2 能力系统142
5.8.3 能力143
5.8.4 能力模型145
5.9 Jail146
5.10 强制访问控制框架151
5.10.1 强制策略151
5.10.2 设计的指导原则152
5.10.3 MAC框架的体系结构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.2 BSM审计记录与审计跟踪165
5.11.3 内核审计的实现166
5.12 加密服务168
5.12.1 加密框架168
5.12.2 数生成器170
5.13 GELI全磁盘加密173
5.13.1 机密性和完整性保护173
5.13.2 密钥管理174
5.13.3 启动GELI174
5.13.4 加密块保护175
5.13.5 I/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.2 FreeBSD 虚拟内存系统概述183
6.3 内核的存储管理185
6.3.1 内核映射和子映射186
6.3.2 内核地址空间的分配188
6.3.3 slab分配器190
6.3.4 keg分配器191
6.3.5 zone分配器192
6.3.6 内核malloc194
6.3.7 内核zone分配器196
6.4 进程独立拥有的资源197
6.4.1 FreeBSD的进程虚拟地址空间197
6.4.2 缺页处理199
6.4.3 映射到vm_object199
6.4.4 vm_object201
6.4.5 vm_object到页面201
6.5 共享内存202
6.5.1 mmap模型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.1 vnode调页器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.2 pageout守护进程237
6.12.3 交换机制240
6.12.4 换入进程242
6.13 可移植性243
6.13.1 pmap模块的作用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.6 select的实现265
7.1.7 kqueue和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.1 vnode的内容275
7.3.2 vnode的操作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.1 PC I/O体系结构293
8.1.2 FreeBSD大容量存储I/O子系统的结构295
8.1.3 设备命名和访问296
8.2 从用户到设备的I/O映射297
8.2.1 设备驱动程序298
8.2.2 I/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.7 GEOM层316
8.7.1 术语和拓扑规则317
8.7.2 改变拓扑318
8.7.3 操作320
8.7.4 拓扑灵活性321
8.8 CAM层322
8.8.1 通过CAM子系统的SCSI I/O请求的路径323
8.8.2 ATA磁盘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.2 Virt