展开全部

主编推荐语

本书基于x86和Linux介绍计算机系统。

内容简介

本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。

本书共分12章,主要包括数据的机器级表示和处理、程序的转换及机器级表示、程序的链接和加载执行、存储器层次结构、虚拟存储器、进程和异常控制流、I/O操作的实现、程序性能的优化、网络编程以及并发编程等内容。

目录

  • 版权信息
  • 出版说明
  • 前言
  • 第1章 计算机系统概述
  • 1.1 计算机系统的基本工作原理
  • 1.1.1 冯·诺依曼结构的基本思想
  • 1.1.2 冯·诺依曼机的基本结构
  • 1.1.3 程序和指令的执行过程
  • 1.2 程序的开发与运行
  • 1.2.1 程序设计语言和翻译程序
  • 1.2.2 从源程序到可执行文件
  • 1.2.3 可执行文件的启动和执行
  • 1.3 计算机系统的层次结构
  • 1.3.1 计算机系统抽象层的转换
  • 1.3.2 计算机系统核心层之间的关联
  • 1.3.3 计算机系统的不同用户
  • 1.4 本章小结
  • 习题
  • 第2章 数据的机器级表示与处理
  • 2.1 数制和编码
  • 2.1.1 信息的二进制编码
  • 2.1.2 进位计数制
  • 2.1.3 定点数与浮点数
  • 2.1.4 定点数的编码表示
  • 2.2 整数的表示
  • 2.2.1 无符号整数和带符号整数
  • 2.2.2 C语言中的整数及其相互转换
  • 2.3 浮点数的表示
  • 2.3.1 浮点数的表示范围
  • 2.3.2 浮点数的规格化
  • 2.3.3 IEEE 754浮点数标准
  • 2.3.4 C语言中的浮点数类型
  • 2.4 非数值数据的编码表示
  • 2.4.1 逻辑值
  • 2.4.2 西文字符
  • 2.4.3 汉字字符
  • 2.5 数据的宽度和存储
  • 2.5.1 数据的宽度和单位
  • 2.5.2 数据的存储和排列顺序
  • 2.6 数据的基本运算
  • 2.6.1 按位运算和逻辑运算
  • 2.6.2 左移和右移运算
  • 2.6.3 位扩展和位截断运算
  • 2.6.4 整数加减运算
  • 2.6.5 整数乘除运算
  • 2.6.6 常量的乘除运算
  • 2.6.7 浮点数运算
  • 2.7 本章小结
  • 习题
  • 第3章 程序转换与指令系统
  • 3.1 程序转换概述
  • 3.1.1 机器指令和汇编指令
  • 3.1.2 指令集体系结构概述
  • 3.1.3 指令系统设计风格
  • 3.1.4 机器代码的生成过程
  • 3.2 IA-32/x86-64指令系统
  • 3.2.1 操作数类型
  • 3.2.2 寄存器组织
  • 3.2.3 寻址方式
  • 3.2.4 机器指令格式
  • 3.3 IA-32/x86-64常用指令类型及操作
  • 3.3.1 传送指令
  • 3.3.2 定点算术运算指令
  • 3.3.3 按位运算指令
  • 3.3.4 程序执行流控制指令
  • *3.3.5 x87浮点处理指令
  • *3.3.6 MMX/SSE/AVX指令
  • *3.3.7 x86-64中的浮点处理指令
  • 3.4 本章小结
  • 习题
  • 第4章 程序的机器级表示
  • 4.1 过程调用的机器级表示
  • 4.1.1 IA-32的过程调用约定
  • 4.1.2 变量的作用域和生存期
  • 4.1.3 按值传递参数和按地址传递参数
  • 4.1.4 递归过程调用
  • 4.1.5 非静态局部变量的存储分配
  • 4.1.6 x86-64的过程调用
  • *4.1.7 x86-64过程的浮点参数传递
  • 4.2 流程控制语句的机器级表示
  • 4.2.1 选择语句的机器级表示
  • 4.2.2 循环语句的机器级表示
  • 4.3 复杂数据类型的分配和访问
  • 4.3.1 数组的分配和访问
  • 4.3.2 结构体数据的分配和访问
  • 4.3.3 联合体数据的分配和访问
  • 4.3.4 数据的对齐
  • 4.4 越界访问和缓冲区溢出
  • 4.4.1 数组的越界访问
  • 4.4.2 缓冲区溢出攻击
  • 4.4.3 对缓冲区溢出攻击的防范
  • 4.5 本章小结
  • 习题
  • 第5章 程序的链接与加载执行
  • 5.1 编译、汇编和静态链接
  • 5.1.1 编译和汇编
  • 5.1.2 可执行文件的生成
  • 5.2 目标文件格式
  • 5.2.1 ELF目标文件格式
  • 5.2.2 可重定位文件格式
  • 5.2.3 可执行文件格式
  • 5.2.4 可执行文件的存储器映像
  • 5.3 符号表和符号解析
  • 5.3.1 符号和符号表
  • 5.3.2 符号解析
  • 5.3.3 与静态库的链接
  • 5.4 重定位
  • 5.4.1 重定位信息
  • 5.4.2 重定位过程
  • *5.5 动态链接
  • *5.5.1 动态链接的特性
  • *5.5.2 程序加载时的动态链接
  • *5.5.3 程序运行时的动态链接
  • *5.5.4 位置无关代码
  • *5.6 库打桩机制
  • *5.6.1 编译时打桩
  • *5.6.2 链接时打桩
  • *5.6.3 运行时打桩
  • 5.7 可执行文件的加载和执行
  • 5.7.1 可执行文件的加载
  • 5.7.2 程序和指令的执行过程
  • 5.7.3 CPU的基本功能和基本组成
  • 5.7.4 打断程序正常执行的事件
  • 5.8 本章小结
  • 习题
  • 第6章 存储器层次结构
  • 6.1 存储器概述
  • 6.1.1 存储器的分类
  • 6.1.2 主存储器的组成和基本操作
  • 6.1.3 层次化存储结构
  • 6.1.4 程序访问的局部性
  • 6.2 半导体随机存取存储器
  • 6.2.1 基本存储元件
  • 6.2.2 DRAM芯片
  • 6.2.3 SDRAM芯片技术
  • 6.2.4 内存条及其与CPU的连接
  • 6.2.5 存储器芯片的扩展
  • 6.2.6 主存控制器
  • 6.3 外部存储器
  • 6.3.1 磁盘存储器的结构
  • 6.3.2 磁盘存储器的性能指标
  • *6.3.3 闪速存储器和U盘
  • *6.3.4 固态硬盘
  • 6.4 cache
  • 6.4.1 cache的基本工作原理
  • 6.4.2 cache的映射方式
  • 6.4.3 cache的替换算法
  • 6.4.4 cache的写策略
  • *6.4.5 cache的设计
  • *6.4.6 cache和程序性能
  • 6.5 本章小结
  • 习题
  • 第7章 虚拟存储器
  • 7.1 虚拟存储器概述
  • 7.1.1 虚拟存储器的基本概念
  • 7.1.2 进程的虚拟地址空间
  • 7.1.3 虚拟存储器的基本类型
  • 7.2 页式虚拟存储器的实现
  • 7.2.1 页表和页表项的结构
  • 7.2.2 页式存储管理总体结构
  • 7.2.3 页式虚拟存储地址转换
  • 7.2.4 快表
  • 7.3 具有TLB和cache的存储系统
  • 7.3.1 层次化存储系统结构
  • 7.3.2 CPU访存过程
  • 7.3.3 cache的4种查找方式
  • 7.4 存储保护机制
  • *7.5 IA-32+Linux中的地址转换
  • 7.5.1 逻辑地址到线性地址的转换
  • 7.5.2 线性地址到物理地址的转换
  • *7.6 实例:Intel Core i7+Linux存储系统
  • 7.6.1 Core i7的层次化存储器结构
  • 7.6.2 Core i7的地址转换机制
  • 7.6.3 Linux系统的虚拟存储管理
  • *7.7 堆区动态分配
  • 7.7.1 动态存储分配
  • 7.7.2 显式动态分配
  • 7.7.3 隐式动态分配
  • 7.7.4 与存储访问相关的常见错误
  • 7.8 本章小结
  • 习题
  • 第8章 进程与异常控制流
  • 8.1 进程与进程的上下文切换
  • 8.1.1 程序和进程的概念
  • 8.1.2 进程的逻辑控制流
  • 8.1.3 进程的上下文切换
  • 8.2 异常和中断
  • 8.2.1 异常和中断的基本概念
  • 8.2.2 异常的分类
  • 8.2.3 中断的分类
  • 8.2.4 异常和中断的响应
  • *8.3 IA-32/x86-64+Linux的异常和中断机制
  • 8.3.1 中断向量表和中断描述符表
  • 8.3.2 异常和中断的处理
  • 8.3.3 系统调用机制
  • *8.4 Linux中的进程控制
  • 8.4.1 进程的创建、休眠和终止
  • 8.4.2 进程ID的获取和子进程的回收
  • 8.4.3 程序的加载运行
  • *8.5 Linux中的信号与非本地跳转
  • 8.5.1 Linux中的信号处理机制
  • 8.5.2 信号的发送
  • 8.5.3 信号捕获和信号处理
  • 8.5.4 非本地跳转处理
  • 8.6 本章小结
  • 习题
  • 第9章 I/O操作的实现
  • 9.1 I/O子系统概述
  • 9.2 用户空间I/O软件
  • 9.2.1 用户程序中的I/O函数
  • 9.2.2 文件的基本概念
  • 9.2.3 系统级I/O函数
  • 9.2.4 C标准I/O库函数
  • 9.3 内核空间I/O软件
  • 9.3.1 设备无关的I/O软件层
  • 9.3.2 设备驱动程序
  • 9.3.3 中断服务程序
  • 9.4 I/O硬件与软件的接口
  • 9.4.1 I/O设备
  • 9.4.2 基于总线的互连结构
  • 9.4.3 I/O接口的功能和结构
  • 9.4.4 I/O端口及其编址
  • 9.4.5 中断系统
  • 9.5 hello程序运行过程综述
  • 9.5.1 shell进程等待用户键盘输入
  • 9.5.2 用户从键盘输入命令行
  • 9.5.3 唤醒并切换至shell进程
  • 9.5.4 使用fork()函数创建子进程
  • 9.5.5 hello进程的加载和执行
  • 9.6 本章小结
  • 习题
  • 第10章 程序性能的优化
  • 10.1 计算机系统性能评估
  • 10.1.1 计算机性能的定义
  • 10.1.2 计算机性能的测试
  • 10.1.3 用指令执行速度进行性能评估
  • 10.1.4 用基准程序进行性能评估
  • 10.1.5 阿姆达尔定律
  • 10.2 程序性能瓶颈分析
  • 10.2.1 基于事件统计报告的性能瓶颈分析
  • 10.2.2 基于踪迹的性能瓶颈分析
  • 10.3 基于分层的性能优化技术分类
  • 10.3.1 软件层次
  • 10.3.2 指令集和硬件层次
  • 10.4 编写适合编译优化的源代码
  • 10.4.1 优化函数调用
  • 10.4.2 优化指针别名
  • 10.5 本章小结
  • 习题
  • 第11章 网络编程
  • 11.1 客户端-服务器模型和网络I/O
  • 11.1.1 案例:远程函数调用
  • 11.1.2 网络I/O
  • 11.2 局域网和广域网
  • 11.2.1 局域网
  • 11.2.2 交换机
  • 11.2.3 广域网与互联网
  • 11.3 IP网络通信协议
  • 11.3.1 IP地址
  • 11.3.2 子网掩码与子网划分
  • 11.3.3 路由与转发
  • 11.3.4 TCP/IP
  • 11.4 套接字编程
  • 11.4.1 套接字接口
  • 11.4.2 套接字地址与接口函数
  • 11.4.3 套接字编程实例
  • 11.5 本章小结
  • 习题
  • 第12章 并发编程
  • 12.1 并发编程概述
  • 12.2 多进程与多线程
  • 12.2.1 多进程并发编程
  • 12.2.2 线程与线程的上下文切换
  • 12.2.3 POSIX线程库函数
  • 12.2.4 多线程编程实例
  • 12.3 同步与互斥
  • 12.3.1 互斥锁
  • 12.3.2 信号量
  • 12.3.3 线程安全和可重入性
  • 12.3.4 死锁
  • 12.4 并行编程
  • 12.4.1 并行程序设计思想
  • 12.4.2 并行程序性能评估
  • 12.5 本章小结
  • 习题
  • 附录A gcc的常用命令行选项
  • 附录B GDB的常用命令
  • B.1 启动GDB程序
  • B.2 常用GDB命令
  • 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。