备注:本文是《程序是怎样跑起来的》--矢泽久雄 读书笔记
章节 | 摘要 | 备注 | 总结 |
对程序员来说 CPU 是什么 | CPU 内部由寄存器,控制器,运算器和时钟四个部分组成 | 有些 CPU时钟部分在外部 程序启动后,控制器从内存读取指令和数据 | 程序存储在内存中,CPU来执行 |
对程序员来说 CPU 是什么 | CPU是寄存器的集合体 | 程序是把CPU作为寄存器来描述的 | 机器语言要靠操作寄存器实现功能 |
对程序员来说 CPU 是什么 | 机器语言指令的主要类型和功能 | 数据转送指令 运算指令 跳转指令 call/return指令 | 无论多复杂的程序,最终都要靠 这几类简单的指令来实现效果 |
数据是用二进制表示的 | 所有位都是1的二进制数,十进制就是 -1 | 知识点 | |
数据是用二进制表示的 | 字节是基本单位,位是最小单位 | 八位一个字节 | |
数据是用二进制表示的 | 将二进制数的值取反后加1的结果,和原来的值相加等于0 | 1 = 0000 0001 -1 = 1111 1111 二者相加为0 | 补数 = 取反加1 |
计算机进行小数运算时出错的原因 | 二进制0.1表示十进制的0.5 | 小数点后一位的位权是 2-1 = 0.5 | |
计算机进行小数运算时出错的原因 | 浮点数是用符号,尾数,基数,指数四部分表示小数的 | double 双精度, float 单精度 | |
熟练使用有棱有角的内存 | 内存的物理机制很简单:电源,地址信号,数据信号,控制信号 | ||
熟练使用有棱有角的内存 | 数据类型表示存储的是何种类型的数据 | 存内存角度:数据类型就是占用的内存大小 | 相同的内存数据 eg 00110011 具体表示的数据不一定相同 |
熟练使用有棱有角的内存 | 数组是使用内存的基本 | 因为数组和内存的物理结构是一样的 | 栈,队列均是通过数组实现 |
熟练使用有棱有角的内存 | 链表可以方便追加和删除元素 | ||
熟练使用有棱有角的内存 | 二叉查找树是由链表构造发展而来的 | 一个节点有两个指向即可 | |
内存和磁盘的亲密关系 | 内存:利用电流实现存储 磁盘:利用磁效应实现存储 | 内存高速高价,磁盘低速廉价 | 磁盘分为两类, 一类是硬盘,一类是软盘。 |
内存和磁盘的亲密关系 | 磁盘缓存时指把磁盘中读取的数据存储到内存空间中的方式 | 实际上占用的是内存空间 | |
内存和磁盘的亲密关系 | 虚拟内存是把此磁盘的一部分当做内存使用 | 实际上是磁盘 | |
内存和磁盘的亲密关系 | DLL(Dynamic Link Library)文件实现函数共有 | 可以提高内存效率 | |
内存和磁盘的亲密关系 | Windows一个扇区是512字节,簇是扇区的整数倍 | 不同的文件不能存储在同一簇中 文件不管多小,都会占用一簇的空间 | |
亲自尝试压缩数据 | ELE(Run Length Encoding) 数据*重复次数 的压缩方法 | 缺点是不适于重复度小的数据类型,例如文本 | |
亲自尝试压缩数据 | 哈弗曼算法能够大幅提升压缩比率 | ||
程序是在何种环境中运行的 | 运行环境 = 操作系统 + 硬件 | ||
程序是在何种环境中运行的 | 机器语言的程序成为本地代码 | ||
程序是在何种环境中运行的 | Windows克服了除 CPU 之外的硬件差异 | 1 Windows 可以统一管理输入,输出,内从等 2 Windows 是有对应特定 CPU 要求的 | |
程序是在何种环境中运行的 | 应用程序向操作系统传递指令的途径成为API | ||
从源文件到可执行文件 | 把源代码转换为本地代码的程序称作编译器 | ||
从源文件到可执行文件 | 编译器不仅和编程语言有关,和 CPU 的类型也是相关的 | ||
操作系统和应用的关系 | 具有加载和运行功能的监控程序是操作系统的原型 | ||
操作系统和应用的关系 | 最初的操作系统 = 监控程序 + 基本的输入输出程序 | ||
操作系统和应用的关系 | 开发时类似 printf() 这些函数的运行结果,都不是 面向硬件而是面向操作系统的. | 应用程序通过 OS 间接地控制硬件 | |
操作系统和应用的关系 | 文件是操作系统对磁盘媒介的抽象化 | ||
操作系统和应用的关系 | Windows 通过时钟分割技术来实现多任务 | ||
通过汇编语言了解程序的实际构成 | 汇编的语法结构是 操作码 + 操作数 | ||
通过汇编语言了解程序的实际构成 | 在汇编语言中,函数名表示的是函数所在的内存地址 | ||
通过汇编语言了解程序的实际构成 | 函数的参数是通过栈来传递,返回值是通过寄存器来返回的 | 局部变量也会利用空闲的寄存器 | |
硬件控制方法 | 以端口为桥梁来实现 CPU 和外围设备之间的数据传递 | ||
硬件控制方法 | DMA(Direct Memory Access),是指在不通过CPU的情况下 外围设备直接和主内存进行数据传送 | ||
硬件控制方法 | I/O端口号 IRQ DMA 通道可以说是识别外围设备的3组合 | ||
让计算机"思考" |