深入理解计算机系统简述
第一章 计算机系统漫游
由GCC编译的C程序“Hello, World” ,通过研究程序的生命周期,介绍计算机系统的主要概念和主题。
第二章 信息的表示和处理
讲述了计算机的算术运算,重点描述了无符号数和数的补码表示的特性。就会发现,用补码表示的两个正数的和或者积可能为负。
补码的算术运算满足很多整数运算的代数特性,编译器可以安全地把一个常量乘法转化为一系列的移位和加法。
IEEEE标准的浮点格式:一是如何用它来表示数值,一是浮点运算的数学属性。
对计算机的算术运算有深刻的理解是写出可靠程序的关键。比如,不能以表达式(x-y<0)来替代(x<y),因为前者可能会产生溢出。且不能用(-y<-x)来代替,因为补码表示中负数和正数的范围是不对称的。算术溢出是造成程序错误和安全漏洞的一个常见根源。
第三章 程序的机器级表示
如何阅读由c编译器生成的x86-64机器代码。分析程序在机器上是如何表示的。
讲述不同控制结构(条件,循环和开关等语句)生成的基本指令模式,还讲述了过程的实现,包括栈的分配、寄存器使用惯例和参数传递。
讨论不同数据结构(如结构、联合和数组)的分配和访问方式。实现整数和浮点数算术运算的指令。对指针有非常全面而具体的理解。
第四章 处理器体系结构
讲述基本的组合时序逻辑元素,并展示这些元素如何在数据通路中组合到一起,来执行x86-64指令集的一个称为“Y86-64”的简化子集。
从设计单时钟周期数据通路开始,引入流水线的思想,将处理一条指令所需要的不同步骤实现为独立的阶段。优势在于可以在每个阶段都可以处理不同的指令。
处理器设计的控制逻辑是用一种称为HCL的简单硬件描述语言来描述的。
第五章 优化程序性能
主要思想通过生成机器代码来学习编写C语言。
以减少程序需要做的工作量为目的,如何根据一个程序的图形化表示中的关键路径来测量一个程序可能的性能
通过简单的操作模型,来解释能够提高程序在现代“超标量”处理器上性能的变换之有效的原理。
第六章 存储器层次结构
存储器系统是一个由不同容量、造价和访问时间的存储设备组成的层次结构。
讲述了随机存取存储器(RAM)和只读存储器(ROM)、磁盘和固态硬盘的几何形状和组织构造。
阐述如何通过改善程序的时间局部性和空间局部性来提高应用程序的性能。
第七章 链接
讲述静态和动态链接。
概念有可重定位的 和可执行的目标文件、符号解析、重定位、静态库、共享目标库、位置无关代码,以及库打桩。
连接器生成的目标文件是与一些像加载、虚拟内存和内存映射这样的概念相关的。
第八章 异常控制流
异常控制流(即除正常分支和过程调用以外的控制流的变化)的一半概念,打破单一程序的模型。
从底层的硬件异常和中断,到并发进程的上下文切换,到由于接收Linux信号引起的控制流突变,到C语言中破坏栈原则的非本地跳转。
进程的基本概念,创建和操纵。如何通过Linux系统调用多个进程。
第九章 虚拟内存
讲述虚拟内存的特性以及如何工作,不同的并发进程各自都有一个完全相同的地址范围,能共享某些页,而又独占另外一些页。
讨论存储分配操作,如标准库的malloc和free操作。虚拟内存空间只是一个字节数组,程序可以把它划分为不同的存储单元。
展现将计算机系统中的硬件和软件结合起来阐述的优点。
第十章 系统级I/O
讲述UnixI/O的基本概念。例如文件和描述符。
如何共享文件,I/O重定向是如何工作的,还有如何访问文件的元数据
开发一个健壮的带缓冲区的I/O包,可以处理一种 short counts的奇特行为,并谈到I/O的局限性
第十一章 网络编程
网络是非常有趣的I/O设备,联系所学的概念,能够编写一个简单的web服务器。
讲述网络程序底层的客户端-服务器模型。
如何使用套接字接口来编写Internet客户端和服务器。
介绍超文本传输协议(HTTP),并开发简单的迭代式Web服务器。
第十二章 并发编程
以Internet服务器设计为例介绍并发编程。
编写并发程序的三种基本机制(进程、I/O多路复用和线程)。
用P、V信号量操作来实现同步、线程安全和可重入、竞争条件以及死锁等的基本原则。
讲述了线程级编程的使用方法,表达应用程序的并行性。
使用所有的核解决同一个计算问题,协调并发线程,既保证正确性,又要争取高性能。
深入理解计算机系统简述相关推荐
- HIT深入理解计算机系统大作业
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 120L021909 班 级 2003006 学 生 邢俊文 指 导 ...
- 2021春深入理解计算机系统大作业---hello的一生
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算学部 学 号 120L021725 班 级 2003006 学 生 杨楠 指 导 ...
- 2021春深入理解计算机系统大作业——程序人生
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算学部 学 号 1190200608 班 级 1903004 学 生 琚晓龙 指 导 ...
- [*****]深入理解计算机系统(修订版)
from:http://outmyth.blogdriver.com/outmyth/1122212.html 深入理解计算机系统(修订版) [原书名] Computer Systems A Prog ...
- 【程序人生-Hello‘s P2P】哈尔滨工业大学深入理解计算机系统大作业
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 xxxx 学 号 2021xxxx 班 级 210xxxx 学 生 xx 指 导 教 师 xxx 计算机科学与技术学院 2023年 ...
- 《深入理解计算机系统》读书随笔-位操作
最近开始读<深入理解计算机系统>这本书.对于书中提到的从程序员的角度解读计算机系统这一说法非常感兴趣,所以决定好好读一读.从开始接触计算机编程就是站在一个高级语言的层次,虽然对编译原理,操 ...
- 【组队学习】【32期】深入理解计算机系统
深入理解计算机系统 航路开辟者:李岳昆.易远哲 领航员:初晓宇 航海士:叶前坤.沈豪 基本信息 开源内容:https://github.com/datawhalechina/team-learning ...
- 深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf
深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf
- 深入理解计算机系统(3)
深入理解计算机系统(3) 本文我们主要讲关于数据的的表示方式:原码,反码和补码. 本文在写作过程中,参考了园中的这篇文章<原码,反码,补码详解>,特此声明. 一原码 计算机中是使用二进制来 ...
最新文章
- mysql字段类型、范围详解
- ssh 别名登录小技巧
- android 图片作为背景图片,Android设置网络图片为手机背景图片的方法
- php+sql创建本地项目详细步骤1——创建数据库数据表,数据库连接
- 你真的弄明白了吗?Java并发之AQS详解
- 如何访问ASP.Net网站bin目录内的文件
- 阅读目录(置顶)(长期科技领域知识)
- Java命令:jstack — 获取线程dump信息
- 【优化求解】基于matlab遗传算法求解多城市多应急物流中心选址问题【含Matlab源码 1724期】
- 华为交换机VTY用户界面属性配置教程
- 几款用于防破解的软件
- mac调节外接显示器亮度
- c语言数据结构与算法参考文献,数据结构论文参考文献
- 2021年茶艺师(中级)新版试题及茶艺师(中级)考试总结
- mysql启动不了的原因_mysql启动不了是什么原因
- MinIO纠错码、分布式MinIO集群搭建及启动
- RAD Studio破解补丁合集(2018.12.25)
- 通达OA 升级到2015精灵菜单异常的处理(图文)
- Conan软件包管理器的Qt 6.2.4软件包
- python几行代码轻松实现多重弹窗趣味整蛊小程序
热门文章
- Adobe XMP SDK编译
- java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计
- C#--使用Process类kill进程
- 解决(‘You must install pydot (`pip install pydot`) and install graphviz (see...) ‘, ‘for plot_model..
- strace命令解析
- 小编程(二):Matlab中num2str实现数字1到字符串0001的变换
- python关于变量的声明
- 解决Serialized class ** must implement java.io.Serializable问题
- 自动化运维之自动化监控
- redis+spring 整合