第一章  全书概述
一  基础
1、程序的生命周期分为四个阶段:
Hello.c (源程序)
预处理器(cpp)Hello.i
编译器(ccl)hello.s
汇编器(as)hello.o(这时是个二进制文件)
链接器(id)(将函数并入到程序)
Hello (最后变成可执行的目标程序)
2、了解编译过程什么用:
优化程序性能、理解链接时出现的错误、避免安全漏洞
二  系统的硬件组成
总线:贯穿整个系统的一组电子管道
I/O设备:系统与外界联系的通道(如鼠标键盘;显示器;磁盘)。I/O设备通过控制器和适配器与I/O总线连接。控制器和适配器的区别在于其组成方式,控制器是主印制电路板(主板)上的芯片组,适配器是一块插在主板插槽上的卡。它俩的功能都是在I/O设备和I/O总线之间传递信息
主存:一个临时存储设备,处理器执行程序时,它被用来存放程序和程序处理的数据。
物理上,它由一组DRAM(动态随机存取存储器)芯片组成。
逻辑上,它由一个线性的字节数组组成,每个字节都有自己唯一的地址(数组索引)
处理器:(CPU)是解释(或执行)主存中指令的引擎。核心是个叫做程序计数器(PC)的存储设备(或寄存器)。一通电就从程序计数器指向的存储器处读取指令、解释指令中的位,执行指令指示的简单操作,然后更新程序计数器指向下一条指令。
三  高速缓存
寄存器是L1的高速缓存;L1是L2的高速缓存;L2是主存的高速缓存;主存是磁盘的高速缓存。
四  操作系统
它有两个基本功能:防止硬件被失控的应用程序滥用;为应用程序提供简单一致的方法控制低级硬件
五  进程
操作系统实现进程交错执行的机制称为上下文切换(context switing);上下文切换就是——保存当前进程的上下文(context),恢复新进程的上下文。
进程所看到的虚拟地址空间由多个区(area)组成:由低到高是:程序代码和数据;堆;共享库;栈;内核虚拟存储器。
第二章 信息的表示和处理
一  信息存储
存储器的每一个字节都由一个唯一的数字来标识,成为地址(address);所有可能地址的集合就称为虚拟地址空间(virtual address space)。
C语言的指针有两个方面:它的值和它的类型,它的值表示的是某个对象的位置,而它的类型表示那个位置上所存储对象的类型(比如,整数或浮点数)
二  进制转换
对于2n,其十六进制转换公式为i+4j
例如211,十进制位2048,十六进制转换时,因为1(i=0),2(i=1),4(i=2),8(i=3)且11=3+4*2,所以它就是8的后面跟两个0,即0x800  (详见书上48页)
三  寻址和字节顺序
在几乎所有的机器上,字节对象都被存储为连续的字节序列,对象的地址为所使用字节序列中最小的地址。
表示一个对象的字节序列排序,有俩通用规则,
最低有效数字在最前面——小端法(little endian);
最高有效数字在最前面——大端法(big endian)
这是芯片加电启动时所用到的字节顺序规则。
程序编译过程:
假如,写一个C程序,有两个文件p1.c和p2.c,然后用Unix命令编译这行代码。这个命令实际上调用了一系列程序,将源代码转化成可执行代码。
首先,C预处理器会扩展源代码,插入所有用#include命令指定的文件,并扩展所有的宏。其次,编译器产生两个源文件的汇编代码,名字分别为p1.s和p2.s。接下来,汇编器会将汇编代码转化成二进制目标代码文件p1.o和p2.o。最后,链接器将两个目标文件与实现标准Unix库函数(例如printf)的代码合并,并产生最终可执行文件。
汇编程序员能看到的处理器状态:
程序计数器(称为%eip):表示将要执行的下一条指令在存储器中的地址。
整数寄存器:存储地址(对应C的指针)、整数数据,纪录程序状态,保存临时数据。
条形码寄存器:保存最近执行的算术指令状态信息。
浮点寄存器:存放浮点数据。
附相关概念扩展:
GNU计划所使用的汇编器,一般称为gas,或依其可执行文件名称简称为as。它是GCC的默认后端。它用于汇编GNU操作系统、Linux内核以及其他各种软件。
(GNU是“GNU is Not Unix”的递归缩写,GNU将要实现UNIX系统的接口标准)
GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的程序库和工具。
GAS中的每个操作都有一个字符后缀,表明操作数的大小。如mov(传送数据)指令有三种形式:movb(传送字节)、movw(传送字)和movl(传送双字)

本书是本经典的国外大学计算机专业教材,类似国内的计算机原理这门课,很厚,很详尽,刚开始看的时候自己毫无基础,看不懂,就没看完,如今工作多年再回过头来翻翻,反而觉得读起来津津有味。实践与理论的反复结合,能使自己的技术越来越扎实。

