计算机读取数据流程先磁盘读取数据到内存,再从内存读取数据到cpu
cpu单次运算0.2-0.3 纳秒 寄存器0.2-0.3
l1:0.6-1ns l2 1-2ns l3:4-6ns
内存:20-30ns
磁盘:4-6ms:
cpu从磁盘读取到运行;5ms;
电流:Cu:16万千米每秒;
Au 20万千米每秒。 在cpu里面一般是铜丝和金丝混合 整个线路是铜
按金来算:电流每走 1m/s cpu/25次
电流的传播速度在cpu内成为了性能的限制,是性能瓶颈的一部分
信号的衰减:电流比特要在传输完一个之后才能进行第二个的传输,也就是电压信号才能变化,根据距离传播的时间不一样。
所以电压信号变化不能太快,要和它相同,因此导线不能太长 太长的话变化频率越慢,越短,变化频率就可以越快。
因此如果传播距离太长的话,必须要把线进行分割很多部分。
从最左边到最右边就像黑到海南一样 直接发送的话 频率变化会很长,但是进行线路切分有一堆中转站的情况下,两个之间频率会变快总延时会长一点,但是比特发送频率会增高,信道利用率也会增加。
电信号一根导线只能同时收发一个信号那么有没有可以打破这个限制的?
光信号、光纤传输: 同一时刻可以发送接收多个信息,波的频率不同,互相之间不会影响,以光速传播 (传播的时候可以不是二进制,但是计算机接受还是二进制)。
光纤传播抗干扰强而且安全性高 如果光信号进行截取,那么会破坏波形,无法接受会立刻被接收方和发送方感知到。
万兆以上的都是光纤。因此跨国际的是光纤传输很快。
只要含有存储空间可以进行存储数据的就必定有它的驱动 协议,也就必定可以被黑客更改进行攻击。
与电脑相连的硬件只要遵守协议调用驱动就可以支持他在电脑上的运行。
电脑为啥会有内存 因为只从磁盘读取数据 传输数据 再写回去数据都太慢了 加了一个内存后可以吧好多常用数据先放在内存里这样调用传输都会加快速度。
高速缓存:距离cpu更近,传输速度更快,减少和内存的交互速率来提高效率,减少cpu交互次数。在没有缓存的时候cpu和寄存器存储的数据量是很少的以kB 甚至B为单位,加上之后存储量会增大很多。运算就更快了。
现在的高速缓存一般有三级,那些资源在一定时间内被访问的次数(有对应的算法)越多级数越靠前距离cpu更近,
多核cpu:在单核cpu进行工作的时候,比如说读取数据他会占据总线来交互数据,别的内核就无法进行数据交互,那如何实现多核cpu,需要借助高速缓存,一个内核在读取的时候,别的内核可以操作已经读取到的存储在高速缓存的数据(不需要进行占据总线)。
在并发情况下如果多个任务同时处理一个资源(变量)会产生覆盖问题,因此需要加锁(信号量机制、悲观锁)信号量机制适用于并发较少的时候 ,悲观锁适用于并发很多的时候。信号量机制可以同时读取,悲观锁一个一个排队读取并修改。
操作系统给内存还有磁盘划分了4kB一个存储单元,可以手动调整磁盘每一块存储单元大小。
每一块存储空间都只有一个地址,因此一个存储单元里面只能存放一个数据多放的话会无法读取后面放下的。
最开始的时候一个字节一个地址,传输一个4396KB的数据的时候要传输4396次 传输速度很慢,划分4KB(带宽高)的时候传输次数会减小,效率增高。
牺牲空间来提升时间。
假如一个文件大小超过最小存储单元4KB那么它在内存、磁盘内是占用足够的空间 以随机存储方式来存储。
如果采用连续存储,零散的空间多,但是连续的不够,就不能存储,浪费 所以要进行随机存储。
在磁盘内,是进行随机存储的不会发生内存泄漏,但在内存里面如果定义一个数组的话必须要求进行连续存储,这时候会出现明明剩下的空间足够大 但却存不下数组,是因为数组要连续存储空间,剩下的都是零散的存储空间不能使用,这种方法就是内存泄漏。