硬件基础
CPU 的位宽:一次能计算多少字节数据
- 32 位 CPU 一次可以计算 4 个字节;
- 64 位 CPU 一次可以计算 8 个字节;
- 32 位 CPU计算 64 位数字的加减结果,需要分高低位分别进行,64 位可以一次性完成
- 32 位 CPU 最大能操作 4GB 内存,装多了多余
- 由于大部分情况下计算的数额不超过 32 位数字,所以 32 位 CPU 和 64 位 CPU 的差别不大,大于的时候才能体现 线路位宽:数据传输链路在一个时钟周期内,能够并行传输的二进制位数(bit)
- 一般和 CPU 位宽对齐,如果位宽为 1,就是串行传输 软件位数:指令是 64 位还是 32 位的
- 32 位指令在 64 位机器上执行,需要兼容机制
- 64 位指令在 32 位机器上执行很难,因为 32 位寄存器存不下 64 位指令
- 操作系统其实就是一种软件,位数和软件位数等价
计算机存储
CPU 寄存器->CPU Cache(L1->L2->L3)->内存->硬盘 从左到右,速度越来越慢,单价越来越低,可存储容量越来越大,读取优先级越来越低 由于数据读取有时空局限性,那么提高 CPU 缓存命中率就可以降低读取的时间,加快程序运行速度
- 遍历数组时,按照内存布局顺序访问。
- 先排序再遍历比先遍历再排序要快(分支预测)
中断是什么?
中断是一种异步的事件处理机制,操作系统收到了中断请求,会打断其他进程的运行,响应中断请求的响应程序,
- 处理期间关闭中断响应,其他中断可能会因此丢失;
- 中断处理程序,要尽可能快的执行完,降低对其他进程、中断的影响。
- 硬中断:直接处理硬件请求,一般会处理时暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。
- 主要是负责耗时短的工作,特点是快速执行,硬中断(上半部)是会打断 CPU 正在执行的任务
- 软中断:由内核触发,用来延迟处理上半部未完成的工作,一般以「内核线程」的方式运行。
- 通常都是耗时比较长的事情,特点是延迟执行;每个CPU一个软中断内核线程
- 一般软中断包括了 10 个类型,分别对应不同的工作类型,比如
NET_RX表示网络接收中断,NET_TX表示网络发送中断、TIMER表示定时中断、RCU表示 RCU 锁中断、SCHED表示内核调度中断。 - 每个 CPU 核心都对应着一个内核线程。
为什么负数要用补码表示?
- 如果用原码
- -1:1000,0001
- 2:0000,0010
- -1+2:1000,0011 = -3
- 结果不符合预期,需要特殊处理负数
- 如果用补码
- -1:1111,1111
- 2:0000,0010
- -1+2:0000,0001 = 1
- 符合预期
十进制与二进制的转换
- 整数部分:「除 2 取余法」。
- 小数部分:「乘 2 取整法」。
- 得到的整数部分作为当前的二进制的一位(二进制从小数点后一位开始)
- 所以可能出现无限循环,而计算机资源有限,只能近似,因此有精度缺失,因此小数相加不可预期(0.1+0.2不等于0.3)
- 计算机存储方式:符号位|指数位|尾数
