《程序是怎样跑起来的》笔记

备注:本文是《程序是怎样跑起来的》--矢泽久雄 读书笔记

章节 摘要 备注 总结
对程序员来说 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组合
让计算机"思考"

猜你喜欢

转载自blog.csdn.net/hepann44/article/details/79227852