认真学习系列:《深入理解计算机系统》读书笔记相关推荐

  1. 认真学习系列:操作系统——视频+读书笔记

    此笔记分为两部分, 上部分是B站操作系统考研课程的知识点总结,包括:概述.进程与线程.处理机调度算法.进程同步.内存管理.文件管理.IO管理,共7部分. 下部分是阅读<现代操作系统>这本书 ...

  2. 深入理解计算机系统读书笔记(第二章 信息的表示和处理)

    这里写自定义目录标题 第二章 信息的表示和处理 2.1 信息存储 2.1.1 十六进制表示法 2.1.2 字数据大小 2.1.3 寻址和字节顺序 2.1.4 表示字符串 2.1.5 代码表示 2.1. ...

  3. 深入理解计算机系统读书笔记

    由于这本书的前半部分习题大多是相关计算和简单汇编代码编写,所以当时都是在稿纸上练习的,不过现在那些稿纸似乎也不见了: ( 所以现在仅有后半部分的课后习题代码以及示例练习代码(家里作业习题当时并没有做, ...

  4. 深入理解计算机系统----读书笔记

    第二部分    信息的表示和处理 信息存储: 二进制(0101001), 八进制,十六进制(0x32FD) 字(word size)指明整数和指针数据的标称大小(normal size),对于w位的机 ...

  5. 深入理解计算机系统 第三章笔记,《深入理解计算机系统》笔记.PDF

    <深入理解计算机系统>笔记 <深入理解计算机系统>笔记 目錄 介紹 0 第1章计算机漫游 1 1.1信息就是位+上下文 1.1 1.2程序被其他程序翻译成不同的格式 1.2 1 ...

  6. 《高效学习7堂课》读书笔记PPT模板

    模板介绍 <高效学习7堂课>读书笔记PPT模板.一套读书笔记幻灯片模板,内含红色多种配色,风格设计,动态播放效果,精美实用. 希望下面这份精美的PPT模板能给你带来帮助,温馨提示:本资源使 ...

  7. 《联邦学习实战》杨强 读书笔记十七——联邦学习加速方法

    目录 同步参数更新的加速方法 增加通信间隔 减少传输内容 非对称的推送和获取 计算和传输重叠 异步参数更新的加速方法 基于模型集成的加速方法 One-Shot联邦学习 基于有监督的集成学习方法 基于半 ...

  8. 《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

    当数据具有资产属性之后,数据便可以直接或者间接地为公司.为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易. 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战 ...

  9. 《联邦学习实战》杨强 读书笔记十一——联邦学习在智能物联网中的应用案例

    目录 案例的背景与动机 历史数据分析 出行时间预测模型 问题定义 构造训练数据集 模型结构 联邦学习在智慧城市建设中的一个应用,即用户的出行预测,帮助用户更好地规划出行安排. 人工智能物联网(以下简称 ...

  10. c语言语句的机器级表示实训,深入理解计算机系统(笔记):程序的机器级表示...

    分析高级语言编译后生成的汇编语言. 1. 程序编码 运行如下命令得到C语言的汇编代码: unix> gcc -O1 -S code.c gcc -c选项编译源文件生产目标文件code.o: un ...

最新文章

  1. JDBC编程专题4之JDBC驱动程序类型
  2. 设计模式学习笔记十五——Command模式
  3. arcgis创建剖面线execl文件
  4. 挖掘经典:几乎被人遗忘的HTML七种用法 (转)
  5. Python输出LOGO图标
  6. 当程序员那么痛苦,我来告诉你他们为什么还没放弃?
  7. Java中的包扫描(工具)
  8. 小程序-涂鸦画笔(案例-集福)
  9. mysql between 边界
  10. Xcode5帮助文档!
  11. 计算机内存的存储单位换算,电脑内存换算(电脑内存单位及换算)
  12. vnc远程控制软件配置,vnc远程控制软件怎么配置,教程详解
  13. md5验证文件完整性
  14. 计算机网络实验报告双机互联,双机互联实验报告.docx
  15. 经典软文是如何写作和推广的
  16. 获取ftp服务器文件,ftp获取服务器文件
  17. 逻辑推理与判断(委派任务)
  18. 静态网页制作(html+css)、css浮动,练习(网页布局),清除浮动
  19. 焱融科技加入多家行业协会与产业联盟,加速产业互联生态跃迁
  20. 单片机第三讲 ——中断及定时器基本知识

热门文章

  1. Go 语言初级教程之一[变量声明]
  2. 共享的网络如何让自己比别人快_OPPO K3如何共享网络?
  3. vue 判断两对象是否一致_vue - 比较两个Json对象是否相等
  4. python sqlite3 executemany_python – SQLite executemany的问题
  5. html标签非成对,深入document.write()与HTML4.01的非成对标签的详解
  6. dorehtml.php,帝国cms后台实现刷新多栏目内容页的方法详解
  7. springboot做网站_Github点赞接近10万的SpringBoot学习教程+实战推荐!牛批!
  8. Linux查看服务器总内存和总硬盘大小
  9. RAC11g使用数据泵导入导出报ORA-6512,ORA-25306,ORA-39079错
  10. 使用 Dawn 构建 React 项目