4.4BSD操作系统设计与实现txt,chm,pdf,epub,mobi下载 作者:Marshall Kirk McKusick 出版社: 机械工业出版社 原作名: The Design and Implementation of the 4.4BSD Operating System 译者:李善平/刘文峰/马天驰 出版年: 2012-1 页数: 399 定价: 79.00元 丛书: 华章专业开发者丛书 ISBN: 9787111366478 内容简介 · · · · · ·《4.4BSD操作系统设计与实现》描述了4.4BSD的内部结构、概念、数据结构以及在实现4.4BSD系统功能时采用的算法,侧重于UNIX系统伯克利版本的功能、数据结构和采用的算法。《4.4BSD操作系统设计与实现》从4.4BSD的系统调用层往下讲述,从接口到内核再到硬件。内核包含系统功能,如进程管理、虚拟内存、系统I/O、文件系统、套接字IPC机制和实现网络协议。除此之外,《4.4BSD操作系统设计与实现》还详细地介绍了进程和内存管理的变化,描述了新的文件系统接口,更新了网络和进程间通信的相关信息。《4.4BSD操作系统设计与实现》适合操作系统实现者、系统程序员、UNIX应用程序开发人员、系统管理员和对操作系统感兴趣的读者阅读。 目录 · · · · · ·译者序前 言 第一部分 综述 第1章 BSD系统的历史和目标 1 1.1 UNIX系统的历史 1 1.1.1 UNIX系统的起源 1 · · · · · ·() 译者序 前 言 第一部分 综述 第1章 BSD系统的历史和目标 1 1.1 UNIX系统的历史 1 1.1.1 UNIX系统的起源 1 1.1.2 UNIX系统的研究与发展 3 1.1.3 AT&T的UNIX系统Ⅲ和系统Ⅴ 5 1.1.4 其他组织 5 1.1.5 关于BSD系统 5 1.1.6 UNIX世界 6 1.2 BSD和其他系统 7 1.3 4BSD的设计目标 9 1.3.1 4.2BSD设计目标 9 1.3.2 4.3BSD设计目标 10 1.3.3 4.4BSD设计目标 10 1.4 系统的发布 11 参考资源 13 第2章 4.4BSD设计综述 16 2.1 4.4 BSD模块与内核 16 2.2 内核结构 17 2.3 内核提供的服务 19 2.4 进程管理 19 2.4.1 信号 20 2.4.2 进程组和会话 21 2.5 内存管理 22 2.5.1 BSD内存管理设计要点 22 2.5.2 内核中的内存管理 23 2.6 I/O系统 24 2.6.1 描述符与I/O 24 2.6.2 描述符管理 25 2.6.3 设备 25 2.6.4 套接字IPC 26 2.6.5 分散/聚集I/O 27 2.6.6 多文件系统支持 27 2.7 文件系统 27 2.8 文件库(filestore) 30 2.9 网络文件系统 31 2.10 终端 32 2.11 进程间通信 32 2.12 网络通信 33 2.13 网络实现 33 2.14 系统操作 34 习题 34 参考资源 34 第3章 内核服务 36 3.1 内核组织 36 3.1.1 系统进程 36 3.1.2 系统入口 36 3.1.3 内核的运行时结构 37 3.1.4 内核的入口 38 3.1.5 内核的返回 39 3.2 系统调用 39 3.2.1 结果处理 39 3.2.2 系统调用的返回 40 3.3 陷阱和中断 40 3.3.1 陷阱 40 3.3.2 I/O设备中断 41 3.3.3 软件中断 41 3.4 时钟中断 42 3.4.1 统计和进程调度 42 3.4.2 超时 43 3.5 内存管理服务 44 3.6 时间服务 46 3.6.1 标准时间 47 3.6.2 调整时间 47 3.6.3 外部表示 47 3.6.4 间隔时间 47 3.7 用户、组和其他标识符 48 3.7.1 主机标识符 50 3.7.2 进程组和会话 50 3.8 资源服务 51 3.8.1 进程优先级 51 3.8.2 资源利用 51 3.8.3 资源限制 51 3.8.4 文件系统配额 52 3.9 系统操作服务 52 习题 53 参考资源 54 第二部分 进程 第4章 进程管理 55 4.1 进程管理概述 55 4.1.1 多程序机制 56 4.1.2 调度 56 4.2 进程状态 57 4.2.1 进程结构 58 4.2.2 用户结构 61 4.3 上下文切换 62 4.3.1 进程状态 63 4.3.2 底层上下文切换 63 4.3.3 主动上下文切换 63 4.3.4 同步 65 4.4 进程调度 67 4.4.1 进程优先级的计算 67 4.4.2 进程优先级例程 68 4.4.3 进程运行队列和上下文切换 69 4.5 进程创建 70 4.6 进程终止 72 4.7 信号 72 4.7.1 与POSIX信号的比较 74 4.7.2 发送信号 75 4.7.3 传递信号 77 4.8 进程组和会话 78 4.8.1 会话 79 4.8.2 作业控制 80 4.9 进程调试 81 习题 83 参考资源 84 第5章 内存管理 85 5.1 术语 85 5.1.1 进程与内存 86 5.1.2 分页 86 5.1.3 替换算法 87 5.1.4 工作集模型 87 5.1.5 交换 88 5.1.6 虚拟内存的优点 88 5.1.7 虚拟内存的硬件要求 88 5.2 4.4BSD虚拟内存系统综述 89 5.3 内核内存管理 91 5.3.1 内核映射和子映射 91 5.3.2 内核地址空间的分配 92 5.3.3 内核内存分配 93 5.4 进程独立拥有的资源(Per-Process Resource) 95 5.4.1 4.4BSD进程虚拟地址空间 95 5.4.2 缺页调度 96 5.4.3 映射对象 97 5.4.4 对象 98 5.4.5 页对象 98 5.5 共享内存 99 5.5.1 mmap模型 100 5.5.2 共享映射 102 5.5.3 私有映射 102 5.5.4 压缩影子链 104 5.5.5 私有快照 105 5.6 新进程的创建 106 5.6.1 保留内核资源 106 5.6.2 复制用户地址空间 107 5.6.3 不采用复制技术创建新进程 108 5.7 文件的执行 108 5.8 进程地址空间的操作 109 5.8.1 进程大小的改变 109 5.8.2 文件映射 110 5.8.3 改变保护机制 111 5.9 进程的终止 112 5.10 分页器接口 112 5.10.1 vnode 分页器 114 5.10.2 设备分页器 115 5.10.3 交换分页器 115 5.11 分页 117 5.12 页面替换 121 5.12.1 换页参数 122 5.12.2 页面换出守护进程 123 5.12.3 交换 124 5.12.4 换入进程 125 5.13 可移植性 126 5.13.1 pmap模块的角色 128 5.13.2 初始化和启动 130 5.13.3 映射的分配和释放 132 5.13.4 改变映射的访问和锁定属性 134 5.13.5 页表使用信息的管理 135 5.13.6 物理页面的初始化 135 5.13.7 内部数据结构的管理 136 习题 137 参考资源 137 第三部分 I/O系统 第6章 I/O系统综述 139 6.1 从用户到设备的I/O映射 139 6.1.1 设备驱动程序 140 6.1.2 I/O队列 141 6.1.3 中断处理 141 6.2 块设备 142 6.2.1 块设备的入口点 142 6.2.2 磁盘I/O请求的排序 143 6.2.3 磁盘标签 144 6.3 字符设备 145 6.3.1 原始设备和物理I/O 146 6.3.2 面向字符的设备 147 6.3.3 字符设备驱动程序的入口点 148 6.4 描述符管理和服务 148 6.4.1 打开文件入口 149 6.4.2 对描述符的管理 151 6.4.3 文件描述符的锁定 152 6.4.4 描述符上的多路复用I/O操作 154 6.4.5 select的实现 155 6.4.6 在内核中数据的移动 157 6.5 虚拟文件系统的接口 159 6.5.1 vnode的内容 159 6.5.2 对vnode的操作 160 6.5.3 路径名翻译 161 6.5.4 导出文件系统服务 162 6.6 独立于文件系统的服务 163 6.6.1 名字缓存 164 6.6.2 缓冲区管理 165 6.6.3 缓冲区管理的实现 167 6.7 可堆叠的文件系统 169 6.7.1 简单文件系统层 170 6.7.2 联合安装的文件系统 171 6.7.3 其他的文件系统 173 习题 174 参考资源 175 第7章 本地文件系统 176 7.1 文件系统的分层管理 176 7.2 索引节点的结构 177 7.3 命名 180 7.3.1 目录 180 7.3.2 在目录中查找名字 181 7.3.3 路径名转化 182 7.3.4 链接 182 7.4 配额 185 7.5 文件锁定 187 7.6 其他文件系统机制 191 7.6.1 大文件支持 191 7.6.2 文件标志 192 习题 193 参考资源 193 第8章 本地文件库 194 8.1 文件库概述 194 8.2 Berkeley 快速文件系统 196 8.2.1 Berkeley 快速文件系统的组织 197 8.2.2 存储策略的优化 198 8.2.3 文件的读/写操作 199 8.2.4 文件系统参数化 201 8.2.5 布局策略 202 8.2.6 分配机制 203 8.2.7 块的成簇 205 8.2.8 同步操作 207 8.3 日志结构的文件系统 208 8.3.1 日志结构的文件系统组织 209 8.3.2 索引文件 211 8.3.3 读日志 212 8.3.4 写日志 212 8.3.5 块统计 213 8.3.6 缓存 215 8.3.7 目录操作 215 8.3.8 文件的创建 216 8.3.9 读写文件 217 8.3.10 文件系统清理 217 8.3.11 文件系统参数化 219 8.3.12 文件系统的崩溃恢复 219 8.4 基于内存的文件系统 220 8.4.1 基于内存的文件系统的组织 221 8.4.2 文件系统性能 223 8.4.3 展望 223 习题 224 参考资源 225 第9章 网络文件系统 227 9.1 历史和概况 227 9.2 NFS结构和操作 229 9.2.1 NFS协议 231 9.2.2 4.4BSD的NFS实现 233 9.2.3 客户端/服务器的交互 236 9.2.4 RPC的传输问题 236 9.2.5 安全问题 237 9.3 提高性能的技术 239 9.3.1 租约 241 9.3.2 崩溃恢复 244 习题 245 参考资源 246 第10章 终端处理 248 10.1 终端处理模式 248 10.2 行规程 249 10.3 用户接口 250 10.4 tty数据结构 251 10.5 进程组、会话和终端控制 253 10.6 字符列表 253 10.7 RS-232和调制解调器控制 254 10.8 终端操作 255 10.8.1 打开 255 10.8.2 输出行规程 256 10.8.3 输出的上半部 257 10.8.4 输出的下半部 258 10.8.5 输入的下半部 258 10.8.6 输入的上半部 259 10.8.7 stop例程 260 10.8.8 ioctl例程 260 10.8.9 调制解调器转换 261 10.8.10 关闭终端设备 261 10.9 其他的行规程 262 10.9.1 串行线路IP规程 262 10.9.2 图表行规程 263 习题 263 参考资源 263 第四部分 通信 第11章 进程间通信 265 11.1 进程间通信模型 265 11.2 实现结构和概述 270 11.3 内存管理 271 11.3.1 mbufs 271 11.3.2 存储管理算法 273 11.3.3 mbuf操作例程 274 11.4 数据结构 275 11.4.1 通信域 275 11.4.2 套接字 276 11.4.3 套接字地址 278 11.5 建立连接 279 11.6 数据传送 281 11.6.1 传送数据 281 11.6.2 接收数据 283 11.6.3 传递访问权限 285 11.6.4 在本地域传递访问权限 286 11.7 关闭套接字 287 习题 288 参考资源 289 第12章 网络通信 290 12.1 内部结构 290 12.1.1 数据流 291 12.1.2 通信协议 291 12.1.3 网络接口 293 12.2 套接字到协议的接口 297 12.2.1 协议用户请求例程 298 12.2.2 内部请求 300 12.2.3 协议控制-输出例程 300 12.3 协议到协议的接口 301 12.3.1 pr_output 301 12.3.2 pr_input 301 12.3.3 pr_ctlinput 301 12.4 协议和网络接口之间的接口 302 12.4.1 数据包的传送 302 12.4.2 数据包的接收 303 12.5 路由 305 12.5.1 内核路由表 306 12.5.2 路由查找 308 12.5.3 路由重定向 311 12.5.4 路由表接口 311 12.5.5 用户级的路由策略 312 12.5.6 用户级路由接口:路由套接字 312 12.6 缓存和拥塞控制 313 12.6.1 协议缓存策略 313 12.6.2 队列限制 314 12.7 原始套接字 314 12.7.1 控制块 314 12.7.2 输入处理 315 12.7.3 输出处理 315 12.8 其他的网络子系统主题 315 12.8.1 带外数据 316 12.8.2 地址解析协议 316 习题 317 参考资源 318 第13章 网络协议 320 13.1 Internet网络协议 320 13.1.1 Internet地址 322 13.1.2 子网 322 13.1.3 广播地址 324 13.1.4 Internet多播 324 13.1.5 Internet端口与关联 325 13.1.6 协议控制块 325 13.2 用户数据报协议(UDP) 325 13.2.1 初始化 326 13.2.2 输出 327 13.2.3 输入 327 13.2.4 控制操作 328 13.3 互联网协议(IP) 328 13.3.1 输出 329 13.3.2 输入 330 13.3.3 转发 331 13.4 传输控制协议(TCP) 332 13.4.1 TCP连接状态 333 13.4.2 序列变量 336 13.5 TCP 算法 337 13.5.1 定时器 338 13.5.2 往返程时间的估计 339 13.5.3 连接建立 340 13.5.4 连接关闭 341 13.6 TCP输入处理 342 13.7 TCP输出处理 344 13.7.1 数据的发送 345 13.7.2 避免傻瓜窗口综合征 346 13.7.3 避免小数据包 346 13.7.4 延迟的确认及窗口更新 347 13.7.5 重发状态 348 13.7.6 慢启动 348 13.7.7 源抑制的处理 349 13.7.8 缓冲区与窗口大小调整 349 13.7.9 使用慢启动避免拥塞 350 13.7.10 快速重发 351 13.8 Internet控制报文协议(ICMP) 352 13.9 OSI实现中的问题 353 13.10 联网和进程间通信综述 355 13.10.1 通信通道的创建 355 13.10.2 数据的发送与接收 356 13.10.3 数据传送或接收的终止 356 习题 357 参考资源 359 第五部分 系统操作 第14章 系统启动 361 14.1 概述 361 14.2 引导 362 14.3 内核的初始化 363 14.3.1 汇编语言启动 363 14.3.2 机器相关初始化 364 14.3.3 消息缓冲区 364 14.3.4 系统数据结构 364 14.4 自动配置 365 14.4.1 设备的探测 366 14.4.2 设备连接 367 14.4.3 新的自动配置数据结构 367 14.4.4 新的自动配置函数 368 14.4.5 设备命名 368 14.5 独立于机器的初始化 369 14.6 用户级初始化 371 14.6.1 /sbin/init 371 14.6.2 /etc/rc 372 14.6.3 /usr/libexe/getty 372 14.6.4 /usr/bin/login 372 14.7 系统启动的相关话题 373 14.7.1 内核的配置 373 14.7.2 系统关机与自动重启 373 14.7.3 系统调试 374 14.7.4 同内核来回传递信息 374 习题 375 参考资源 376 附录 术语表 377 · · · · · · () |
听说很久,却一直没有看的一本书
感觉学到了非常多的知识
一如既往地 好看
为我提供了一个解看历史和现实的全新视角。