万本电子书0元读

万本电子书0元读

顶部广告

计算机系统:基于x86+Linux平台电子书

本书从程序员视角出发,基于单处理器计算机系统各抽象层之间的关联关系,以可执行文件的生成和加载、程的正常执行和异常/中断处理、应用程序中I/O操作的底层实现机制、硬件与操作系统之间的协同关系、程序的调试和性能优化、网络编程、多线程并发编程为主要内容,重构建高级语言程序和指令集体系结构、编译器、汇编器、器、操作系统、底层微架构等位于计算机系统各抽象层之间的系统级关联知识体系。本书共12章,主要包括数据的表示和运算、程序的转换及机器级表示、程序的和加载执行、存储器层次结构、虚拟存储器、程控制和异常控制流、I/O操作的实现、程序性能的优化、网络编程和并发编程等内容。

售       价:¥

纸质售价:¥66.10购买纸书

10人正在读 | 0人评论 6.6

作       者:袁春风,朱光辉,余子濠

出  版  社:机械工业出版社

出版时间:2024-05-17

字       数:47.7万

所属分类: 教育 > 大中专教材 > 研究生/本科/专科教材

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。本书共分12章,主要包括数据的机器级表示和处理、程序的转换及机器级表示、程序的和加载执行、存储器层次结构、虚拟存储器、程和异常控制流、I/O操作的实现、程序性能的优化、网络编程以及并发编程等内容。本书内容详尽,概念清楚,通俗易懂,实例丰富,并提供大量典型习题以供读者练习,可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。<br/>【推荐语】<br/>本书从程序员视角出发,基于单处理器计算机系统各抽象层之间的关联关系,以可执行文件的生成和加载、程的正常执行和异常/中断处理、应用程序中I/O操作的底层实现机制、硬件与操作系统之间的协同关系、程序的调试和性能优化、网络编程、多线程并发编程为主要内容,重构建高级语言程序和指令集体系结构、编译器、汇编器、器、操作系统、底层微架构等位于计算机系统各抽象层之间的系统级关联知识体系。本书共12章,主要包括数据的表示和运算、程序的转换及机器级表示、程序的和加载执行、存储器层次结构、虚拟存储器、程控制和异常控制流、I/O操作的实现、程序性能的优化、网络编程和并发编程等内容。<br/>【作者】<br/>作者简介 袁春风 南京大学计算机科学与技术系教授,主要研究领域为大数据计算与并行处理技术、Web信息检索与文本挖掘技术等。在相关领域承担科研项目50多项,先后承担多项产学合作协同育人项目,发表科研论文近100篇,两次获江苏省科技步二等奖,并获江苏省优秀软件一等奖。 先后主持国家级精品课程、国家级精品资源共享课“计算机组成原理”,主持江苏省精品课程“计算机组成与系统结构”;主编普通高等教育国家级规划教材《计算机组成与系统结构》,主编江苏省重建设教材《计算机系统基础》和《计算机组成与设计》;发表教学论文20多篇。先后获2013年江苏省教学成果特等奖,2014年国家教学成果二等奖,2017年江苏省教学成果二等奖。“计算机系统基础(一)”和“计算机系统基础(二)”分别获2017年和2018年国家级精品在线放课程,“计算机组成与系统结构”课程网站获江苏省优秀多媒体课件特等奖,所承担的“计算机系统”课程群被遴选为江苏省优秀课程群。 朱光辉 博士,南京大学计算机科学与技术系助理研究员,江苏省计算机学会优博,江苏省“双创博士”,华为“难题揭榜火花奖”获得者,-华为“智能基座”先锋教师,-华为“智能基座”产教融合协同育人基地优秀课件奖励计划获得者,南京大学“师“师风”先团队核心成员。长期从事“计算机系统基础”“大数据处理综合实验”以及《智能计算系统》等系统类课程的教学工作。研究方向为大数据与智能计算,已在国内外著名会议/期刊发表高水平论文20余篇,主持国家自然科学基金青年项目、江苏省自然科学基金项目、江苏省科技厅重研发计划课题、产学合作协同育人项目以及企业横向合作项目多项,研究成果在国际人工智能自动化AI建模大赛中,9次荣获国际大奖,6次获得前三名,并荣获第五届中国“互联网+”大学生创新创业大赛全国金奖,相关技术已落地应用于华为、奇虎360等IT企业。 余子濠 中国科学院计算技术研究所博士生,2014年本科毕业于南京大学计算机科学与技术系。主要研究方向为数据中心云计算架构与QoS保障、源硬件敏捷发和动态二制翻译等,创新性地提出、设计并实现了“标签化RISC-V”原型系统。参与编写《计算机系统基础》和《计算机组成与设计》教材,独立设计了教学版全系统模拟器NEMU和“计算机系统基础”课程实验PA,并获全国计算机实验教学案例设计竞赛一等奖。<br/>
目录展开

前折页

书名页

出版说明

前言

第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的常用命令

参考文献

后折页

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部