作者 |
乔纳森·E.斯坦哈特 莫尔·哈肖尔-巴尔特 |
丛书名 |
华章程序员书库 |
出版社 |
机械工业出版社 |
ISBN |
9782109071562 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8083845 - 计算机系统解密:从理解计算机到编写高效代码--------------------------- 本书分为三部分。第1部分探讨了计算机硬件,包括内部语言、组合逻辑、顺序逻辑、组成原理、系统结构、通信接口等。第二部分研究了在硬件上运行的软件的行为和表现。第三部分涉及编程的艺术--与他人合作写出好的程序。 ---------------------------8071679 - 计算机系统的性能建模与设计:排队论实战--------------------------- 本书讲述建模、分析和设计大型计算机系统同时使其具有良好性能且成本较低的方法和技术。其中重点强调的排队论也正好是作者非常擅长的理论研究。除了必要的理论方法,还包括丰富的计算机系统设计实例和练习。目的是使读者不仅能够定制现有的计算机系统设计和分析,还可以自己发明适合自己系统设计的方法。全书内容有趣而且易于阅读,采用“苏格拉底式”的问答模式进行叙述,适合该领域的科研和工程人员阅读参考,也适合高校计算机相关专业学生阅读。 |
目录 |
[套装书具体书目] 8071679 - 计算机系统的性能建模与设计:排队论实战 - 9787111659938 - 机械工业出版社 - 定价 139 8083845 - 计算机系统解密:从理解计算机到编写高效代码 - 9787111689874 - 机械工业出版社 - 定价 129 ---------------------------8083845 - 计算机系统解密:从理解计算机到编写高效代码--------------------------- 译者序 前言 致谢 作者简介 审校者简介 引言1 第1章 计算机的内部语言12 1.1 什么是语言12 1.2 书面语言13 1.3 比特13 1.4 逻辑运算14 1.4.1 布尔代数14 1.4.2 德摩根定律15 1.5 用比特表示整数16 1.5.1 表示正数16 1.5.2 二进制加法18 1.5.3 表示负数20 1.6 表示实数23 1.6.1 定点表示法24 1.6.2 浮点表示法25 1.6.3 IEEE浮点标准26 1.7 二进制编码的十进制系统27 1.8 处理二进制数的简单方法27 1.8.1 八进制表示法27 1.8.2 十六进制表示法28 1.8.3 表示语境28 1.9 命名位组29 1.10 表示文本30 1.10.1 ASCII30 1.10.2 其他标准的演变32 1.10.3 UTF-832 1.11 用字符表示数字34 1.11.1 可打印字符引用编码34 1.11.2 Base64编码34 1.11.3 URL编码35 1.12 表示颜色35 1.12.1 增加透明度37 1.12.2 编码颜色38 1.13 本章小结39 第2章 组合逻辑40 2.1 数字计算机的案例40 2.1.1 模拟和数字之间的区别42 2.1.2 为什么尺寸对硬件很重要43 2.1.3 数字使设备更加稳定44 2.1.4 模拟世界中的数字44 2.1.5 为什么使用位而不是数字46 2.2 电学的简单入门47 2.2.1 用管道理解电47 2.2.2 电源开关50 2.3 为位构建硬件52 2.3.1 继电器52 2.3.2 真空管54 2.3.3 晶体管55 2.3.4 集成电路56 2.4 逻辑门57 2.4.1 利用迟滞现象提高抗噪声能力58 2.4.2 差分信号59 2.4.3 传播延迟60 2.4.4 输出的变化61 2.5 构建更复杂的电路63 2.5.1 制作加法器63 2.5.2 制作解码器65 2.5.3 制作多路输出选择器66 2.5.4 制作选择器66 2.6 本章小结68 第3章 时序逻辑69 3.1 表示时间69 3.1.1 振荡器70 3.1.2 时钟70 3.1.3 锁存器71 3.1.4 锁存器组成的门电路72 3.1.5 触发器73 3.1.6 计数器75 3.1.7 寄存器77 3.2 内存组织和寻址78 3.2.1 随机存取存储器80 3.2.2 只读存储器81 3.3 块设备83 3.4 闪存和固态磁盘驱动器85 3.5 检错和纠错86 3.6 硬件和软件87 3.7 本章小结88 第4章 计算机剖析89 4.1 内存89 4.2 输入输出91 4.3 中央处理器92 4.3.1 算术逻辑单元93 4.3.2 移位寄存器94 4.3.3 执行单元96 4.4 指令集97 4.4.1 指令97 4.4.2 寻址方式99 4.4.3 条件码指令99 4.4.4 分支100 4.4.5 最终指令集100 4.5 最终设计103 4.5.1 指令寄存器103 4.5.2 数据通路和控制信号103 4.5.3 流量控制104 4.6 RISC和CISC指令集107 4.7 图形处理单元108 4.8 本章小结108 第5章 计算机架构109 5.1 基本架构元素109 5.1.1 处理器核心110 5.1.2 微处理器和微型计算机110 5.2 过程、子程序和函数111 5.3 堆栈113 5.4 中断116 5.5 相对寻址118 5.6 内存管理单元119 5.7 虚拟内存121 5.8 系统和用户空间121 5.9 存储器层次和性能122 5.10 协处理器123 5.11 在内存中排列数据124 5.12 运行程序125 5.13 内存功耗126 5.14 本章小结126 第6章 通信故障127 6.1 低电平I/O127 6.1.1 I/O端口128 6.1.2 按下按钮129 6.1.3 让灯光亮起131 6.1.4 灯光,动作……132 6.1.5 奇思妙想133 6.1.6 2n种灰色134 6.1.7 正交134 6.1.8 并行通信135 6.1.9 串行通信136 6.1.10 捕捉一个波138 6.1.11 通用串行总线139 6.2 网络140 6.2.1 现代局域网141 6.2.2 因特网141 6.3 数字世界中的模拟143 6.3.1 数模转换143 6.3.2 模数转换145 6.3.3 数字音频148 6.3.4 数字图像154 6.3.5 视频156 6.4 人机界面设备157 6.4.1 终端157 6.4.2 图形终端158 6.4.3 矢量图159 6.4.4 光栅图160 6.4.5 键盘和鼠标161 6.5 本章小结161 第7章 组织数据162 7.1 原始数据类型162 7.2 数组164 7.3 位图165 7.4 字符串166 7.5 复合数据类型167 7.6 单链表168 7.7 动态内存分配173 7.8 更有效的内存分配174 7.9 垃圾收集175 7.10 双链表175 7.11 层次数据结构176 7.12 块存储179 7.13 数据库181 7.14 索引182 7.15 移动数据183 7.16 矢量I/O186 7.17 面向对象存在的问题187 7.18 排序188 7.19 哈希算法189 7.20 效率与性能191 7.21 本章小结192 第8章 语言处理193 8.1 汇编语言193 8.2 高级语言194 8.3 结构化程序设计195 8.4 词法分析196 8.4.1 状态机198 8.4.2 正则表达式199 8.5 从单词到句子201 8.6 每日语言俱乐部203 8.7 语法树203 8.8 解释器205 8.9 编译器207 8.10 优化209 8.11 小心硬件210 8.12 本章小结211 第9章 Web浏览器212 9.1 标记语言213 9.2 统一资源定位符214 9.3 HTML文档214 9.4 文档对象模型216 9.4.1 树结构解析216 9.4.2 文档对象模型解释217 9.5 串联样式表218 9.6 XML和它的朋友们221 9.7 JavaScript224 9.8 jQuery226 9.9 SVG228 9.10 HTML5228 9.11 JSON228 9.12 本章小结230 第10章 应用程序和系统程序设计231 10.1 猜动物程序版本1:HTML和JavaScript233 10.1.1 应用程序级框架234 10.1.2 Web页面主体235 10.1.3 JavaScript程序236 10.1.4 CSS238 10.2 猜动物程序版本2:C语言239 10.2.1 终端和命令行239 10.2.2 构建程序240 10.2.3 终端和设备驱动程序240 10.2.4 上下文切换240 10.2.5 标准I/O242 10.2.6 循环缓冲区243 10.2.7 通过合适的抽象实现更好的代码244 10.2.8 一些技术细节244 10.2.9 缓冲区溢出245 10.2.10 C语言程序246 10.2.11 训练251 10.3 本章小结252 第11章 捷径和近似法253 11.1 表格查找253 11.1.1 转换253 11.1.2 纹理映射254 11.1.3 字符分类256 11.2 整数方法258 11.2.1 直线261 11.2.2 曲线266 11.2.3 多项式268 11.3 递归细分269 11.3.1 螺旋线269 11.3.2 构造几何学272 11.3.3 移位和屏蔽278 11.4 更多地回避数学运算279 11.4.1 幂级数近似279 11.4.2 CORDIC算法280 11.5 随机事物284 11.5.1 空间填充曲线284 11.5.2 L系统286 11.5.3 随机287 11.5.4 量化288 11.6 本章小结297 第12章 死锁和竞态条件298 12.1 竞态条件是什么298 12.2 共享资源299 12.3 进程和线程299 12.4 锁301 12.4.1 事务和粒度302 12.4.2 等待锁302 12.4.3 死锁303 12.4.4 短期锁的实现303 12.4.5 长期锁的实现304 12.5 浏览器JavaScript304 12.6 异步函数和承诺307 12.7 本章小结311 第13章 安全性312 13.1 安全和隐私概述313 13.1.1 威胁模型313 13.1.2 信任314 13.1.3 物理安全315 13.1.4 通信安全316 13.1.5 现代社会317 13.1.6 元数据和监控318 13.1.7 社会背景319 13.1.8 身份验证与授权320 13.2 密码学321 13.2.1 隐写术321 13.2.2 替代密码322 13.2.3 换位密码324 13.2.4 更复杂的密码325 13.2.5 一次一密325 13.2.6 密钥交换问题326 13.2.7 公钥密码326 13.2.8 前向加密327 13.2.9 加密哈希函数327 13.2.10 数字签名328 13.2.11 公钥基础设施328 13.2.12 区块链328 13.2.13 密码管理329 13.3 软件卫生330 13.3.1 保护好正确的东西330 13.3.2 仔细检查你的逻辑330 13.3.3 检查错误331 13.3.4 最小化攻击面331 13.3.5 待在界内331 13.3.6 生成合适的随机数是有难度的332 13.3.7 了解代码333 13.3.8 极端聪明是你的敌人335 13.3.9 明白什么是可见的335 13.3.10 不要过度收集335 13.3.11 不要一直存储335 13.3.12 动态内存分配不是你的朋友336 13.3.13 内存垃圾回收也不是你的朋友337 13.3.14 数据作为代码338 13.4 本章小结340 第14章 机器智能341 14.1 概述342 14.2 机器学习343 14.2.1 贝叶斯344 14.2.2 高斯345 14.2.3 索贝尔348 14.2.4 Canny351 14.2.5 特征提取352 14.2.6 神经网络354 14.2.7 使用机器学习数据358 14.3 人工智能359 14.4 大数据361 14.5 本章小结363 第15章 现实世界的考虑364 15.1 价值主张364 15.2 来龙去脉366 15.2.1 短暂的历史366 15.2.2 开源软件368 15.2.3 创意共享370 15.2.4 可移植性的兴起370 15.2.5 软件包管理371 15.2.6 容器371 15.2.7 Java371 15.2.8 Node.js373 15.2.9 云计算373 15.2.10 虚拟机373 15.2.11 便携式设备374 15.3 编程环境374 15.3.1 你有工作经验吗374 15.3.2 学会估计374 15.3.3 调度项目375 15.3.4 决策376 15.3.5 与不同个性的人一起工作376 15.3.6 了解职场文化377 15.3.7 做出明智的选择378 15.4 开发方法378 15.5 项目设计379 15.5.1 把想法写下来379 15.5.2 快速原型发展法380 15.5.3 接口设计380 15.5.4 重用代码或编写自己的代码383 15.6 项目开发383 15.6.1 谈话384 15.6.2 成年人与计算机的关系384 15.6.3 终端和脚本384 15.6.4 文本编辑器385 15.6.5 可移植的代码385 15.6.6 源控制386 15.6.7 测试387 15.6.8 bug报告和跟踪387 15.6.9 重构387 15.6.10 维护388 15.7 与时俱进388 15.8 修复,不要再创造389 15.9 本章小结390 ---------------------------8071679 - 计算机系统的性能建模与设计:排队论实战--------------------------- 出版者的话 译者序 序言 前言 致谢 第一部分 排队论简介 第1章 分析建模的功能及实例2 1.1 什么是排队论2 1.2 排队论实例3 第2章 排队论术语8 2.1 我们将去向何方8 2.2 单服务器网络8 2.3 排队网络的分类9 2.4 开放网络10 2.5 更多指标:吞吐量和利用率10 2.6 封闭网络12 2.6.1 交互式(终端驱动)系统13 2.6.2 批处理系统14 2.6.3 封闭系统中的吞吐量14 2.7 封闭网络和开放网络之间的差异15 2.8 阅读材料16 2.9 习题16 第二部分 必要的概率背景知识 第3章 概率知识复习18 3.1 样本空间和事件18 3.2 事件定义的概率18 3.3 事件的条件概率19 3.4 独立事件和有条件独立事件20 3.5 总概率定律21 3.6 贝叶斯定律22 3.7 离散随机变量与连续随机变量22 3.8 概率和密度23 3.8.1 离散:概率质量函数23 3.8.2 连续:概率密度函数25 3.9 期望和方差27 3.10 联合概率和独立性29 3.11 条件概率和期望30 3.12 基于条件化的概率和期望34 3.13 期望的线性性质35 3.14 正态分布36 3.14.1 线性变换特性37 3.14.2 中心极限定理39 3.15 随机变量的随机数的和40 3.16 习题41 第4章 生成用于模拟的随机变量45 4.1 逆变换方法45 4.1.1 连续情况45 4.1.2 离散情况46 4.2 接受拒绝方法47 4.2.1 离散情况47 4.2.2 连续情况48 4.2.3 一些更难的问题50 4.3 阅读材料50 4.4 习题50 第5章 样本路径、收敛和均值52 5.1 收敛52 5.2 强/弱大数定律55 5.3 时间均值与整体均值56 5.3.1 动机56 5.3.2 定义57 5.3.3 解释57 5.3.4 等价性58 5.3.5 模拟59 5.3.6 系统时间均值60 5.4 阅读材料60 5.5 习题60 第三部分 简单运筹定律的预测能力:“假设”问题和答案 第6章 Little定律和其他运筹定律62 6.1 开放系统的Little定律62 6.2 直觉62 6.3 封闭系统的Little定律63 6.4 开放系统的Little定律证明63 6.4.1 基于时间均值的陈述64 6.4.2 证明64 6.4.3 推论65 6.5 封闭系统的Little定律证明66 6.5.1 基于时间均值的陈述66 6.5.2 证明66 6.6 广义的Little定律67 6.7 应用Little定律的示例67 6.8 更多运筹定律:强制流定律69 6.9 运筹定律组合70 6.10 设备需求72 6.11 与Little定律相关的阅读和其他主题73 6.12 习题73 第7章 修改分析:封闭系统的“假设”75 7.1 回顾75 7.2 封闭系统的渐近界限76 7.3 封闭系统的修改分析78 7.4 更多修改分析示例78 7.5 封闭网络和开放网络的比较80 7.6 阅读材料81 7.7 习题81 第四部分 从马尔可夫链到简单队列 第8章 离散时间马尔可夫链84 8.1 离散时间与连续时间马尔可夫链84 8.2 DTMC的定义85 8.3 有限状态DTMC的示例85 8.3.1 维修设施问题85 8.3.2 雨伞问题86 8.3.3 程序分析问题86 8.4 P的幂:n步转移概率87 8.5 平稳方程88 8.6 平稳分布等于极限分布89 8.7 求解平稳方程的示例90 8.7.1 维修设施成本问题90 8.7.2 雨伞问题91 8.8 无限状态DTMC91 8.9 无限状态平稳性结果91 8.10 求解无限状态DTMC中的平稳方程93 8.11 习题95 第9章 遍历性理论97 9.1 遍历性问题97 9.2 有限状态DTMC98 9.2.1 极限分布的存在98 9.2.2 访问状态之间的平均时间101 9.2.3 时间均值102 9.3 无限状态马尔可夫链102 9.3.1 常返与瞬时103 9.3.2 无限随机游走示例106 9.3.3 正常返与零常返108 9.4 马尔可夫链的遍历定理109 9.5 时间均值110 9.6 极限概率解释为速率112 9.7 时间可逆性定理113 9.8 当链是周期性的或者不可约的114 9.8.1 周期链115 9.8.2 不可约的链119 9.9 结论119 *9.10 马尔可夫链的遍历定理的证明119 9.11 习题124* 第10章 真实世界的示例:Google、Aloha和Harder Chains129 10.1 Google的PageRank算法129 10.1.1 Google的DTMC算法129 10.1.2 真实网络图的问题131 10.1.3 死角和蜘蛛陷阱问题的Google解决方案131 10.1.4 PageRank算法的评估132 10.1.5 实际实现的注意事项132 10.2 Aloha协议分析132 10.2.1 Slotted Aloha协议133 10.2.2 Aloha马尔可夫链133 10.2.3 Aloha马尔可夫链的性质134 10.2.4 改进Aloha协议135 10.3 Aloha为更难的马尔可夫链生成函数136 10.3.1 z变换136 10.3.2 求解链136 10.4 阅读材料138 10.5 习题138 第11章 指数分布和泊松过程141 11.1 指数分布的定义141 11.2 指数的无记忆特性142 11.3 通过δ-步将指数与几何相关联143 11.4 指数的更多属性144 11.5 著名的泊松过程146 11.6 合并独立泊松过程149 11.7 泊松分裂149 11.8 均匀性151 11.9 习题152 第12章 转换到连续时间马尔可夫链154 12.1 定义CTMC154 12.2 解决CTMC问题157 12.3 泛化和解释159 12.3.1 解释CTMC的平衡方程160 12.3.2 CTMC的概要定理160 12.4 习题160 第13章 M/M/1和PASTA161 13.1 M/M/1队列161 13.2 使用M/M/1队列的示例163 13.3 PASTA164 13.4 进一步阅读166 13.5 习题166 第五部分 服务器机群与网络:多服务器和多队列系统 第14章 服务器机群:M/M/k与M/M/k/k排队系统173 14.1 连续时间马尔可夫链的时间可逆性173 14.2 M/M/k/k损失系统174 14.3 M/M/k176 14.4 三种服务器组织模式的比较180 14.5 阅读材料181 14.6 习题181 第15章 服务器机群的容量规划184 15.1 在M/M/k中,负载的真正含义是什么184 15.2 M/M/∞185 15.2.1 M/M/∞分析185 15.2.2 M/M/k容量规划的首次削减规则186 15.3 平方根配置187 15.4 阅读材料189 15.5 习题189 第16章 时间可逆性和Burke定理193 16.1 有限状态CTMC的更多示例193 16.1.1 缓冲空间有限的网络193 16.1.2 M/M/2 I/O的批处理系统194 16.2 反向链195 16.3 Burke定理198 16.4 Burke定理的另一种(部分)证明198 16.5 应用:串联式服务器199 16.6 具有概率路由的一般非循环网络200 16.7 阅读材料201 16.8 习题201 第17章 队列网络和Jackson乘积形式203 17.1 Jackson网络的定义203 17.2 到达每个服务器的过程204 17.3 解决Jackson网络205 17.4 本地平衡法205 17.5 阅读材料209 17.6 习题209 第18章 分类队列网络212 18.1 概述212 18.2 分类网络的动机212 18.3 分类Jackson网络的符号和建模214 18.4 单服务器分类网络215 18.5 乘积形式定理216 18.6 分类网络示例220 18.6.1 面向连接的ATM网络示例220 18.6.2 作业类别分布示例221 18.6.3 CPU密集型和I/O密集型作业示例222 18.7 阅读材料224 18.8 习题224 第19章 封闭队列网络226 19.1 动机226 19.2 乘积形式的解227 19.2.1 封闭网络的局部平衡方程227 19.2.2 推导极限概率的示例229 19.3 均值分析230 19.3.1 到达定理230 19.3.2 平均响应时间的迭代推导232 19.3.3 MVA示例233 19.4 阅读材料234 19.5 习题234 第六部分 实际工作负载:高可变性和重尾 第20章 尾巴的故事:实际工作负载的案例研究239 20.1 研究生院的故事——过程迁移239 20.2 UNIX进程寿命测量240 20.3 帕累托分布的性质241 20.4 有界帕累托分布242 20.5 重尾242 20.6 活动进程迁移的益处243 20.7 帕累托分布无处不在243 20.8 习题244 第21章 相位型分布和矩阵分析方法246 21.1 用指数代表一般分布246 21.2 PH工作负载的马尔可夫链建模249 21.3 矩阵分析法251 21.4 时变负载分析252 21.4.1 高级别的想法252 21.4.2 生成矩阵Q252 21.4.3 R求解254 21.4.4 寻找π→0254 21.4.5 性能指标255 21.5 更复杂的链256 21.6 阅读材料和进一步的评论258 21.7 习题258 第22章 具有分时服务器的网络261 22.1 乘积形式网络261 22.2 BCMP结果261 22.2.1 FCFS服务器的网络261 22.2.2 PS服务器的网络262 22.3 M/M/1/PS264 22.4 M/Cox/1/PS264 22.5 M/G/1/PS服务器的串联网络268 22.6 具有概率路由的PS服务器网络269 22.7 阅读材料270 22.8 习题270 第23章 M/G/1队列与检验悖论271 23.1 检验悖论271 23.2 M/G/1队列及其分析271 23.3 更新奖励理论273 23.4 申请更新奖励以获得预期的超量收益275 23.5 回到检验悖论276 23.6 回到M/G/1队列277 23.7 习题278 第24章 服务器机群的任务分配策略280 24.1 FCFS服务器机群的任务分配281 24.2 PS服务器机群的任务调度288 24.3 最佳服务器机群设计291 24.4 阅读材料和进一步跟进294 24.5 习题296 第25章 变换分析298 25.1 变换的定义和一些示例298 25.2 从变换中获取矩:剥洋葱300 25.3 变换的线性性质302 25.4 条件303 25.5 M/M/1系统中响应时间的分布304 25.6 结合拉普拉斯变换和z变换305 25.7 变换的更多结果305 25.8 阅读材料306 25.9 习题306 第26章 M/G/1变换分析309 26.1 系统中数字的z变换309 26.2 系统中时间的拉普拉斯变换311 26.3 阅读材料313 26.4 习题313 第27章 功率优化应用314 27.1 功率优化问题314 27.2 M/G/1的繁忙时段分析315 27.3 M/G/1与设置成本318 27.4 比较ON/IDLE与ON/OFF320 27.5 阅读材料321 27.6 习题321 第七部分 M/G/1中的智能调度 第28章 性能指标327 28.1 传统度量标准327 28.2 单一队列的常用度量标准327 28.3 当下流行的度量标准328 28.4 饥饿/公平指标328 28.5 导出性能指标329 28.6 阅读材料329 第29章 调度:非抢占式、非基于规模的策略330 29.1 FCFS、LCFS和RANDOM330 29.2 阅读材料332 29.3 习题332 第30章 调度:抢占式、非基于规模的策略333 30.1 PS333 30.1.1 PS的起源333 30.1.2 M/G/1/PS系统中的作业年龄334 30.1.3 响应时间作为作业规模的函数335 30.1.4 对PS结果的直觉336 30.1.5 理解FCFS的PS结果的含义337 30.2 抢占式LCFS338 30.3 FB调度339 30.4 阅读材料342 30.5 习题343 第31章 调度:非抢占式、基于规模的策略345 31.1 优先级排队345 31.2 非抢占式优先级346 31.3 最短作业优先348 31.4 关于非抢占式策略的问题350 31.5 习题350 第32章 调度:抢占式、基于规模的策略351 32.1 动机351 32.2 抢占式优先级排队351 32.3 抢占式最短作业优先354 32.4 PSJF的变换分析355 32.5 习题357 第33章 调度:SRPT与公平性358 33.1 最短剩余处理时间358 *33.2 SRPT等待时间的精确推导360 33.3 与其他策略的比较361 33.3.1 与PSJF的比较361 33.3.2 SRPT与FB362 33.3.3 所有调度策略的比较362 33.4 SRPT的公平性363 33.5 阅读材料366 参考文献367 |